There are two ways two handle service management -- sysvinit style, with the mess of pidfiles and number of other problems, and supervision style, solving all this mess. There are several different implementations of these ideas, all different in other aspects, but that is not the point.https://blog.darknedgy.net/technology/2015/09/05/0/
Even systemd developers, evil and misguided beyond salvation, could see the truth and made supervision style the default. Yet, systemd also supports managing daemons that double-fork.https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=
Support for double-forking daemons adds complexity, not only to systemd but also into Linux kernel itself. The lead developer of systemd managed to push a patch that introduces the concept of sub-reaper into the kernel, to handle this case -- the case of misbehaving daemons. Instead of fixing broken software, the brokenness was blessed into the new norm.https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ebec18a6d3aa1e7d84aab16225e87fd25170ec2b
Workarounds on top of workarounds. I encounter it every day on my $dayjob. The whole world is a mess because nobody has time to cooperate and fix the root of the problem; everybody must fulfil their momentary wishes right now.
I understand why businesses (and systemd(8) is a business) do it -- they have no values except monetary ones. The last thing any business wants is to be the only contributor to the common good. The tragedy of the commons.
But how it happened that the whole hackerdom got stuck in the Nash equilibrium? One would expect that path of advancement led by intelligent people, united by hacker values, would be more straight and direct than the path of the blind watchmaker. Not the case.