-
Notifications
You must be signed in to change notification settings - Fork 835
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
docs: documentation on versioning #2863
Conversation
b65d87e
to
f171700
Compare
Codecov Report
@@ Coverage Diff @@
## main #2863 +/- ##
==========================================
+ Coverage 93.19% 93.52% +0.32%
==========================================
Files 157 163 +6
Lines 5117 5572 +455
Branches 1097 1180 +83
==========================================
+ Hits 4769 5211 +442
- Misses 348 361 +13
|
My comments are clearly in conflict with what the spec intends the stability guarantees to be. However, my arguments are coming from the point of view of how node ecosystem works and operates. We should still look for a solid way to avoid such problems for our users even if The Spec doesn't specify how we should do that. |
|
||
#### API versioning | ||
|
||
**Changing** abstract interfaces in the API should be considered a breaking change, a semver major bump for the API, because it will break well-meaning SDK implementors. |
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.
This is specifically contrary to the versioning document in the spec which states that the semver guarantees do not apply to SDK implementors. SDK implementors should consider minor semver updates to the API to be breaking. The semver version of the API should only make a major change if it affects API callers not implementers.
I think one of the important topics is to avoid duplication of modules. NPM dedup seems to behave different between major versions. I'm not 100% sure but I think the dedup differs also between modules mentioned in dependencies and the automatic installed peer dependencies. I think the main problem we have regarding version ranges are that serveral modules implement an interface from another module. For them a semver minor update can be breaking. e.g.
Besides the pure JS compatibility there is also the typescript compatibility. see e.g. #2845 The type system tells here that classes - even with the same name and shape - do not match if they come from different .d.ts files. So if dedup is not working for whatever reason users may end up in such problems even the JS code would work fine. The solution for this would be to never use a |
This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days. |
This PR was closed because it has been stale for 14 days with no activity. |
Which problem is this PR solving?
This actually an issue in a PR form to
Short description of the changes
Currently just a description for what happened and why + couple of my personal takes for solutions for feedback and critisism.
Read the file stylized for more confortable reading here.