Skip to content
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

Add "package or API" in MAJOR version description #546

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Add "package or API" in MAJOR version description #546

wants to merge 1 commit into from

Conversation

koresar
Copy link

@koresar koresar commented Jan 17, 2020

As discussed in #444 with @jwdonahue, I'm supplying a PR which clearly states that even if API does not change but a software update breaks something then it should be a MAJOR release.

Closes #444

Previous attempt: #452

@koresar
Copy link
Author

koresar commented Jan 17, 2020

Should this change be released as SemVer 2.0.1 though?

@jwdonahue
Copy link
Contributor

Versioning of the spec itself has been a sore point for many of us. There have been many patch level updates to the spec and FAQ that have not resulted in any version bumps. It's kind of sad actually. Bugs have been filed for this in the past.

@koresar
Copy link
Author

koresar commented Jan 17, 2020

How about the change? Does it require other people opinions?

@jwdonahue
Copy link
Contributor

@koresar, see the CONTRIBUTING.md document. I am not a "maintainer" in any official sense, so I can't commit anything. I just like to keep my head in this space, so that the next time I have a block of time to work on something, I can roll my VersionMeta and VersionSchema rocks along.

@glensc
Copy link

glensc commented Apr 23, 2020

should such change to the specification itself be a major version, i.e semver 3.0.0? :)

@jwdonahue
Copy link
Contributor

No, I think it's minor change.

@@ -6,7 +6,7 @@ Summary

Given a version number MAJOR.MINOR.PATCH, increment the:

1. MAJOR version when you make incompatible API changes,
1. MAJOR version when you make incompatible package or API changes,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's unclear in the context of this document what a "package change" is. What an API is isn't explained either but we should rather better define "API" than add more ambiguous terms.

Especially in the context of #444, I don't think we need to make any change. The API could include the necessary environment. In the end you have to document how to use it. This could mean "node@^10" which would make any change to the supported node version a SemVer MAJOR. Or it could mean "node versions currently marked as LTS" which means some node versions will be unsupported at some point.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would not agree that change is not needed. I strongly believe that SemVer needs this (or similar) clarification drastically.

People read SemVer spec

  1. MAJOR version when you make incompatible API changes,

as

I can change ANYTHING except the software contract (aka API) to avoid MAJOR version bump.

In my practice, inexperienced people where changing such things as: OS support, browser engine support, removed functionality, and most notably - runtime versions support. All that without major version bump.

It caused millions of $$ revenue loss for some companies.

You are saying - "could mean", but I'm saying - what it actually meant already.
Let's not put theories, instead let's look at past practice, at the events which actually happened.

I would agree that wording of this PR could be better. I welcome you to find better words.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All those things are part of the software contract.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Do you suggest to change the wording to...?

  1. MAJOR version when you make incompatible software contract changes,

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm saying that that's what API means, and thus "API" is sufficient.

If people are going to misunderstand "API", then what's stopping them from misunderstanding "software contract"?

Copy link
Author

@koresar koresar Jun 11, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"API" is a subset of "software contract". IMO.
"software contract" can also include such things as encoding, protocol(s), platform(s), package type, language(s), etc.

If you believe people would misunderstand "software contract" then please come up with better wording. Or, perhaps, a better PR.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you believe a further (third) discussion is needed - let's move to the #444

@alexandrtovmach
Copy link
Member

Closing & re-opening to trigger CI

@alexandrtovmach alexandrtovmach added extend Brand new ideas/rules to add to the specification RFC Request for comments state for next version and removed proposal labels Jun 19, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
extend Brand new ideas/rules to add to the specification RFC Request for comments state for next version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SemVer declares API changes, but not the minimal required platform/engine/environment/framework
7 participants