-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
plugin: removed resolveSystemPlugins
application prop
#10353
Conversation
const { resolveSystemPlugins = true } = BackendApplicationConfigProvider.get(); | ||
if (resolveSystemPlugins || entry.type !== PluginType.System) { | ||
const { resolveSystemPlugins = false } = BackendApplicationConfigProvider.get(); | ||
if (entry.type !== PluginType.System || resolveSystemPlugins) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tsmaeder @RomanNikitenko as part of v1.19.0
I had made the default for the backend application prop true
as not to potentially break any behavior you might rely on in che
, but the better behavior is to set it to false
(where system (builtins) are resolved at build time rather than runtime) as it causes other issues. I wanted to know if you had any feedback on the change, and if you were relying on the previous behavior.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tsmaeder any opinion on not resolving builtin extension-packs and extension-deps at runtime anymore? Alternatively if we agree it should not happen I can remove the flag resolveSystemPlugins
altogether.
2282fb6
to
2f92a16
Compare
@vince-fugnitto by "compile time", you mean the "download plugins" step of the build? |
@tsmaeder that's correct, builtin plugins (system) would now be handled at the |
@vince-fugnitto I'm trying to understand the implications of this:
I assume you want to switch the default for performance reasons, right? Do we know what the performance impact actually is? I'm just wondering why we're not just switching the flag in our example applications? |
The system or built-in plugins are the plugins which are present under the application's
At the moment, those plugins' dependencies are resolved at startup based on the logic in the deployer yes, but this update will reverse the logic (or completely remove it).
The reason is two-fold, it is both for performance reasons and in order to properly respect the
We did update the flag in the examples: theia/examples/browser/package.json Lines 15 to 19 in e8b739e
theia/examples/electron/package.json Lines 15 to 19 in e8b739e
The idea to update the flag would be to have a better default for downstream to not have the two issues I listed above. |
I think we download dependencies at "built time", yes? The problem is that we re-resolve them at startup? |
@marcdumais-work correct, the packs for instance are downloaded and resolved at build time, but then re-resolved (not respecting the exclude list) at runtime if anything is not previously resolved. |
@tsmaeder in short we are proposing to make "system plugins" static, as we understood that this category of plugins represents builtin-like plugins. The goal is then to prevent Theia applications from doing anything smart to those builtins (just like VS Code doesn't update their builtins unless you upgrade the whole editor). |
I'm fine with this change: if consumers have trouble with it, they can put the configuration back or rethink their design. The only question that remains for me is why |
@tsmaeder I believe we definitely thought of it but did not want to add the breaking changes yet as we would likely need to create an application prop for it (and the plugin list) so it would be accessible to a package like |
faa5d83
to
a2811c1
Compare
resolveSystemPlugins
default to false
resolveSystemPlugins
application prop
@marcdumais-work based on some offline discussions I now removed the application prop altogether, as it should give us the best behavior when consuming system/builtin packs. In the future we can think about further improving the functionality so we are also able to respect the exclude list of plugin ids at buildtime (today) and runtime. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks Vince!
The commit updates the `resolveSystemPlugins` backend application prop to `false` since it has the better behavior. The flag was initially set to `true` not to have breaking behavior changes as part of `v1.19.0`. The prop is used to not resolve system extension-packs and dependencies at runtime, and instead resolve them at buildtime. Signed-off-by: vince-fugnitto <[email protected]>
The `resolveSystemPlugins` application prop is removed in order to have a better experience when resolving builtin extension-packs and extension-dependencies. The builtins should now be resolved at build-time and should respect the exclusion list. Signed-off-by: vince-fugnitto <[email protected]>
a2811c1
to
6360895
Compare
What it does
The commit updates the
resolveSystemPlugins
backend application prop tofalse
since it has the better behavior. The flag was initially set totrue
not to have breaking behavior changes as part ofv1.19.0
.The prop is used to not resolve system extension-packs and dependencies at runtime, and instead resolve them at build time.
How to test
plugins
folder (so no builtins are present)eclipse-theia.builtin-extension-pack
through the extensions-view - confirm that the individual plugins are resolved and installedReview checklist
Reminder for reviewers
Signed-off-by: vince-fugnitto [email protected]