Summary: Systemd has been widely adopted by Linux distributions, but many developers hate it. If you're not a Linux or Unix developer, you've never heard of systemd,
the new Linux-specific system and service manager. In Linux developer
circles, however, nothing else ticks off many programmers more than this
replacement for the Unix and Linux's traditional sysvinit daemon.Many Linux developers think systemd tries to do way, way too much for an init program.
Systemd provides a standard process for controlling what programs run
when a Linux system boots up. While systemd is compatible with SysV and Linux Standard Base (LSB) init scripts, systemd is meant to be a drop-in replacement for these older ways of getting a Linux system running.
Systemd, which was created by Red Hat's
Lennart Poettering and Kay Sievers, does more than start the core
programs running. It also starts a journal of system activity, the
network stack, a cron-style job scheduler, user logins, and many other jobs. That may sound good to you, but some developers hate it.
On the site Boycott Systemd, the authors lash out at systemd stating:
"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.”
Because systemd puts so many of a program's eggs in one system
basket, systemd's critics argue that "there are tons of scenarios in
which it can crash and bring down the whole system. But in addition,
this means that plenty of non-kernel system upgrades will now require a
reboot. Enjoy your new Windows 9 Linux system!”
They go on to argue that systemd's journal files, which are stored in
a binary format, are potentially corruptible. In addition, they find
that systemd is incompatible with other members of the Unix operating
system family. They also flaw it for its "monolithic, heavily
desktop-oriented,” design, which makes it a poor choice for many Linux
use cases Poettering has addressed these concerns
many times since systemd appeared but the criticisms keep coming. What
makes all this arguing over systemd especially odd is that, despite all
this hate, it's been widely adopted. The GNOME 3.8 desktop and newer now requires systemd. Fedora, Red Hat's community Linux, was the first major distribution to start using it as a default. Since then, Debian Linux, openSUSE, and Ubuntu have all adopted systemd.
So what do Linux's leaders think of all this? I asked them and this is what they told me.
Linus Torvalds said:
"I don't actually have any particularly strong opinions on systemd
itself. I've had issues with some of the core developers that I think
are much too cavalier about bugs and compatibility, and I think some of
the design details are insane (I dislike the binary logs, for example),
but those are details, not big issues."
Theodore "Ted" Ts'o, a leading Linux kernel developer and a Google
engineer, sees systemd as potentially being more of a problem. "The
bottom line is that they are trying to solve some real problems that
matter in some use cases. And, [that] sometimes that will break
assumptions made in other parts of the system.”
Another concern that Ts'o made — which I've heard from many other
developers — is that the systemd move was made too quickly: "The problem
is sometimes what they break are in other parts of the software stack,
and so long as it works for GNOME, they don't necessarily consider it
their responsibility to fix the rest of the Linux ecosystem.”
This, as Ts'o sees it, feeds into another problem:
"Systemd problems might not have mattered that much, except that GNOME
has a similar attitude; they only care for a small subset of the Linux
desktop users, and they have historically abandoned some ways of
interacting the Desktop in the interest of supporting touchscreen
devices and to try to attract less technically sophisticated users. If
you don't fall in the demographic of what GNOME supports, you're sadly
out of luck. (Or you become a second class citizen, being told that you
have to rely on GNOME extensions that may break on every single new
version of GNOME.)”
Ts'o has an excellent point. GNOME 3.x has alienated both users and developers.
He continued, "As a result, many traditional GNOME users have moved
over to Cinnamon, XFCE, KDE, etc. But as systemd starts subsuming new
functions, components like network-manager will only work on systemd or
other components that are forced to be used due to a network of
interlocking dependencies; and it may simply not be possible for these
alternate desktops to continue to function, because there is [no] viable
alternative to systemd supported by more and more distributions."
Of course, Ts'o continued, "None of these nightmare scenarios have
happened yet. The people who are most stridently objecting to systemd
are people who are convinced that the nightmare scenario is inevitable
so long as we continue on the same course and altitude.”
Ts'o is "not entirely certain it's going to happen, but he's afraid it will.
What I find puzzling about all this is that even though everyone
admits that sysvinit needed replacing and many people dislike systemd,
the distributions keep adopting it. Only a few distributions, including Slackware, Gentoo, PCLinuxOS, and Chrome OS, haven't adopted it.
It's not like there aren't alternatives. These include Upstart, runit, and OpenRC.
If systemd really does turn out to be as bad as some developers fear,
there are plenty of replacements waiting in the wings. Indeed, rather
than hear so much about how awful systemd is, I'd rather see developers
spending their time working on an alternative.
No comments:
Post a Comment