The real motivation behind systemd

Posted on 2018-05-01. Last updated on 2020-01-28.
In this article we're going to take a closer look at the real motivation behind the development of systemd, and we're going to take a look at some of the future perspectives for GNU/Linux as an operating system.

Let's begin by taking a look at some facts.

Fact 1: systemd is originated by Red Hat

Lennart Poettering and Kay Sievers who started the systemd project in 2010 are both Red Hat employees. Initially systemd was released as a new init system, but it has slowly grown into what Poettering describes as "a suite of software that provides fundamental building blocks for a Linux operating system." This is by design, not by coincidence.

The official reason for the development of systemd was described as:

They wanted to improve the software framework for expressing dependencies, to allow more processing to be done concurrently or in parallel during system booting, and to reduce the computational overhead of the shell.

Fact 2: The primary reason for developing systemd is Red Hat's interests in embedded devices

Red Hats primary business is in embedded devices, and the primary concerns addressed by systemd by design is embedded devices, such as the work towards removing /etc.

In an interview with Red Had CEO Jim Whitehurst he states:

We partner with the largest embedded vendors in the world, particularly in the telecom and automotive industries where stability and reliability is the number one concern. They easily adapted to systemd.

Mentor Automotive has released their slides from a 2015 event In these slides the many benefits provided by systemd to the embedded automotive market is fairly well explained. The reason why they "easily adapted to systemd" is because systemd is specifically designed to suite their needs.

In 2012 Lennart Poettering changed the systemd license from GPL to LGPL in order to better suit the embedded market.

Fact 3: Red Hat want's to become "the next Microsoft Windows"

This is the secondary objective of Red Hat which is illustrated by Lennart Poetterings slides from FUDCON + GNOME.Asia Beijing 2014. Go to page 15 and scroll slowly forward to page 19. Eventually you end up with the project objectives:

Combined with the next set of slides that display the market Red Hat want's to target:

Red Hat has some "great" future plans for the Linux community.

Fact 4: Red Hat needs the other major Linux distributions to cooperate

If Red Hat was ever going to succeed in their long term plans for developing the "Internet's Next Generation OS" they knew they needed to somehow influence the other major Linux distributions. The reason for this is that if a major Linux distribution like Debian was going to reject systemd, Red Hat wouldn't be able to proceed with their plans because to many third party projects simply wouldn't care about how Red Hat would like things to work. This is important because most Open Source projects develop software with POSIX compatibility in mind. As such they try to make sure that their project compiles and works on several Unix-like operating systems. This is something that isn't in the interests of Red Hat because POSIX complicates things a lot for embedded devices. As long as you have to consider other operating systems such as Solaris, FreeBSD, OpenBSD, etc., Linux is "held back" when compared to functionality in Microsoft Windows. Functionality such as easy mounting and unmounting, simple privilege escalation, and much more.

The tactics deployed by Red Hat was to try to get as many "important" third party projects to cooperate very tightly with systemd, or even depend upon systemd. This way other Linux distributions are more easily persuaded into adopting systemd because of the easy integration of these third party projects. The systemd developers addressed several third party projects and tried to convince them to make their projects either depend upon systemd, such as the attempts made by Lennart Poettering on the Gnome mailing list, and the attempt made by Red Hat developer "keszybz" on the tmux project. Most of these attempts were originally "disguised" as technical issues, however when you read the long email correspondence on the Gnome mailing list and elsewhere, the real intent becomes quite clear.

Other "tactics" deployed by Red Hat was hiring developers from GNOME and other Linux distributions, such as Debian, and then have these people promote systemd internally.

Eventually the GNOME project became tightly integrated into systemd and Red Hat and GNOME are now working towards their goals related to the "new Linux desktop".

Consequences

One of the results of all of the above has been a huge uproar in the Open Source Linux community in which Debian Developer Joey Hess, Debian Technical Committee members Russ Allbery and Ian Jackson, and systemd package-maintainer Tollef Fog Heen resigned from their positions. All four justified their decision on the public Debian mailing list and in personal blogs with their exposure to extraordinary stress-levels related to ongoing disputes on systemd integration within the Debian and open-source community that rendered regular maintenance virtually impossible.

In December 2014 a group calling themselves the "Veteran Unix Admins" announced a fork of Debian called Devuan that intends to provide a Debian variant without systemd. Devuan 1.0.0 was released on May 26, 2017.

We believe this situation is also the result of a longer process leading to the take-over of Debian by the GNOME project agenda. Considering how far this has propagated today and the importance of Debian as a universal OS and base system in the distribution panorama, what is at stake is the future of GNU/Linux in a scenario of complete homogeneization and lock-in of all base distributions.

Therefore, looking at how the situation stands today: we need to fork.

The main problem with systemd is that its continued development is motivated by a company's economic interests and not the Open Source Linux community interests. As time goes by more and more "issues" will most likely pop-up and the other major Linux distributions will possibly regret the integration and adoption of systemd into their projects. Not because of systemd as an init system in itself, systemd init is pretty good and Lennart Poettering and Co. has contributed and implemented some great features. What I mean by "issues" is not the software bugs, but the way user concerns, privacy concerns, and other important security issues are dealt with by Lennart Poettering and Co.

Hard coded DNS servers in systemd-resolved is another great issue with privacy.

Lennart Poettering explained that the hard coded values should be there in case of catastrophic failure of configuration files, and a lack of DHCP on the network (the DNS fallback is changeable but requires a recompile). However, that's the "embedded developer" speaking. If a bug is found in the application that makes these DNS servers run even though you have disabled them, or if a race issue bug is found, you could be facing a serious privacy issue. Futher more running with Cloudflare, Quad9, and Google DNS servers hard coded into the systemd code is deeply problematic as these companies are not only know for violating peoples privacy, but also because NSA has infiltrated Googles data centers, something revealed by the Snowden documents. Such settings should never be opt-out (where you have to remember to remove them), they should be opt-in, and definitely not the default options.

The way these issues are dealt with shows a disregard for user privacy and for the interests of the Open Source Linux community.

Currently Red Hat still treads "carefully", but once they get much closer to their main objectives, they will most likely become more "aggressive" in their management style of systemd and the world of Linux will probably change dramatically as a result - then it will be difficult and very time consuming to "fix" things.

Other perspectives

From a technical perspective I don't believe there is anything wrong with systemd as an init system. However, you can no longer just get the systemd init system as more and more components are getting tightly integrated into systemd, such as udev (systemd-udev). This is happening because the systemd project is paving the way for Red Hat's plans for Linux as a desktop distribution. As a result the init freedom in GNU/Linux has been compromised, which is a real problem as several other init solutions provides solid replacements. OpenRC already existed before systemd and it is a great init system fully capable of starting services in parallel too.

systemd was originally launched as an init system, but Lennart Poettering no longer describes systemd as an init system, he now describes systemd as a "never finished, never complete, but tracking progress of technology" project. Lennart Poettering has also described systemd as unifying "pointless differences between distributions".

The differences between GNU/Linux distributions has never been pointless, they have been about freedom. The freedom to put together an operating system from multiple different components in a way you see fit. Sure, from a system administration point of view, having only one way to deal with multiple GNU/Linux distributions makes the work more easy, but there is more to a GNU/Linux distribution than just system administration.

Because systemd has managed to get integrated so tightly into some of the biggest GNU/Linux distributions, they have also managed to make many system components depend upon systemd features. For those components that either didn't cooperate or just didn't fit into the bigger systemd picture, they created a "systemd-*" replacement part. And the list keeps growing.

systemd has become huge and it contains more than a million lines of code.

Final comments

I ended up really liking systemd as an init system and as a system administration tool, but it is important to look beyond the technical perspectives of a system when suddenly things are designed purely for the benefit of a financial corporation. It is especially important when privacy is compromised because of bugs in services with tight integration into solutions provides by untrustworthy American companies.

Many much better alternatives to several systemd components exist, including even the init system itself, that doesn't require a tight integration of anything. Such components serves a much greater purpose with regard to the freedom of choice when putting together any kind of Unix like operating system.

It's a real shame because systemd also has some great solutions and ideas, but in the end Red Hat is leading the development (even though others also contribute), and they keep pushing forward towards their future goals for GNU/Linux. And most likely, if you care about all of the things that used to make GNU/Linux great, then that's about to slowly go away.

If you have any comments or corrections please feel free to email them to me. Also, if you found this content useful consider supporting me on Patreon