The Common Sense Versioning
May 5, 2025 · View on GitHub
Not quite Semantic Versioning (SemVer)
It is sad when instructions for using (mostly) three-number-segment version signatures are six pages long.
-
The primary purpose of MAJOR.MINOR.PATCH version number is to hint the product consumer on time, efforts, and risks necessary to adopt the new product release. It is a hint, not a guarantee — no matter the rules, mistakes will happen, patch releases will break stuff, and thus following versioning rules does not cancel the need for adequate Quality Assurance (QA), locking-down, and tracking of the exact versions of tested dependencies in consumer's products.
-
PATCH increments mean changes safe to adopt without any modifications in consumer's products — both backward-compatible internal changes, and backward-compatible additions of new functionality (i.e. both SemVer's PATCH and MINOR updates).
-
MINOR increments mean changes that require minor updates in consumer's products — simple, mechanical, local changes, that should not take much efforts and time (i.e. less severe of SemVer's MAJOR updates).
-
MAJOR increments mean (rare) changes that require major updates in consumer's products — global revisions of how the versioned product is consumed, and global re-works of how it should be consumed starting with the new major release (i.e. severe of SemVer's MAJOR updates).
-
Otherwise version numbers follow SemVer semantics, for compatibility with existing tools — they are compared starting with their left-most segment to the right-most one; increments of a segment are accompanied with reset to zero of all segments to the right of it; additional suffixes as
-alpha.0, or+1, etc. are allowed and understood, in general, as special «risky» releases, which should be adopted at the risk of consumer, if he has consulted corresponding release notes, and knows what he is doing.