In my previous and some earlier entries I mentioned systemd and how usually it is not a problem as long as it gets the job done well. While this is true in general, I have to reflect on my past claim.
To those who are unfamiliar, systemd (system daemon) is a Linux init system, but also a device and service manager. It governs the boot process, drive mounting, networking, etc. Originally it was developed and employed by Red Hat programmers in their enterprise Linux platform RHEL, but later quickly adopted by other distributions, such as Ubuntu, Arch Linux or Debian.
Doesn’t sound too daunting, now does it?
The actual problem resides ‘under the hood’. As it is now, systemd has an extensive network of dependencies and itself is a dependency of major packages like KDE or GNOME. This fact has been somewhat neglected, because systemd was continuously pushed from upstream as modern, intuitive and useful. This is of course perfectly true, but I feel that the overall Linux ecosystem more suffers than profits from systemd.
The very definition of Linux has always been choice. The right to decide on the distribution, installed software, programming environment…also init system! We used to have pure system V init, upstart, openRC, etc. I admit, some of those init systems were slightly faulty and ‘evolution’ removed them from the Linux-verse as inefficient. However, none of those init systems tried to be everywhere and everything. Let us take openRC, as a case study (my current favorite).
OpenRC utilizes a global configuration file (rc.conf) to manage basic parameters of the boot process. It is also responsible for drive mounting and has an rc-service module dealing with running system services. In principle, it does everything systemd tries to do with a few exceptions:
- Init scripts are independent of each other and a broken service can be quickly restored (systemd routes services through a global controller systemctl, which if broken, makes systemd unusable)
- OpenRC does not intend to replace anything or force users to rely on it. It is a service manager / init system and nothing more.
As openRC is not a dependency of anything, I am free to do whatever I want with my operating system. The problems start when I would like to use for instance MATE as my desktop environment. It is light in comparison with Xfce, GNOME or KDE, but equally feature-rich. Hence, a reasonable choice, even for weaker computers. However, in order to use any of the major desktops I need systemd or at least crucial (inseparable) parts of it.
I find it quite reasonable that popular desktop environments try to take advantage of systemd, but why, God why, does it have to be a necessity…? Why do I need to limit myself to a specific init system, and often by extension to a specific range of distributions (systemd is already quite widely used) to enjoy Linux?
I don’t want to sound like one of those tinfoil hat people, but the current systemd-favoring trend is at least troubling, because it brings us a step closer to Windows and its intrusiveness. Let’s bear that in mind!