Major version X (X.y.z | X > 0) MUST be incremented if any backwards incompatible changes are introduced to the public API
If Rails followed this advice, then the logical semver increment from 5.2.4 would have to be 6.x, not 5.2.4.1. But Rails 6.x already means something bigger than an incompatible API change -- it means a group of incompatible architectural changes with the previous version.
Indeed, many gems in the ecosystem face this dilemma.
Proposal: LIBRARY version
Given a version number LIBRARY.MAJOR.MINOR.PATCH, increment the:
LIBRARY version when you make incompatible architectural changes.
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards compatible manner, and
PATCH version when you make backwards compatible bug fixes.
So, for the above example, the bump could have been: 5.3.0.0
Originally created by @coldnebo on GitHub (Mar 26, 2021).
While looking at Rails versioning, I notice that some PATCH level changes have breaking changes now. For example:
* [Update Changelog entry for 5.2.4.1 to warn of breaking changes](https://github.com/rails/rails/commit/c1ca9c7b365cdac9ccd8eb1716173ea3aef89892)
SemVer 2.0 says:
> 8. Major version X (X.y.z | X > 0) MUST be incremented if any backwards incompatible changes are introduced to the public API
If Rails followed this advice, then the logical semver increment from 5.2.4 would have to be 6.x, not 5.2.4.1. But Rails 6.x already means something bigger than an incompatible API change -- it means a group of incompatible architectural changes with the previous version.
Indeed, many gems in the ecosystem face this dilemma.
## Proposal: LIBRARY version
Given a version number LIBRARY.MAJOR.MINOR.PATCH, increment the:
LIBRARY version when you make incompatible architectural changes.
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards compatible manner, and
PATCH version when you make backwards compatible bug fixes.
So, for the above example, the bump could have been: 5.3.0.0
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @coldnebo on GitHub (Mar 26, 2021).
While looking at Rails versioning, I notice that some PATCH level changes have breaking changes now. For example:
SemVer 2.0 says:
If Rails followed this advice, then the logical semver increment from 5.2.4 would have to be 6.x, not 5.2.4.1. But Rails 6.x already means something bigger than an incompatible API change -- it means a group of incompatible architectural changes with the previous version.
Indeed, many gems in the ecosystem face this dilemma.
Proposal: LIBRARY version
Given a version number LIBRARY.MAJOR.MINOR.PATCH, increment the:
So, for the above example, the bump could have been: 5.3.0.0
@coldnebo commented on GitHub (Mar 26, 2021):
ah, sorry, I'll circle back with an RFC for this.
@ljharb commented on GitHub (Mar 26, 2021):
Rails doesn’t follow semver.