Re: Yes, please!
Respectfully, I think your answer proves the point, just not the one you were hoping to make.
systemd was offered as a replacement for the ancient and creaking init system... but the amount of scope creep that the project has gorged itself on is frankly ridiculous. It fundamentally violates the Unix philosophy of having software "do one thing and do it well" - of being simple pieces of code connected by clean interfaces, to borrow from TAoUP.
In short, the issues with systemd include:-
1. The Scope Creep
Originally offered as a simple replacement for System V's "init" process, systemd now encompasses device management, user logins, network configuration, system logging and even local DNS services...
2. Binary Logs (my personal bugbear)
Many people think of this as "just" a requirement to use e.g. journalctl when they might want to use grep or sed... but I have supported "hosted" instances of Linux running on top of other OS platforms. Much of the time that might work well... but what if you're running a virtualized RHEL on top of IBM zOS on an IBM Z-Series mainframe? It would be *so much* easier to review plaintext log files using native zOS tools (because your Linux environment is dead). The fact that there isn't even an option to do this [while other functionality keeps getting added to systemd] gets pretty frustrating.
3. Hard Dependencies
Systemd and its components are deeply intertwined [no clean interfaces], to the extent that many core desktop tools and network managers now require it to function. This not only creates something of a monoculture, it risks fragility and instability issues.
4. Complexity
I'm not sure the decision to replace readable shell scripts with declarative unit files is a net benefit. Yes, it can make parallel booting quite a lot faster, you have to trade that against the percentage of time your Linux host spends in boot state rather than actual operational running... The problem with declarative unit files is that they abstract away mechanical control, making it harder to troubleshoot when things break.
5. Opacity / Monolithic Design
Systemd has basically moved multiple and entirely distinct functional elements inside PID 1, which in turn creates a potential single point of failure. Now, if a core service hits an issue, it can bring down your whole system. For example, if you're running a distro that uses the built in systemd-resolved, then you are running your local DNS resolver *in your init process*. Why would you want to do that?
There's a good reason that the "rules" in "The Art of Unix Programming" has "The Rule of Modularity" ("Write simple parts connected by clean interfaces") as it's very first Rule. It's because those are words to live - or die - by.
To quote a bit more: "The only way to write complex software that won't fall on its face is to hold its global complexity down - to built it out of simple parts connected by well-defined interfaces, so that most problems are local and you can have some hope of upgrading a party without breaking the whole."
The developers of systemd could have stopped after they had provided a neat and modern replacement for systemd. The continued because they could.
They never stopped to consider whether they *should*.