From just a purely end-user perspective, systemd is an application that I’ve come to like a lot. And I think that its adoption by all Linux distributions will make it easier to manage Linux systems.
But it has come under heavy criticism from some quarters – for trying to be a Swiss-army-knife-type application. One that does practically anything and everything, which the critics claim is against the UNIX/Linux philosophy of coding an application to do one thing and do it well.
For those who are not yet familiar with systemd, here’s a short and to-the-point description of that it is:
systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux control groups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. It can work as a drop-in replacement for sysvinit.
To the critics, all those capabilities are exactly the problem with systemd. And they feel so strongly about their position that they set up a website where they listed all the ills of systemd. And I must say that many of the points they list on that website make sense. Here’s the first one:
systemd flies in the face of the Unix philosophy: “do one thing and do it well,” representing a complex collection of dozens of tightly coupled binaries1. Its responsibilities grossly exceed that of an init system, as it goes on to handle power management, device management, mount points, cron, disk encryption, socket API/inetd, syslog, network configuration, login/session management, readahead, GPT partition discovery, container registration, hostname/locale/time management, and other things. Keep it simple, stupid.
That makes sense, if you think about it and what could go wrong. Here’s another point:
systemd doesn’t even know what the fuck it wants to be. It is variously referred to as a “system daemon” or a “basic userspace building block to make an OS from”, both of which are highly ambiguous. It engulfs functionality that variously belonged to util-linux, wireless tools, syslog and other projects. It has no clear direction, other than the whims of the developers themselves. Ironically, despite aiming to standardize Linux distributions, it itself has no clear standard, and is perpetually rolling.
I’m really not sure where I stand on that, because I really don’t mind having an application that does a bunch of stuff, provided it does them well. One question I have is this: If the guys behind http://boycottsystemd.org/ are right, and I’m not sure whether they are or not, even though some of the issues they raise make sense, why did the people responsible for the development of the major Linux distributions accept it as a replacement for old init system?