The Decimal Versioning Standard v1.0
====================================
In the world of software management there exists a versioning standard called Semantic Versioning (semver). While semver is great for most projects, sometimes you take one hard look at a v0.9 and just can’t bring yourself to increment it to v0.10, and instead start worrying about things like “but what if my users interpret it as a decimal and just ignore the trailing 0 that’s obviously there for a reason?” If you’re afraid of version numbers that end in 0 and/or think your users would earnestly believe v0.10 is the same as v0.1, Decimal Versioning is for you.
Decimal Versioning follows the example of Principia Mathematica, which enumerated each of its various theorems with decimal notation such as 2.11 coming in between 2.1 and 2.2. In Decimal Versioning, trailing 0s are ignored, just like regular decimals. If you find yourself at v0.9 and need one or two more patches before minting v1.0, it’s recommended to subdivide, moving to v0.95, v0.975, and so on until you’re actually ready for v1.0. Under no circumstances proceed from v0.9 to v0.10, as that is the same as v0.1, and you must never go backwards when incrementing a version.
The decimal convention applies to every component of your version number; major, minor, patch, and pre-releases. For example, the version that comes after v0.95.4-alpha may very well be v0.95.4 OR v0.95.4-alpha-lambda. For pre-release postfixes, it is encouraged to treat them like decimal numbers and stack them if you are not ready to e.g. proceed from -alpha to -beta.
Known packages for working with the Decimal Versioning standard include:
- https://metacpan.org/pod/version, particularly its stringify implementation.
- Just casting your version number to a float.
Please reach out if you find any other packages or modules that implement all or part of the Decimal Versioning standard!