My day job is to build a custom operating system with systemd. Here are my thoughts about this:
- The amount of stuff systemd is doing for you is insane. For example, I just learned the other day how the systemctl stop command works; first you can send any signal you want to the process from a script (ExecStop=), then if that fails and the process is still running, systemd takes over, sends SIGTERM, waits for a bit (TimeoutStopSec=) then sends a SIGKILL, optionally handling child processes. I wonder if every single of your shell "init script" handle shutdown that nicely...
- I hear this complaint over and over, but systemd is NOT a monolith, you don't need to use every component. I have a system only with systemd as init, systemd-timesyncd (because I prefer it over ntpd) and that's it.
- It has bugs, yes, every software has bugs. We even hit multiple of them, and some of them was fairly unpleasant and hard to find, but it can be known after a bit of digging, because development is on GitHub. Also I'm fairly sure your shell scripts don't have any bugs in them...
- Shared knowledge. I never heard this argument, but you can jump to any other system and understand what's going on immediately if everyone uses the same init system. This is a huge advantage. Fragmenting the landscape with programs which inherently do the same thing just a bit differently is just a bad idea. I also hate split of talent and split of energy. Also, why on earth would you change to another init system ever? Or why would you ever change to an init system you don't know?
- Boot time is way better with systemd. With sysvinit, there is no parallelization. You have runlevels and that's it. I never used more than three, but I use multiple targets (own custom target also) with systemd, because it's easy and you can finally name them and debug them and see the dependency chain for every target.
- Sometimes we need to dig in to old sysvinit scripts and it is a terrible experience. It has still a lot of stanza-like parameters IN COMMENTS (LSB headers). Great idea...
- Systemd DOES NOT break backward compatibility. It can use existing sysvinit scripts. Actually it even default to those if there is both a .service file and init script.
- "One of the critical reasons against systemd concerns the lack of portability to other Unices, and the associated risk to see Linux-based systems detach from the UNIX world."
Anyone seeing the irony here? :D
- Man pages of systemd are quite nice! It's easy to learn from them. You don't even have to google, just check out the relevant man page.
I never understood systemd hate, but I guess it comes from ignorance and lack of willingness to learn about modern system design. The people who made the fork are just a bunch of hissy kids or stuck in stone age who are lazy to learn a new system IMO.