However upstart was totally reasonable.
I think we just have different ideas of what the term "building blocks" means.
You cannot add (or remove) part of systemD as you wish: on a Linux system I cannot replace journald with something, and I cannot bring journald over to FreeBSD. SystemD is tightly-coupled (heck, they even borg'd in udevd, which was an independent project at one point).
Building blocks in my mind are like Legos: you can put together the thing you see on the box, but the individual (literal) blocks can be used however you wish.
I guess I just never cared to actually LEGO much with Linux.
> thousands of servers running just fine
Err yeah well you might have noticed these things called "laptops" and "desktops". SysVinit was... fine.. on servers. It worked badly on desktops and not really at all on laptops. I'm pretty sure the post introducing SystemD explained it all in detail if you want to learn something.
The issue with Linux on the desktop, and especially the laptop, in the pre-systemd days wasn’t the init system. It was the lack of quality drivers.
Now I’m not saying that systemd hasn’t brought improvements over sysv. But to say bash worked badly on laptops but fine on servers is just silly. That’s simply not how the technology works at all.
And I don’t need to read some promotional piece from Redhat to know this. I’ve been running Linux on desktops and laptops longer than many adults have been alive. So I’ve lived through these massive ecosystem changes and have a first hand account of life before systemd.
There is difference between mandatory one implementation and set of funcionalities. Systemd is monolit with visible parts that provide somewhat modern funcionalities in 'nix world.
And there is no serious developers in 'distro' space, except RedHat. And, really, there is no such thing RedHat we have in old Linux days - it was devoured and we just have a label doing corporate propaganda.
So when few modern init systems were hatching RH dropped systemd and, as RH is main force in distros development, it gained dominance.
And since then thing are getting worse.
Eg. cgroups ? systemd first used them and so much hype happened. But is it deserved hype ? No! They implemented cgroups v1 when cgroups v2 was available. And cgroups v2 usage was blocked for years. In systemd too.
Do not make mistake of not seeing difference between good and modern functionalities and one codebase with funding that block real development.
Edit: formatting*