
Linux 4.0-rc1 out - akerl_
http://lkml.iu.edu/hypermail/linux/kernel/1502.2/04059.html
======
ajarmst
"the people have spoken...most of it was complete gibberish"

Linus has emitted the most elegant description of the Internet that I've ever
seen.

~~~
pshc
I have tears in my eyes.

------
kakakiki
"On the other hand, the strongest argument for some people advocating 4.0
seems to have been a wish to see 4.1.15 - because "that was the version of
Linux skynet used for the T-800 terminator"."

Makes total sense :)

~~~
bwldrbst
Looking forward to seeing the 6502 as a supported architecture in Linux 4.x!

~~~
laumars
For anyone unaware of the aforementioned reference, in the first Terminator
movie, the code visible in the terminators HUD was 6502 assembly.

Images and more reading:
[http://www.pagetable.com/?p=64](http://www.pagetable.com/?p=64)

------
nuxi7
I already found version number breakage. The UNAME26 compatibility hack was
missed.

[https://lkml.org/lkml/2015/2/23/6](https://lkml.org/lkml/2015/2/23/6)

~~~
riffraff
what is uname26, and what is the hack?

~~~
nuxi7
The switch from 2.4 to 2.6 had a lot of changes and a lot of programs needed
to check the version to see which behavior to use. There are two ways to do
that shown below in psuedo-python. This first way has no trouble with 3.x
versions.

if kernel_version.startswith('2.4.'): DO_A else: DO_B

On the other hand, if you check for 2.6 instead of checking for 2.4... Well
when it encounters 3.0 the code falls back to 2.4 behavior.

if kernel_version.startswith('2.6.'): DO_B else: DO_A

Sadly a number of binary only RAID tools don't really get updated much and
have these problems. There is a program in util-linux named uname26 that you
can run these tools under which gives them the 2.6.40+ version numbers.

This is just one of those tricks operating systems have to resort to from time
to time, its like how Microsoft is skipping Windows 9 because of how many
programs execute version.startswith('Windows 9') and assuming that means
Win95/Win98.

~~~
TorKlingberg
Thank you for the explanation.

> like how Microsoft is skipping Windows 9 because of how many programs
> execute version.startswith('Windows 9') and assuming that means Win95/Win98.

Has this been confirmed, or is it just internet speculation?

~~~
BuildTheRobots
This isn't confirmation, but it certainly goes beyond speculation.

[https://searchcode.com/?q=if%28version%2Cstartswith%28%22win...](https://searchcode.com/?q=if%28version%2Cstartswith%28%22windows+9%22%29)

~~~
Dylan16807
From what I understand, that Java API would not return "Windows 9". So while
those tests are wrong, it would not cause a problem.

I have not seen a single case proposed that would actually break.

~~~
BuildTheRobots
Didn't realise that -thank you :)

------
tomphoolery
Is there a specific reason that the Linux kernel team has given for not
adopting semantic versioning? Or has the discussion just never been started?

~~~
dietrichepp
"What version of Linux are you running?"

"Uh, 2.something."

"Well, that's a span of 15 years right there. 2.what?"

"Uh, 2.6.something."

"Okay, that's a start. That narrows it down to a span of 8 years, almost a
factor of two in improvement."

If they were to adopt semantic versioning, they'd NEVER bump the major version
number in a hundred years. Think about this: when was the last time that
changes to the Win32 API broke your application? Linux is also like that.

~~~
lmm
Plenty of Linux changes have broken my system - removal of devfs, breaking of
not only binary module compatibility but even source compatibility (e.g. I
can't build my qc-usb webcam driver any more).

~~~
ciupicri
The stable API/ABI is for _user_ space, not kernel space.

~~~
lmm
If the userspace API/ABI never changes, maybe a more useful use of the version
number would be to reflect kernel API/ABI changes?

~~~
Tuna-Fish
There is no in-kernel API/ABI. The Kernel team is very vocal that the _only_
interface that exists for the kernel is the userspace systemcall/filesystem
interface, and any code that wants to use anything beyond that really should
live in the kernel tree. Things like the nvidia closed-source driver that
hooks into the kernel itself are not using any API/ABI, they are basically
just hooking into structures where the people maintaining those structures
don't just not care about being compatible, but are actively hostile to people
relying on their code remaining same across versions.

~~~
mitchty
Yep, if we were to say that in kernel struct changes mean a major release in
semantic versioning, there would never be anything but major releases.

Even though for all of them the user space api wouldn't break. So yeah, I
think the people harping on semantic versioning don't quite understand the
reason its not a good fit for an os kernel.

------
Fuzzwah
It has tricked the
[https://www.kernel.org/finger_banner](https://www.kernel.org/finger_banner)
page:

    
    
        The latest mainline 3 version of the Linux kernel is:         4.0-rc1
        The latest mainline 3 version of the Linux kernel is:         3.19
        The latest stable 3.18 version of the Linux kernel is:        3.18.7
        The latest longterm 3.14 version of the Linux kernel is:      3.14.33

------
Redoubts
Interesting how this is the opposite of Knuth's converge-on-pi versioning
system.

~~~
frozenport
Guess Linux ain't perfect?

~~~
cbd1984
More like, "Every time Linux begins to converge on perfect, the outside world
changes what 'perfect' means, and Linux has to evolve towards _that_ ,
instead."

------
mcdoug
I remember last time the concern with going from 2.x to 3.x was that version
parsers would break. Is that still a concern today?

