Comment by zanecodes
2 months ago
I'm convinced that the lack of a stable ABI and the lack of a hardware abstraction layer (requiring drivers to be in the kernel source tree) is what's preventing The Year of the Linux Desktop from ever arriving. I understand the principles behind both decisions, but at some point I think pragmatism should win out. I guess I'm just a bit surprised that no distro has taken up the mantle of providing these things; it seems to me it should be possible to build a stable ABI and HAL on top of the existing Linux kernel.
The problem is that as soon as you do that you're stuck with whatever architecture you already have, which incurs precisely the performance and maintenance burdens that Windows already suffers.
Which is a reasonable design choice for many things. But Linux can move fast in part because it can decide to discard bad ABI and HAL conventions.
I understand that, but I think for an operating system it's more valuable to provide stability for applications than to be able to move fast.
Secondarily, do the same issues not apply to the Linux API as to a hypothetical ABI? If the API changes, don't userspace applications still need to be updated and/or recompiled accordingly, or suffer breakage? At some level, whether it's an ABI, a statically linked API, or a dynamically linked API, there always has to be some interface between applications and the operating system, and breaking changes to that interface must be managed with care.
It comes down to where you decide to draw that interface, and I think the ABI is just a better place to draw it from a user's perspective. This way, applications don't need to be recompiled to work on newer operating system versions, and given how challenging and painful it can be to compile applications reproducibly, and how many applications are only provided in binary form to begin with, this seems like a worthy goal.
> I guess I'm just a bit surprised that no distro has taken up the mantle of providing these things; it seems to me it should be possible to build a stable ABI and HAL on top of the existing Linux kernel
Doesn't that distro already exist and it is called WINE?
As funny as it is to pattern the stable ABI and HAL so directly after Win32, it's also a hardened, well battle tested one. Rather than needing to design something from whole cloth and then get user and driver code buy in for it, why not just use an ABI and HAL with a lot of existing code? WINE is a funny answer, but it is a respectable one. (I appreciate the "overnight success 20 years in the making" joke above, too, about it.)
That's pretty much what RHEL and Ubuntu LTS are. Stable for 10 years.