Hacker News new | ask | show | jobs
by goku12 1030 days ago
Your comment made me look at the history of both Ubuntu and Semver. It looks like the earliest specification of Semver dates to 2011, while the first release of Ubuntu was in 2004. I remember being confused about how to version code until I encountered semver (Ubuntu scheme was the one I used for a short while). It's possible that Canonical was faced with a similar choice and decided to make one up. While schemes like semver did exist before it, they were not so ubiquitous and didn't have a well-defined meaning like semver does.
2 comments

Major.Minor.Patchlevel was used in the 1980s by the vast majority of Open Source or Free projects. This was a couple of decades old when Ubuntu was first released. The limit between major and minor is blurry, but we did not have to wait for a bunch of people to write a manifesto to use sensible versioning schemes.
> but we did not have to wait for a bunch of people to write a manifesto to use sensible versioning schemes.

That's such a cynical take. The 'manifesto' or the standard is important for two reasons:

1. The scheme wasn't obvious to inexperienced developers. You had to learn it from someone else. Semver standard made it possible for absolute beginners to search and follow the conventions correctly up front.

2. There are a lot of tools that use, support of enforce semver - especially language package managers like cargo, pip and npm. That ecosystem wouldn't exist without the unification provided by the standard.

> That's such a cynical take. The 'manifesto' or the standard is important for two reasons:

I don’t object to the RFC at all. I don’t like it for several reasons, but it has a purpose and it is useful to other people. The points you mention are right. I would just add the caveat that I haven’t seen any real improvement in versioning schemes. Most projects, which were already close, follow it and a bunch of high-profile ones don’t at all, exactly like before.

What irks me a little is the idea that it’s normal for Ubuntu to do its thing because we did not have the concepts behind semver (“I remember being confused about how to version code until I encountered semver (Ubuntu scheme was the one I used for a short while). It's possible that Canonical was faced with a similar choice and decided to make one up”), but please let me know if I misunderstood.

Ubuntu’s scheme was clever and justified, but not because the alternative was mysterious. It was great to new versions being released at a specific point in time rather than when new features or breaking changes were ready. It was also quirky at the time, along with their animal codenames, and it helped them being seen as a new, modern distribution. But GCC, as an example of very high profile free software, has been more or less following semantic versioning principles since the 1980s. And as a teenager learning to code and immersed in the Open Source culture in the late 1990s, I can say that we knew perfectly well what was basically semver without the legalese.

This appears to be a misinterpretation. GP did not say or suggest that any standard or manifesto is pointless, only that it was possible to use good versioning systems prior to their creation.
Fair. But, at least later on, that wasn't universal. There's x.odd for development releases, and x.even for proper releases. GNOME and Linux used to do this.

Also it feels like a lot of projects used to use 0.x numbers, even when they were widely used and stable!

Indeed. And then there is the TeX versioning scheme.
Was going to comment that sem versioning is much older than that, e.g., if I remember correctly version 6 and 7 (early 90s) used semver. Turns out that oracle also switched to year based versioning, thought it was still semver: https://docs.oracle.com/en/database/oracle/oracle-database/1...

Indeed confusing…

I started coding before semver was defined. There was no official name (so nothing to search with) and people had a vague idea about how to do it. That ambiguity meant that everyone did it differently and sometimes completely wrongly. The single name 'semver' and the document attached to it was a silent revolution. So many tools we take for granted (like cargo) are designed around it.