edbarx wrote:b) Monolithic init (systemd) overlapping libraries
c) Modular/Monolithic libraries
d) Modular/Monolithic user software
As you can see in my simplified explanation, systemd reduces GNU/Linux's level of modularity.
I would disagree strongly with your characterisation of systemd as non-modular.
In my Arch machine, I *choose* to employ systemd-boot & systemd-networkd but I am not *forced* to use these -- GRUB & NetworkManager (and many others) are also supported and work just fine.
The same is true for almost all of the systemd-supplied tools -- alternatives can be used, if desired.
Any forum users interested in actual arguments rather than disingenuous FUD should take a moment to read this rebuttal against the "monolithic"
claims that are made by the tentacle crowd:
Myth: systemd is monolithic.
If you build systemd with all configuration options enabled you will build 69 individual binaries. These binaries all serve different tasks, and are neatly separated for a number of reasons. For example, we designed systemd with security in mind, hence most daemons run at minimal privileges (using kernel capabilities, for example) and are responsible for very specific tasks only, to minimize their security surface and impact. Also, systemd parallelizes the boot more than any prior solution. This parallization happens by running more processes in parallel. Thus it is essential that systemd is nicely split up into many binaries and thus processes. In fact, many of these binaries are separated out so nicely, that they are very useful outside of systemd, too.
A package involving 69 individual binaries can hardly be called monolithic. What is different from prior solutions however, is that we ship more components in a single tarball, and maintain them upstream in a single repository with a unified release cycle.
And this is in answer to the
claims of non-modularity:
Myth: systemd is not modular.
Not true at all. At compile time you have a number of configure switches to select what you want to build, and what not. And we document how you can select in even more detail what you need, going beyond our configure switches.
This modularity is not totally unlike the one of the Linux kernel, where you can select many features individually at compile time. If the kernel is modular enough for you then systemd should be pretty close, too.
http://0pointer.de/blog/projects/the-biggest-myths.html