The user land API/ABI is stable to a fault in Linux. The kernel API/ABI is unstable
It’s the other way around. The kernel API stable to a fault, the kernel ABI isn’t. If your application only relies on the kernel API you won’t have many compatibility issues. If you rely on userland stuff such as C++ stdlib, GTK, QT, Python, … Good luck.
I wasn’t clear and that seems to have cause some confusion. I was talking about the Linux kernel itself, and only the Linux kernel.
There are two sides to the Linux kernel: internal exposed to drivers and such, external syscalls exposed to the public. That’s what I was talking about.
All bets are off with 3rd party software. That’s just a general problem in software development. It’s not specific to Linux, and it’s why vendoring libraries is recommended.
This is why all the 3rd party software is frozen at a point-in-time with fixes backported in distros like Debian or RHEL. It fixes the problems of devs being mercurial. The distro is the SDK. It creates a stable base, and it works rather well.
Unfortunately, most software relies on libc and a compiler. Both of which can be problems, and both of which are external to the Linux kernel. There’s not much which relies on only kernel syscalls.
It’s the other way around. The kernel API stable to a fault, the kernel ABI isn’t. If your application only relies on the kernel API you won’t have many compatibility issues. If you rely on userland stuff such as C++ stdlib, GTK, QT, Python, … Good luck.
I wasn’t clear and that seems to have cause some confusion. I was talking about the Linux kernel itself, and only the Linux kernel.
There are two sides to the Linux kernel: internal exposed to drivers and such, external syscalls exposed to the public. That’s what I was talking about.
All bets are off with 3rd party software. That’s just a general problem in software development. It’s not specific to Linux, and it’s why vendoring libraries is recommended.
This is why all the 3rd party software is frozen at a point-in-time with fixes backported in distros like Debian or RHEL. It fixes the problems of devs being mercurial. The distro is the SDK. It creates a stable base, and it works rather well.
Unfortunately, most software relies on libc and a compiler. Both of which can be problems, and both of which are external to the Linux kernel. There’s not much which relies on only kernel syscalls.