-
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
release major version on incompatible changes #4034
Comments
I've remembered why we cannot do it. It would break all existing clients, because external extensions are published against I don't think we are going to change external extensions, if we pin then we have to go over and publish all of them on each release. Right now they are published once and forward compatible with the patch version.
As I mentioned already, a proper way is to use the lock file: https://yarnpkg.com/blog/2016/11/24/lockfiles-for-all/ |
Thanks. I will investigate more on our end as we do commit the lock file. Would using version numbers differently help? You did have breaking changes that were just declared as new patch-level versions, e.g. changes in the EditorManager behavior when adding Preview between 0.3.16 and 0.3.17 that broke our code, as well as changes I read about to the Debug interfaces. Do you think using major version updates for those kind of changes could help? |
@phaumer sorry to hear that, we are trying to avoid breaking APIs and behaviour
It would require us to update external extensions as well. I think we should do it but after we have the official release 1.0.0, before it we don't really have commitments and new APIs are subject to change, like the editor preview or debugging. You can join the dev meeting to discuss the issue there. Maybe we can go somehow differently about it. |
@phaumer We've discussed it at the last dev meeting. Since Theia is already used in production by different products and we are approaching 1.0.0 release, we've decided that we should update the major version for breaking changes as you suggested. For now, while we are still in the initial development (0.x.y), we would consider the minor version as major and the patch version as minor. It's aligned with semver. Before we start doing it, we should align latest releases of our external extensions. Right now they are always published against
It is bogus, since We need to make sure that when we publish Obviously, we should not break much anymore. If we do, it should be controllable, go through deprecation and we should release new major on removal of deprecated APIs. There can be exceptions, when we know for sure that APIs not used anywhere. @svenefftinge @marcdumais-work makes sense? Someone should take care of fixing and automating builds for external extensions. |
@marcdumais-work is it related to #2980? |
We're using pinned versions now, closing. |
Building against a specific older version of Theia (such as 3.17) can cause issues when just using a package.json to select Theia components from npm, because the components themselves define dependencies amongst each other using "^0.3.17" instead of "0.3.17". So even if we specify to use 3.17 the Theia components themselves will pick the newer version 3.18 and the build can break. Symptoms are errors showing incompatible version of Theia classes such as URI being used etc.
To avoid such breakages Theia packages should reference each other with exact versions.
A workaround would be to add a long list of "resolutions" to the top-level package.json, but that would mean double maintenance of list of extensions available.
The text was updated successfully, but these errors were encountered: