www.nico.schottelius.org/blog/do-not-rely-on-systemd.mdwn

89 lines
3.5 KiB
Markdown

[[!meta title="Do not make your software rely on systemd"]]
## 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](https://alpinelinux.org/),
[Devuan](https://www.devuan.org/) or [OpenWrt](https://openwrt.org/)
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.
[[!tag foss systemd unix]]