Some time ago I came across yet another angry discussion about systemd, and have been reading and thinking a great deal about the design of Systemd, and what it says about Linux. I’ve come to realize that the strife in the Linux community is because an active and well-funded group of developers who have been driving the direction of various core components are not building UNIX. They are building some other philosophically divergent system on top of the Linux kernel, with roughly the same relationship to UNIX as Plan9. For convenience I’m going to call the non-UNIX environment they’re building FLOS for the remainder of this post (F since the FreeDesktop.org folks, and their backers in the Fedora project, are driving this, L for the Linux kernel, OS should be self-explanatory). I intend this term to be value-neutral.
To me, the core of a UNIX system is a philosophical matter. To quote Mike Gancarz’s The UNIX Philosophy from 1994, UNIX has 9 paramount precepts:
- Small is beautiful.
- Make each program do one thing well.
- Build a prototype as soon as possible.
- Choose portability over efficiency.
- Store data in flat text files.
- Use software leverage to your advantage.
- Use shell scripts to increase leverage and portability.
- Avoid captive user interfaces.
- Make every program a filter.
FLOS is a nearly diametrically opposed design, with design concepts like the following:
- FLOS avoids scripts, and prefers to split tasks into compiled logic interacting with logic-less configuration files.
- FLOS prioritizes ease of machine manipulablity over human manipulablity.
- The components of FLOS communicate over D-Bus rather than sockets and pipes.
- FLOS is built on a core of monolithic programs which attempt to synergisticly manage multiple complex components.
- FLOS leverages features specific to Linux and ignores portability.
- FLOS prefers tightly integrated components to generic solutions.
I’m not sure that this is a bad design, but it is most definitely not UNIX or anything like it. I’ve seen some fairly convincing arguments that the FLOS design philosophy has serious benefits, and there are decades of convincing arguments that abandoning the UNIX way is the path to ruin. Systemd is the big realization of the FLOS design, but many projects, especially FreeDesktop projects, have been working this way for some time. I’m going to pick out a couple examples and talk about them under the fold.