mirror of
https://github.com/semver/semver.git
synced 2026-07-11 05:12:48 -05:00
[GH-ISSUE #317] Make dropping support for previously supported environments a breaking change #4472
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @markelog on GitHub (Jun 22, 2016).
Original GitHub issue: https://github.com/semver/semver/issues/317
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?
@JacksonBailey commented on GitHub (Jul 11, 2016):
@markelog can you explain a little more what you mean by "previously supported environment"?
@sikthehedgehog commented on GitHub (Jul 15, 2016):
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)
@markelog commented on GitHub (Jul 15, 2016):
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
@lamawithonel commented on GitHub (Apr 18, 2018):
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.
@jwdonahue commented on GitHub (Oct 9, 2018):
@markelog
I've tried to consolidate all of the "API should be changed X" and similar issues into #468. Please contribute to this discussion on that thread and close this one at your earliest possible convenience.
Thank you.