I’ve been watching people go to war over SystemD for a few years now, it seems, and I just realized that I’m not sure exactly what the fuss is about.
SystemD is a service initialization mechanism for Linux. It replaces a few older packages, like SysVinit.
A lot of people seem to hate it with passion.
As I’ve said, I’m not entirely sure why; I understand why one wouldn’t want to necessarily change something solely for the sake of change, and I fully sympathize with that – but at the same time, the protests seem unreasoned.
I’ve seen things like “it doesn’t respect initialization order,” for example. Except it does; you can easily declare what services a given service needs to have already running. This has worked for me; even if it didn’t work, the fact that it’s part of the specification for SystemD means that a failure would be a bug, not a problem with SystemD as a concept.
Security is a concern for SystemD – as it wants control of things that SysVinit did not. This assertion of control is a serious problem – but it’s not necessarily a problem with SystemD, and has more to do with how correctly written other programs were, and how fully specified a given service’ configuration is.
I’m not suggesting that SystemD’s security is an excuse to just complain about programs apparently broken by SystemD’s process model; I’d rather SystemD work with those programs, regardless of what they are. But – realistically – such programs are poorly behaved and should be fixed, even for SysVinit – SystemD is simply exposing a problem already there. Blaming SystemD isn’t the solution.
SystemD’s upgrade path – requiring a reboot to be executed – is a bigger problem, and one I’d fully understand. I’ve had systems that were up for more than a year without reboots – when I finally updated the servers, I grieved. But at the same time, I think this is a solvable problem – just like with the Linux kernel itself. Maybe SystemD can be made more modular, loading dynamic objects at runtime, allowing a “restart” to reload the modules instead of rebooting entirely.
Personally? I found SystemD to be much easier to work with than SysVinit. I don’t harbor any resentment or amusement at those who dislike it, but I can’t say I fully understand the point – yet.