-
Notifications
You must be signed in to change notification settings - Fork 713
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
Make dropping support for previously supported environments a breaking change #317
Comments
@markelog can you explain a little more what you mean by "previously supported environment"? |
I suppose that would include situations like dropping support for an old operating system? (which effectively makes the software stop working even if the API functionality would otherwise remain compatible) |
Yes, that's exactly what i mean. Example from the environment close to my dev stack would be dropping support for older node.js versions - newer ones allow ES6 syntax which is not supported by the older versions so using newer language constructions without changing the API will break project on such environments. I suppose this rule already exist de facto and adhere to the spirit of this spec, but it would be nice if it would be explicitly mentioned so there wouldn't be any doubt about that |
I agree that this should be an explicit part of the specification. The way I see it, breakage isn't restricted to the API, but happens in the contract with the user or consumer, be that a developer, an end-user, or a piece of software. Essentially, given a runtime environment AND a set of inputs (the classic API), the software should return the same set of outputs and behaviors. If the return set grows, that is a feature addition (MINOR change); if the set shrinks or ceases to work altogether, e.g., throwing an error instead of completing, that is a breakage (MAJOR change). Here's a common example:
And an OS example:
This all rests on a declaring a supported environment. This similar if not equivalent to the concept of a public API outlined in SemVer 2.0.0. Based on that, I'd say this is currently covered in the spirit of the specification. The problem I see is disagreement over the letter of the specification. Whether the official SemVer decides to encompass the environment or not, I would like to see it written out explicitly. Addressing issue #331 might help here. |
It seems if project dropping support for previously supported environment it should be a breaking change.
Since this wording -
Implies that API needs to be changed, not internal "workarounds" for such environment, can we make it more clear?
The text was updated successfully, but these errors were encountered: