It's no question that Linux is an absolute feat of engineering. It runs hardware all around the globe. Linux is 30 years old and since its creation has dominated the Unix scene. Which is why it fascinates me so much as a developer.
For the past few weeks I've been working on a Linux from scratch project and have very quickly gained some strong opinions on the future of the Linux ecosystem.
First off, Linux utilizes a quick release schedule which makes it hard to hold on to a stable ABI for drivers and modules. Notoriously, this destabilizes drivers often. This is a problem that has already been mitigated elsewhere though. We have only to look as far as Apple. Apple realized that unstable drivers means an unstable kernel and quickly released DriverKit. DriverKit is a userspace driver framework that quite frankly gave relief to both Apple and third party driver developers. Microsoft even has pushed many third party Windows drivers into userspace. Linux itself already has the scaffolding for this available via UIO and VFIO. I believe that pushing drivers and even filesystems into userspace can be done using this. I also think it should be done.
Secondly, while C holds up tons of infrastructure, we've come a long way with modern languages. While the C standard has developed, the willingness of other languages to move away from the weight of legacy standards has highlighted just how different modern toolchains are from old ones. Rust and Go specifically have significantly improved dependency management in the past years.
To conclude, I believe that the future of Linux lies within a new standard. Not one built in kernel space, not in C. But one built on modern standards. One that puts userspace first. I've been taking the liberty of working on a proof of concept recently. I'm wondering what other people think of my take on this topic.
Top comments (0)