Three digits, three rules: reading a version bump
Semantic Versioning says: MAJOR for incompatible API changes, MINOR for backward compatible functionality, PATCH for backward compatible fixes. Version 0.y.z is special: anything may change at any time.
Rails uses Major.Minor.Patch too, but its upgrade guide says Major and Minor may change the public API. Only Patch is limited to bug fixes.
OpenSSL from 3.0 guarantees API/ABI compatibility within a MAJOR number, and says outright that it hasn't adopted semantic versioning in the strict sense.
| Bump | Semver project | Rails |
|---|---|---|
| 1.9.0 to 1.10.0 | Compatible | Public API may change |
| 0.4.1 to 0.5.0 | Anything may change | β |
Example
Illustrative. 12 dependencies get a bump. Sort them by each project's own rule: 8 are patch-only, 3 are minors from projects that allow API changes, 1 is on 0.y.z. The last 4 get a real review.
Important
Before you auto-merge, read the project's versioning page. Three digits alone don't tell you it's semver.
Before you auto-merge
- β Check each project's versioning policy
- β Treat 0.y.z as breaking
- β Group bumps by risk
- β Run tests per group
Weighted decision matrix β score update risk β
Source: semver.org; guides.rubyonrails.org, Upgrading Ruby on Rails; openssl-library.org, Release Strategy.