Systemd is controlled by redhat and is a very large part of the Linux stack. It’s become so universal that a lot random stuff won’t work unless the system has systemd.
Compared to X11 to wayland or pulseaudio to pipewire it’s a lot hard to now replace an init system and with that in the hands of redhat which is for profit is not a nice thought.
But you know, fuck it, having systemd is a massive headache for people making distros that’s just gone. Everyone is using the same thing and things just work so people aren’t really complaining. If redhat tries some shenanigans there’ll always be a fork or a systemd compatible init system or even whatever Alpine is using now that’ll take it’s place.
Systemd and its components are responsible for too many essential system functions. Init, services, mounts, timers, logging, network config, hostname, DNS resolution, locale, devices, home directories, boot, NTP sync, and I’m sure there are others, can be handled by systemd or one of its components.
Systemd violates the UNIX philosophy of “do one thing and do it well”. Systemd is a complex solution to a complex problem: this thread has several comments by a former Arch Linux maintainer that explains why they’ve switched to systemd, and why the earlier method of using single initscripts was unsustainable.
It is owned and maintained by Red Hat, known for its many controversies.
Some people just don’t like modern things and think that the Linux ecosystem peaked in the 1980s.
Most (though not all) of the popular complaints are completely unreasonable. Those people usually see themselves as moral and righteous and expect the world at large to follow their personal creed. I especially consider the UNIX philosophy to be outdated, and strict adherence to it to be an obstacle for modern apps and systems.
I have some issues with systemd, and I don’t like that one for-profit company has such a massive influence over the entire Linux ecosystem, but I have to acknowledge that it works, it works well enough to counter my personal issues, and that the people whose opinion matters the most (specifically Debian and Arch maintainers) chose it for a good reason.
systemd DOES do one thing really well. Too well. It’s a service manager.
People noticed that it works really well as a framework for their stuff and started plugging all the other stuff in your first bullet point into it. And that also worked really well.
My personal reasons for disliking systemd (note: I still use systemd):
The lead developer of systemd has said multiple times that we should be fine with break POSIX if it means developing faster.
systemd has massive attack surface, making it easier to exploit and result in privilege escalation. It is a highly complex and large codebase that really shouldnt be given the trust of PID 0
systemd is not portable or modular.
It only just barely got musl support. Hope to see it improve in the future.
systemd is much slower than other inits (eg. dinit, s6, openrc)
systemd being the go-to init encourages developers to more heavily depend on it, making it difficult for distros without systemd
The biggest feature I like about systemd is run0, though I wish it was a drop in replacement for sudo. Secondly, I do like that services can be sandboxed.
It’s developed for linux and there is literally 0 linux distributions that are POSIX-compliant, also standard is dead.
It doesn’t, also moving it to any other PID won’t make any difference.
It is modular (IIRC there is only three mandatory parts) and portable.
Was completely on musl side (also musl is as much not portable and modular as systemd 🙃 and in every practical way worse than glibc).
It’s not an init, nor does it present itself like this. Do you have any benchmarks that show this slowness when doing comparable operations?
Why exactly depending on a stable system component is a bad thing? Distros without systemd are moving against the stream, obviously there going to be some problems.
I see from your other comment in the thread that you’re enthusiastic about systemd, and that’s great.
I’m glad we inhabit a software ecosystem broad enough that we can both be happy
I’m not enthusiastic about it, I’m just old enough to remeber how bad were good old times before systemd and a bit miffed how old and untrue statements about it are perpetuated.
(edit) But, honestly, it’s still kind of accurate. Many of the most significant software suites that define the Linux ecosystem in more recent decades were written in the 80s or earlier. X (the display protocol) was released in 1984, and X11 in 1987. GNU Emacs was released in 1985. Vi, in 1976. UNIX System V, from which sysvinit and compatible init systems were adopted, was released in 1983. It’s not a stretch to say that certain people want to regress to the 1980s state, even if the kernel wasn’t around.
It’s a little known fact that the first answer to Linus’ first message announcing his new OS was “You stupid thing, why did you created it? It ruined it! Linux was better before!”.
“You can’t have programs that do multiple things! Any program that is multi-use is ebil. Standardized syntax and functionality between different related systems? NO! PROGRAM DO ONE THING!”
A lot of this is also a post-hoc justification, UNIX didn’t get shared libraries until some point in the 80s (Can’t find an exact year), so before that your options were to either statically compile the needed functionality into your program or keep it as an entirely separate program and call out to that.
It’s a perfect mix, in a time where enterprise storage was measured in single digit megabytes, and the only efficient way to created shared functionality was via separate programs, and you’ve got an OS that happens to have “easily pass data between programs” as a core paradigm.
And now people invoke it to attack an init program for also monitoring the programs it starts and not just spawning them.
Why are we afraid of systemd again? /gen
I came in late w/ arch-based systems so legitimately don’t know the lore.
Systemd is controlled by redhat and is a very large part of the Linux stack. It’s become so universal that a lot random stuff won’t work unless the system has systemd.
Compared to X11 to wayland or pulseaudio to pipewire it’s a lot hard to now replace an init system and with that in the hands of redhat which is for profit is not a nice thought.
But you know, fuck it, having systemd is a massive headache for people making distros that’s just gone. Everyone is using the same thing and things just work so people aren’t really complaining. If redhat tries some shenanigans there’ll always be a fork or a systemd compatible init system or even whatever Alpine is using now that’ll take it’s place.
Off the top of my head, in no particular order:
Most (though not all) of the popular complaints are completely unreasonable. Those people usually see themselves as moral and righteous and expect the world at large to follow their personal creed. I especially consider the UNIX philosophy to be outdated, and strict adherence to it to be an obstacle for modern apps and systems.
I have some issues with systemd, and I don’t like that one for-profit company has such a massive influence over the entire Linux ecosystem, but I have to acknowledge that it works, it works well enough to counter my personal issues, and that the people whose opinion matters the most (specifically Debian and Arch maintainers) chose it for a good reason.
systemd DOES do one thing really well. Too well. It’s a service manager.
People noticed that it works really well as a framework for their stuff and started plugging all the other stuff in your first bullet point into it. And that also worked really well.
My personal reasons for disliking systemd (note: I still use systemd):
The biggest feature I like about systemd is run0, though I wish it was a drop in replacement for sudo. Secondly, I do like that services can be sandboxed.
I mean, so does GNU.
Now I want a shirt that says “Linux ecosystem peaked in 1980s”
If they don’t like systemd but are forced to use it for some reason, I can understand why they might have some negative feelings
Once I switched to a distro with OpenRC, I stopped feeling the need to argue about systemd
You are forced to use a lot of things bit systemd is where you draw a line? 😺
I see from your other comment in the thread that you’re enthusiastic about systemd, and that’s great.
I’m glad we inhabit a software ecosystem broad enough that we can both be happy
I’m not enthusiastic about it, I’m just old enough to remeber how bad were good old times before systemd and a bit miffed how old and untrue statements about it are perpetuated.
Linux was released in 1991.
That makes the shirt funnier
It’s called a hyperbole.
(edit) But, honestly, it’s still kind of accurate. Many of the most significant software suites that define the Linux ecosystem in more recent decades were written in the 80s or earlier. X (the display protocol) was released in 1984, and X11 in 1987. GNU Emacs was released in 1985. Vi, in 1976. UNIX System V, from which
sysvinitand compatible init systems were adopted, was released in 1983. It’s not a stretch to say that certain people want to regress to the 1980s state, even if the kernel wasn’t around.Funny thing is, nothing in the list adheres to the so called unix philosophy.
It’s a little known fact that the first answer to Linus’ first message announcing his new OS was “You stupid thing, why did you created it? It ruined it! Linux was better before!”.
This sign won’t stop me! I can’t read!
“You can’t have programs that do multiple things! Any program that is multi-use is ebil. Standardized syntax and functionality between different related systems? NO! PROGRAM DO ONE THING!”
A lot of this is also a post-hoc justification, UNIX didn’t get shared libraries until some point in the 80s (Can’t find an exact year), so before that your options were to either statically compile the needed functionality into your program or keep it as an entirely separate program and call out to that.
It’s a perfect mix, in a time where enterprise storage was measured in single digit megabytes, and the only efficient way to created shared functionality was via separate programs, and you’ve got an OS that happens to have “easily pass data between programs” as a core paradigm.
And now people invoke it to attack an init program for also monitoring the programs it starts and not just spawning them.
even when said “one program” is actually 69 (nice) different binaries
Wait until these people find out that Linux is monolithic