toy's Standardised Versioning

Written: 2024-06-17 · Last Updated: Never

After seven years or so of releasing software, I felt it was time to address a common problem in my personal programming style: the lack of a consistent versioning standard.

The most common standard for a single versioning system is Semantic Versioning. Overall, it's pretty good, but it has one main drawback: it is designed exclusively for APIs. I'm a desktop dev at heart, and my stuff doesn't have dependent software packages. So, for years, I've been ad-libbing my versioning system from project to project; every time I switched between projects I'd need to check the convention I had set in place before, which quickly gets annoying.

I have a couple goals for my new standard:

  1. Be stricter and more concise than SemVer: SemVer has strings that get appended to version numbers like -alpha+001.1 I want to limit the number of characters in general use and over-simplify version strings, whilst still maintaining the possibility to represent things like preview releases and alphas and betas.
  2. Establish a strict and consistent standard for myself: I want something with a clear and concise reference that not only I, but anyone else can cite in their own projects as a concrete system to use..

…And so, I present you with:

toy's Standardised Versioning v1.0

(Working Title)

Format: <channel><major>.<minor>[.<patch>][hotfix|rc]


Example Valid Version Numbers

a1.0a1.1b1.0b1.0.1v1.0v1.1v1.1_01v1.2-rc1 and v1.1.1 (based on the same prior release) → v1.2

Sources

  1. "Semantic Versioning 2.0.0". Preston-Werner, T.