The following is not something I am saying, I am copy-pasting this from somewhere else, I just this it's insightful.


What is systemd? It's an init system. An init system is the first process started during the boot process, and it is then responsible for starting all of the other processes that need to be started. You control which processes run by default by configuring your init system, as well as things like which process should be restarted is they crash or are killed. It also provides commands for stopping and starting system services. Most init systems limit themselves to that, which adheres to the part of the Unix philosophy that says that programs should "do one thing and do it well". Systemd, however, takes it upon itself to also provide a myriad of other services, some of which are tangentially related to the job of an init system, and some of which are completely unrelated. These include, but are not limited to, a job scheduler, a logging daemon (and a bad one), a device manager, power management utilities, internet services daemon, an ACPI daemon, and a login manager. These services can be disabled, and systemd proponents seem to think that means that it's modular and unix-like. The problem, though, is that these services only work in the context of systemd, and systemd itself only works with the Linux kernel. The Unix philosophy says things like "programs should flexible and open", "programs should be portable", "programs should be good at communicating with other programs", "data should be stored in flat text files", and so on. If you follow these guidelines well and write something like an ACPI daemon, it will work on any operating system that has some basic set of features, totally regardless of what init system it's using and in many cases regardless of what kernel it uses. If you're a systemd developer, nothing should work unless systemd is there, and systemd doesn't work unless you are using the Linux kernel. This behavior is NOT Unix-like. The result on ignoring the Unix philosophy is basically this: if a systemd developer writes a session manager, and a popular desktop environment uses it, that desktop environment now only runs on a single init system and kernel, even though it doesn't depend on either one directly. Suddenly, you start to see user applications that come with these ridiculous dependency chains that go right down to the kernel, and anyone who wants to use that software no longer has any choice as to what operating system components they use. It basically turns Linux into Windows: Take all of it, or take none of it.

In return for all of this ridiculousness, you get literally nothing. It has zero advantages over its modern alternatives, all of which are actually unix-like and modular.



Reply via email to