theia-blueprint
theia-blueprint copied to clipboard
builtin: revisit default builtins
Feature Description:
We should revisit the current default builtins present in the application.
Ideally, we should include a minimum set of builtins (likely only those provided by vscode by default) since we already allow end-users to install their favorite extensions at runtime.
I believe the following can potentially be removed, making the app smaller, and more tailored to end-users:
https://github.com/eclipse-theia/theia-blueprint/blob/ee65fc9f4187ea1776528ab8b5e66029aabb3969/electron-app/package.json#L116-L120
cc @marcdumais-work
Given the embedded domain use case, might it make sense to add in some C++ builtins?
Given the embedded domain use case, might it make sense to add in some C++ builtins?
@brianking I believe the idea should be to provide a streamlined application and not bloat it with default extensions that end-users might or might not need. In the end, end-users are free to install runtime plugins (through the extensions-view for additional plugins they require.
C/C++ debugging is an exception ATM, if we want to use @theia/cpp-debug
. Since it's a Theia extension, it needs be present at built-time. We could decide to migrate to the equivalent CDT vscode extension: cdt-gdb-vscode. We already re-use their Debug Adapter in the @theia extension.
IMHO Blueprint is about showcasing the power of the Theia platform with user-visible features. This will not lead to a small app size obviously, but does not matter for this purpose in my opinion. Adding C++ editing might be worth a consideration though to show even more capabilities.
@koegel I forgot to mention that there's a hidden trade-off involved: the extensions we bundle are not updatable (or un-installable). That's a pretty big limitation, not present when installed through the extensions view. (partly due to the fact that some of our packagings are static, e.g. AppImage
)
Also, we might be depriving users from the experience of searching for the extension, reading its README, finding what operating-system-level dependencies are expected to be in place (all done from within the Theia-based app).
OS dependencies are a fragile aspect of bundling extensions, I think - e.g. one needs an acceptable version of a JDK
installed for the java extension to work, clangd
installed for vscode-clangd
C/C++ to work, etc. So in practice, even bundling extensions for many languages, the experience may not typically be "key in hand", for any given one of them, depending on what happens to be installed on that computer.
Also providing all these OS-level dependencies, in addition to the extensions, for many languages, is why something like the theia-full image is so big.
@marcdumais-work Good points! I have not tried: What happens if no acceptable JDK or clangd is present? Is there any kind of user guidance?
I am not sure - probably like you I have these on my machine, so everything works from my PoV. That's a blind-spot we tend to have. Maybe @brianking, not being a developer day-in-day-out, has a more vanilla computer, where this could be tested.
The specifics are left to each language extension. In some cases it just doesn't work, and the user might not know why. We had this happen recently with an Erlang
extension, that required a more recent tool chain vs what's available in Ubuntu repos. The LS would not start, but we did not know why.
I had an idea: use one of our Docker images, that's without installed JDK, to test:
$ docker run --init --rm -it -p 3000:3000 theiaide/theia:latest
I then installed the Java extension from within the IDE,
and triggered it by opening a .java
file. Result:
Links: "Java configuration runtime": https://github.com/redhat-developer/vscode-java/wiki/JDK-Requirements#java.configuration.runtimes "Get the Java Develop...": https://developers.redhat.com/products/openjdk/download?sc_cid=701f2000000RWTnAAO
For C/C++ I installed the clangd
extension. It comes close to solving the issue of missing clangd
but failed, at least in the docker container i was using:
I am not sure - probably like you I have these on my machine, so everything works from my PoV. That's a blind-spot we tend to have. Maybe @brianking, not being a developer day-in-day-out, has a more vanilla computer, where this could be tested.
I have Java and many other dev tools installed I am afraid. I still have grand illusions of being a developer.
@brianking do you have clangd
installed? You use a Mac, correct?
@brianking do you have
clangd
installed? You use a Mac, correct?
I don't seem to right now.
I am curious if the vscode-clangd
extension would be able to install a functional clangd
for you.
You can follow the steps as per the images/movie above, if you want to give it a try.