Also, why we don't have a common interface to drivers at least between Linux and BSD by now? I don't like that there's animosity between the two ecosystems. That way we could have, if technicalities permit, a way for many diverse OS models to enter into the competition: if the drivers are written agains a certain standardised interface, one can code-up an OS to support that interface, and just like with POSIX, the OS would have a whole suite of drivers available from day one. Better for the driver authors too.
Given that Linux has the broadest hardware support of any open source OS, and arguably any OS period, it's difficult to say they aren't right.
Considering Google designed both Treble and Fuchsia, it's not such a crazy idea.
API stability is not guaranteed, though it's stable enough that the likes of Nvidia can write installers for their proprietary drivers that recompile a bit of interface glue between kernel and blob.
Given a particular install, yes, but it will change independent of kernel version based on e.g. build flags and even conceivably compiler chosen, etc.
> it's stable enough that the likes of Nvidia can write installers for their proprietary drivers that recompile a bit of interface glue between kernel and blob
Well...they certainly can. It also can infuriate me beyond all reason...
Making a stable API that covers the entire kernel would be a monumental task on the other hand.
Well, Linus chose usefulness as a higher priority than theoretically optimal, so by Linus's standards, yes, Linus was right.
> Then again, I have a feeling it won't be too long until they scrap linux altogether.
Um... don't hold your breath. I think you're going to be waiting a long time for that one.
https://github.com/torvalds/linux/blob/master/Documentation/...
> You think you want a stable kernel interface, but you really do not, and you don't even know it.
...
> It's only the odd person who wants to write a kernel driver that ...
And:
> stable-api-nonsense.rst
Creating a common interface would require all OS vendors to collaborate on some standard and maintain a leaky abstraction over their preferred abstraction. You can do that, but there are feature, performance, and maintenance compromises that must be made.