Why not Linux?
ⓘ Notes are short, informal thought pieces relevant to Radiant Computer.
I’m often asked why I’m not building Radiant on top of Linux. After all, it’s a solid foundation on which to build a computer. While this is true, and I use a Linux distribution as my daily driver for software development, I don’t think Linux is the future. It simply has too much historical baggage and design decisions inherited from Unix V7, which are outdated today.
-
Linux has accumulated a large baggage of syscalls, many of which are no longer in use or obsolete, making systems programming more complex than it needs to be. Just looking at the variety of ways in which asynchronous I/O is done gives us
selectwhich was deprecated bypoll, which was replaced byepoll, which is now being superceded byio_uring. This kind of syscall bloat can be found in many different areas of the syscal API surface. Although Linux started with around 60 syscalls when it was released in 1991, it now has more than 300. -
Signals were a mistake. Signals are not thread-safe, make code incredibly hard to reason about and pollute many of the syscall interfaces with signal-related error codes. There are better ways to send messages to processes nowadays, but Linux processes have to account for signals.
-
It’s too big to steer. The project’s scale and compatibility constraints make fundamental changes nearly impossible. The community is conservative by necessity, and most of the funding comes from Big Tech.
-
Linux is a monolithic kernel. All drivers, filesystems, and core services share the same privilege space. A single bug, eg. a bad pointer dereference in a GPU driver can corrupt kernel memory and take down the entire system.
-
Linux is premised on the idea that hardware abstraction is desirable. Hardware abstraction makes quality assurance (QA) nearly impossible, and is extremely expensive to do well. It’s a UX nightmare.
-
Linux has a dependency on the C and GNU toolchain, which itself has a whole other set of issues due to the time period in which it was conceived.