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.