The Asocial

systemd

History and current state

Image source Image source
Article date October 6, 2016
Category computing

Once upon a time, there was a guy named Lennart Poettering, who was involved into edgy projects such as PulseAudio (the monster sound server that runs on top of ALSA driver, leading to half the sound problems – the other half is caused by ALSA) and Avahi (an implementation of mDNS and related things – one of those programs that seem to rarely be used outside of corporate environments). The monstrosity of both is comparable to that of D-Bus, which is actually used by both. It shouldn’t be a surprise that Lennart currently works for Red Hat – a company responsible for things such as NetworkManager and other abominations.

Back in 2010, Lennart started working on systemd. There already was a variety of init systems, but the most widely used ones were rather messy: non-portable across systems shell scripts for daemons alone were quite a pain to deal with. In November 2010, systemd got into Fedora (RHEL beta) repositories, and became default there in May 2011. Journald (its logging system) was criticized by rsyslog author in 2011. In 2012, the Slackware author claimed that systemd violates UNIX philosophy. By 2015, it already ate udev, implemented its much criticized logging system, a login shell, and grew a bunch of other components, for what it has been criticized – as well as for being Linux-specific, doing half-assed job, and so on. Yet, after a long debate, in April 2015 it became default in Debian. There’s more of systemd history, which mostly consists of criticizm, in the Wikipedia article.

Though systemd finally made daemons easily portable across major Linux-based systems, it made them incompatible with other Unix-like systems, and with a few Linux-based ones that continued to resist – such as Slackware and Gentoo.

Somewhere along the way, we’ve got the “boycott systemd” campaign, a systemd-free Debian fork, and without-systemd.com wiki. But that’s not all: now we’re getting things such as “How to Crash Systemd in One Tweet” (the title is actually misleading and weird, but the article is rather interesting) and “systemd is the best example of Suck” by suckless.org.

Systemd is not the first attempt to fix the init mess: “A history of modern init systems (1992-2015)” gives a nice outline of those, with occasional config examples. Yet it’s the one that was backed by Red Hat, what contributed to both development and the wide adoption.

To be fair, Linux kernel itself is huge and monolithic, and the tools that were widely used before systemd are not much better. There’s the monstrous, often monolithic and bloated, often by Red Hat or GNOME and resembling MS Windows, “enterprise” junk with D-Bus and stuff on one side, and the swamp of old, often bloated because of compatibility with the most obscure systems, and heterogeneous junk on the other.

It would be nice to point out some articles that show systemd in a good light for a contrast, but currently the “systemd good” search query yields results such as “Meet systemd, the controversial project taking over a Linux distro near you”, “Systemd: Harbinger of the Linux apocalypse”, “Is systemd as bad as boycott systemd is trying to make it?”, followed by Wikipedia, suckless, ArchWiki, some tutorials, and more criticizm.

Well, at least it reached its alleged goal of being more like MS Windows: very few people seem to like it, yet it is used widely.

One of the lessons to learn from this is the following: fix your stuff in time, or Lennart will do it, and nobody will be happy.