3 ms·
Many of the disagreements in the comments seem to be overly focussed on versioning for installable software and dependencies (for example packages) where, I wou
by tailspin2019 4y ago
Many of the disagreements in the comments seem to be overly focussed on versioning for installable software and dependencies (for example packages) where, I would agree, semantic versioning is still useful.
Not all software is a dependency though, and not all software is installed by end users. The approach in this article is fine for hosted apps, or anything that's at the top of the dependency chain.
EDIT: That said, this scheme is missing a sortable differentiator for multiple releases on a given date. This means there is no way to calculate the order of precedence between multiple releases on the same day, which is often important (though may not be in the author's specific case). I recently switched to using a hybrid version number which has elements of date based and semantic versioning (though not really "semantic" in the traditional sense):
2022.45.11+344.9c88541
2022 = Current year
45 = Release number in the current year
11 = Changes in this release (this is a count of Git commits on the release branch since the last tagged release)
Metadata:
344 = Unique build number
9c88541 = Git hash
This is completely automatically generated and each version is tagged automatically in the repo on deployment. So I never have to think about versioning at all.
I only use this for top-level applications (SaaS/hosted) which are continuously delivered (often with multiple deployments per day) and have no downstream dependancies.
I used to use Semver 2.0, so in my new hybrid scheme I wanted my version numbers to still have the same number of elements and still be sortable in a list with my older Semver 2 version numbers.
Given that my major versions never got anywhere close to 2022, this format gave me a nice seamless switchover, where order of all version numbers across both schemes was still maintained and my version numbers still had a consistent number of elements (important for my CI tooling):
Eg. versions, in order of most recent, still sortable across versioning format change:
2022.45.11+344.9c88541
2022.44.3+333.8b77462
2.1.0+303.1a65a73
2.0.3+297.3c878d2
Or without metadata:
2022.45.11
2022.44.3
2.1.0
2.0.3