Hacker News new | ask | show | jobs
by OJFord 1417 days ago
> I'll likely call [the next release] 6.0 since I'm starting to worry about getting confused by big numbers again.

I'm not sure whether to read this as a joke, or if there's really no semantic difference between x & y version numbers for the Linux kernel?

[Edit: that was a sincere question, not 'what a joke', I didn't mean anything against it.]

If I hadn't seen that I'd have been very cautious, a bit worried even, about upgrading to :shocked-face: six point oh, scoured for news & changelogs (yes yes as I should anyway.. actually what I do is assume patch will be fine, and check /r/archlinux for minor bumps - that is, I thought they were 'minor' and 'patch' rather than arbitrary) etc.

3 comments

The first number being changed doesn't mean anything in particular, it's just like another release.

Check the release post for 5.0: https://lkml.org/lkml/2019/3/3/236

So we can conclude, that the the big star of open source is not enforcing the child of open source :(

Ref SemVer: https://semver.org/

I find it irritating when people quote semver like it’s some kind of law.

It’s a random protocol someone came up with that some other people decided to follow. It’s nowhere near a de facto standard for version numbers: plenty of software has non-semver version numbers (in fact, this applies to all software I have worked on so far in my career!)

I think it's pretty clear semver doesn't really have a place in modern software. Except for Microsoft, no one cares about backwards compatibility, which semver is all about. All software is continually developed, every release contains both new features and bug fixes, which violates semver. The vast majority of software has a meaningless "1." or "0." tacked to the front to try to satisfy semver, until the project gets bored of typing it and just drops it.

I think most software should just have date-based versioning. It fits the development models we actually use far better, and actually communicates useful information to the user, unlike semver. Are you running a kernel from 2016? Might wanna update that.

SemVer has significant benefit for package manager world. Many argue that why don’t you just read a changelog, but that is not the point. Package manager should know whether it can update some dependency to later version safely, without some guy always manually hardcoding the suitable version. It is everywhere. In Arch Linux, Debian, Pip and Cargo. They all rely on versions which itself should describe the impact of the change. If there is no standard, then it is always risky to update. On Debian it means manually testing every package. In Arch you accept the risk. If everyone would follow version schema, then you could trust the number in most of the cases.

My original message was a bit joke which some missed, but SemVer has a place and need.

> All software is continually developed, every release contains both new features and bug fixes, which violates semver.

Combination of them is not violation. Overall impact of the change should be described with the correct increment. It does not matter how do you categorise the content of the change.

It's often a change in interface. If you build from source, old code simply won't compile with new incompatible interface, and won't get to the testing stage.
> Except for Microsoft, no one cares about backwards compatibility

That would seem to be contradicted by Linus's "WE DO NOT BREAK USERSPACE"[1].

The Linux community clearly cares for backwards compatibility too.

1. https://linuxreviews.org/WE_DO_NOT_BREAK_USERSPACE

That's "Linux" the kernel, not the operating system. No one building a 'modern' desktop OS on top of that kernel cares. Download a 20 year old Linux binary and try running it on a random up to date linux distro. Unless it's a trivial program it will almost certainly fail.
> one cares about backwards compatibility, which semver is all about.

Interesting. I'd characterise it more as 'responsibly breaking backwards compatibility'. Just a tool to communicate the nature of changes, a really (really) brief summarising changelog - what's included, breaking changes, non-breaking new features, or just misc. fixes?

I quite like it, but I tried to phrase my top-level comment not to be about it specifically. It would have surprised me to learn that Linux used 'semver' - that doesn't mean there's no semantic meaning to the version numbers it uses though.

> backwards compatibility, which semver is all about

It's not about maintaining backwards compatibility. It's about making it explicit when you break compatibility. Whether you do or not is completely up to you - semver doesn't care.

The unofficial motto of the Linux kernel is "Don't break userspace" so semver wouldn't be useful.
And what's more, the second unofficial motto of the Linux kernel is "break kernel space"; they don't make any attempt at keeping in-kernel APIs stable. So if they followed semver for userspace, they'd be on 1.9000.0, if they followed semver for kernel space they'd be on 9000.0.0.
There's value, albeit less in the minor vs patch distinction I think. So you could imagine a world in which SemVer came first, Linux uses it, and we're on 1.5.19 but usually drop the 1. because we've agreed there'll never be a v2.
That's pretty much the state of the 3.x releases, but at some point numbers got big.
I’d say it was the stage of the 2.6.x series.
What would be the point of that?
I don't think SemVer is an appropriate versioning scheme for the Linux kernel due to the extremely large number of subsystems that make up the whole.
That's one way of doing it, not the only way, and only tangentially related ('it can be useful to' sort of relationship) to open source.
Some developers (younger ones?) seem to think that the SemVer spec is a law of the universe, when in reality it's just something a GitHub guy put into the mix in the 2010s.
While it is not the law, it is the only reasonable attempt to solve dependency issues. If the software gets an major release when author feels like it, then version itself tells nothing about the changes. Then dependant software can never estimate the impact of update. I agree that Linux Kernel is a bit different, since it sits on top of everyrhing, but still.
> Then dependant software can never estimate the impact of update.

They can read the changelog. And if they can't be bothered to read the changelog, then why even update?

There aren't breaking changes.
It's happened in the linux kernel before. There's no "major" difference, it's just development as usual.
As far as I know the first two number basically don't have any meaning these days as far as size of the changes goes.
Yup, they're just going up until Linus gets confused and he bumps it up to next "major" number.