Posts tagged with opinion:



My thoughts on the systemd controversy

As someone who runs a Linux server, I have quickly learned to value stability. A good server software is fully predictable, it just churns away quietly, most of the time you can even forget it's there. This paints a rather dull picture, but servers are meant to be like that. On the other hand, of course, Linux tends to attract people who like to tinker, to explore, to improve. After all, Linux systems are highly modular, and hence a prime target for tinkering. When those two different worlds collide, arguments and controversies may arise.

When I was choosing the operating system for my first server, I went with Ubuntu Server. I liked the ideas of easy setup and automatic security updates. However, I didn't quite realize that things would be changing so much. Every dist-upgrade brings new surprises: daemons that collect my data for questionable reasons (whoopsied), or consume tons of resources for no gain at all (I'm looking at you, plymouthd!) I've had startup scripts silently converted to upstart jobs, X Sessions being forcibly started, even despite passing the text parameter to the kernel, and having runlevel 3 selected as default. Looking back, Ubuntu wasn't a good choice for my server. Now I've decided to hold back on upgrades to avoid getting systemd.

Systemd was meant to be a superior replacement for the aging SystemV Init, but it didn't stop at that. It fancied itself a "system management daemon" and has kept on growing ever since, adding functionality, taking over other packages (udev, dbus, syslog, wireless-tools, and lately even cron), and having clashes with the kernel folk. Meritorical criticism of systemd includes running too much code on PID 1 (when PID 1 crashes, it takes down the whole system), using binary logging (which is more difficult to recover), and requiring reboots for upgrades. Systemd is also criticized for not complying with the Unix philosophy of "doing one thing and doing it well". If it were to comply, it would have to be broken up into several smaller utilities, and the people behind systemd would not like that, as it would diminish their hold on the Linux world.

One more subtle thing systemd is doing is encouraging other programs to use the systemd API, so that they can notify the system that they had started up correctly. This establishes a binary dependency on the systemd libraries, and may cause an entire package to depend on systemd as a result. In Debian you cannot install GNOME without having systemd, and you cannot use the GNU Image Manipulation Program without having systemd installed on your system as well.

The Debian Technical Committee decided to solve this problem by making systemd the default init daemon for Debian. There was something odd about that vote: the discussion was supposed to consider every init system (including both openrc and sysvinit), but quickly devolved into a "systemd vs. upstart" argument, with the committee equally divided between the two options. The way this tie was broken is conspicuous at least, with Ian Jackson one day demanding the resignation of the committee's chairman, and then suddenly "taking a break from the committee", thus allowing the systemd proponents to win. Some suspect outside influence, which is certainly possible. Valve specifically chose Debian over Ubuntu for the base of its SteamOS in order to avoid upstart and its "troublesome" license.

Another theory says that there may be a "submarine patent" on something that systemd uses, and that it could be used to bring down Linux once the systemd adoption is high enough. This claim sounds far-fetched, but those who remember the SCO vs. Linux case are not too quick to dismiss it entirely.

My reasons for shunning systemd are mostly pragmatic: the system is too "new and exciting", and hasn't been tested extensively enough for a program that runs as PID 1. I'll be happy to make the switch two years after the entire Linux world happily standardizes on it, but not sooner. Meanwhile, I intend to migrate to Gentoo as soon as I lay my hands on some new hardware. Hopefully it will prove much less "exciting" than Ubuntu did.

Distribution Init System
Ubuntuupstart/systemd
Linux Mintsystemd
Debiansystemd
Fedorasystemd
CentOSsystemd
OpenSUSEsystemd
Mageiasystemd
ArchLinuxsystemd
SlackwareSystemV Init
GentooOpenRC