Software versioning is a mess
Apparently Apple decided that the next version of iOS will be 26 instead of 19 because they want to move to yearly versioning. One might say, "Isn't it 2025 right now?", and the answer would be that Apple, for some reason, is adopting the same versioning that car manufacturers and developers of sports games use. Similar to how a 2026 car model is released in 2025, Apple wants to release iOS 26 this year.
...my head hurts. What even is this?
With that, I felt like sharing my random and possibly incoherent thoughts on software versioning, so here we go I suppose.
I think that both semantic versioning and date-based versioning are both decent methods of assigning version numbers to software. I find that the former is much more useful for libraries because it signals to programmers if any features were added and most importantly, if there are any changes that can break backwards compatibility. That is information that date-based versioning cannot immediately convey.
For the average user that knows little about computers, the version numbers do not really mean that much. All they really know is that higher version numbers are supposedly better. This expectation is often broken, however, which is why so many users are distrustful of software updates, especially those that force them to relearn everything all over again for no gain. Due to this, there are websites dedicated to preserving old versions of various programs, and that is why people still use Windows XP and 7 in 2025 because the newer versions are a downgrade to these people.
I really do not like when projects change their versioning scheme suddenly. Two examples are when Minetest (now Luanti) went from 0.4.0 to 5.0.0 and then LibreOffice went from 7.6 to 24.2 for whatever reason. It feels like a marketing gimmick, but maybe the perfectionist in me just gets irked about such details. The user probably does not care that much, and the confusion subsides after a while anyway.
Version number bloat is also a thing in some cases, especially for web browsers. I do not even know the difference between Firefox 137 and 138, but it feels smaller than the difference between Android 10 and 11. I am sure that there is a lot of technical improvements between each version, but regular users will never appreciate them. For cases like Firefox and Chromium, the major version number is just some number that goes up when a release is made instead of being a significant milestone like with many other programs.
The worst type of versioning scheme, however, is a nonexistent one. LuaJIT does this, and this issue on GitHub illustrates the developer's attitude towards versioning and making releases:
Time to just release version b3426adf, because proper releases are "antiquated" now! Sigh.
The number of other issue threads that have mentioned this one is hilarious, but I do not think it is funny for distro maintainers that have to pick a random Git commit and hope that they did not pick one that leads to a broken program.
The takeaway from everything mentioned in this article is that this is why I will never be a Linux distro maintainer :p I doubt this mess will ever get any better. A fun exercise would be to open aptitude or Synaptic in Debian and just go through all the version numbers for every package. You can feel the Debian package maintainers going slowly insane at times...