The world of versioning is full of well-defined and ad-hoc methodologies. SemVer has risen to be one of the more popular methodologies, however I believe that SemVer encodes too much information, some of which does not actually matter for the most part. The distinction between a MINOR and a PATCH, for example, can be difficult to reason about.

Monotonic Versioning attempts to address this by simplifying the version to two numbers, neither of which are ever reset to 0 . The only number which the release engineer has control over is COMPATIBILITY, which needs to be incremented if a new line of compatibility is added. The RELEASE number is incremented for every release. Releases can be totally ordered by the RELEASE number and compatibility between any set of releases can be determined by comparing the COMPATIBILITY numbers. The COMPATIBILITY number, which is used to indicate if two released are guaranteed to be compatible with each other, may be different but still compatible with each other, however this does not represent a guarantee, just an coincidence.