Hacker News new | ask | show | jobs
by bryanlarsen 4572 days ago
A lot of software is developed via some sort of agile software process these days. This means a new version of the software quite regularly, released on a time basis rather than a feature basis. This is what made version numbers meaningless. There are three common solutions:

time based: Ubuntu 12.04

increment the major number: Chrome 31

increment the minor number, never or rarely changing the major numbers: Linux 2.6.39

None of these solutions work well.

1 comments

What is your solution then if these don't work well?
Stop putting so much stock in version numbers?
I'd suggest Semantic Versioning[1]: <major>.<minor>.<patch>

[1]: http://semver.org/

Major releases break the API, so programs that depend upon them may not work. Minor releases add or improve features while preserving existing functionality. Patches fix bugs.

This is exactly why having version numbers is important. Even if the number becomes arbitrary, it's existence is necessary to build dependency trees.

Aside: I'm not certain, but it seem as though Firefox does have a major.minor version scheme: my user-agent reads "Mozilla/5.0 ... Firefox/25.0"; Firefox 5.25 is probably the most correct.

Most, if not all releases of Firefox have minor API changes. Sometimes it's visible via HTML, sometimes they are only visible to plugins. By semantic versioning, 25.0 is the correct version.
``Mozilla/5.0'' doesn't seem to mean anything much— it's in Chrome's (and Konqueror's!) default user agent as well.