Procedural programming can be modular too (functions, libraries, etc.). systemd is not only modular in that sense but also in the sense that the Linux kernel is modular, i.e., you can easily activate/deactivate parts of it at compilation time: https://freedesktop.org/wiki/Software/systemd/MinimalBuilds/

... and it is also modular in the sense many different "programs that do one thing and do it well" (as Doug Mcllroy wrote)! According to http://0pointer.de/blog/projects/the-biggest-myths.html :

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 parallelization 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.

These binaries are under the systemd umbrella and not independent projects. They include the same libraries (fix a bug in it and you fixed it for *all* binaries), they are thought to work together, they expect similar arguments from the user, etc.

Reply via email to