TL;DR

Do not make your software rely on systemd.

Introduction

There is some software out there that is leaning towards requiring systemd. This will render that software unusable on non-systemd Linux distributions. If you develop software, I urge you to not rely on systemd features, because there are many situations in which you cannot use systemd.

The Open Source community

While for many of you systemd might be something you use on a daily basis, there is a big part of the Open Source community that does not use systemd, for a variety of reasons. Without going into detail, systemd does not exist in a variety of Linux distributions like Alpine Linux, Devuan or OpenWrt nor on the BSDs.

However, even if it existed, people might choose to opt-out of the systemd ecosystem because of compatibility, security, stability or any other kind of reason.

Why are we building Open Source Software?

The Open Source / FOSS movement originated many years (decades!) ago with the goal of creating usable systems. Systems that are not locked in, systems that allow you to freely modify software and eventually: support a wider audience, be more inclusive.

Majority is not the right argument

If you assume that everyone has a systemd environment, I need to raise a flag here: you are not the majority. If you are using that line of argument, I will answer with: the majority of systems is running Microsoft Windows, so all software should be written only with Windows in mind. And that is problematic, because you are fully dependent on a single vendor with an ecosystem that one cannot change.

Now, you can argue that systemd is Open Source and it could be modified. While in theory this is true, the systemd authors do have strong opinions that conflict (details omitted here intentionally) with others. In this regard, systemd is similar to a closed ecosystem, because it does not make everyone benefit from it.

Problematic direction

Recently I see some software that assumes the existence of systemd by default. Either by using it as a cgroupdriver or by relying on systemctl. While some software can be patched, the notion in the documenation inclines towards "systemd only support". And that is the reason why I am writing this blog

systemd is not for everyone

You can argue for hours or days whether feature x of systemd is good or not. However it is a fact that systemd is not for everyone and it is not suitable for every situation that Open Source software usually operates in.

Forcing systemd on users does not work (and is not even realistic).

Even if you had the means to try forcing people into systemd, it simply does not work, because it is not suited for running on embedded systems for instance.

Call for action

I am aware that generations of hackers have changed, that Open Source has become much more accessible and that not everyone using Open Source is a hacker anymore. That is not a problem, but actually a significant achievement of the Open Source community. But it also means that we have more diversity and a broader audience.

However we shall not forget our roots and why Open Source Software actually works: it is because we work together and respect different approaches and we try to be inclusive. In terms of systems, as well as humans. That said, I really urge you:

Respect diversity, do not rely on systemd in your software.