Permanently Deleted
To imply that systemd is merely an init system is ingenuous at best and dishonest at worst - systemd is so much more than an init system, as that article mentioned. Since the article was written in 2014 systemd has grown massively in scope, even more than the author feared.
It manages DNS, home directories, system services, seat managment, cron, system logging, booting... the list is ever growing. As such many people fear it is becoming too dominant through making more and more software dependent on it. It is not atomic - it is very difficult to have just one piece of systemd as its parts are tightly integrated and inter-dependent.
One could even claim that systemd failed in it's original remit - to make startup as fast as macOS by running tasks in parallel and by deferring service startup until they are actually needed. The result has been a not very performant init system - many init systems are faster eg runit, dinit. The systemd people now claim that speed is not a design goal.
It is, however, open source and very widely adopted. Most people don't care - they just want to run their browser and word processor.
I came across this blog - What is systemd and Why Should I Care?
A 2014 blog post by someone with the bio "Software Engineer at Microsoft, currently working on Outlook for iOS" should not be a significant influence on the choices you are making about your usage of GNU/Linux in 2023 :)
I use Artix Linux with runit and am happy. Artix offers multiple init systems other than systemd. If you're familiar with using Arch Linux, basically Artix is the same without systemd.
You can install the various ISOs and see the differences for yourself, but the complaints launched against systemd that have any validity are either technical and/or philosophical in nature.
In a lot of ways, systemd has become like the JavaScript of init systems in that it handles a lot more than what it originally was needed for (init starts other processes after boot, JavaScript adds small amounts of interactivity to web pages).
As opposed to what each became (systemd now handles DNS, cron, bootloader, and is a suite of tools tightly coupled with the init system) (JavaScript has now become a scripting language with access to the C level exec library to the point where an OS can and has been written in it).
In the early days of systemd adoption, there was much controversy over its seemingly sudden mass adoption. SysV init needed a modern replacement, and indeed, alternatives like Upstart, openrc, and others were in production to eventually replace it. Lennart Poettering and Kay Sievers over at Red Hat created and heavily promoted systemd.
Lennart was already somewhat beloved/hated in the community as he had developed PulseAudio, which was a boon over the previous Alsa implementation, but was considered bloated and unnecessary by the less audio oriented Linux users of the time. He was inspired to create systemd after researching Apple's new init implementation, launchd.
Controversy spread as Lennart would dismiss adoption of systemd into the BSD family of UNIX like OSes. He also dismissed competitors like Upstart, as their implementation of certain modern features like CGroups was not as developed as systemd at the time. Additionally, Linux users at the time were heavily concerned that Red Hat was trying to take over the entirety of the Linux space, enforcing a more corporate and commercial influence on what had previously been a community more in line with the aims of the FSF.
Much of this culminated in a months long email exchange on the Debian email list, where many of these grievances, pros and cons of systemd adoption, and overall discourse around this topic took place in 2013-2014. Eventually the result was that Debian adopted systemd as the default init system, which along with Fedora, Arch, and other distros, sealed the fate of other alternative init systems as being fringe, out of date, and irrelevant.
More and more system admins would learn the ins and outs of systemd as it would become required for their jobs, and the criticism of systemd became more and more quiet as it just became part of the every day Linux experience.
Truth be told, the birth of systemd really heralded in the death of the UNIX philosophy as an old way of thinking about software development and program scope. Doing one thing only, and doing it well, while looking good on paper, and oftentimes is a good general rule of thumb, doesn't apply to modern application development, for better and worse.
I personally like runit not for its speed, but for its simplicity. I can peruse the C code in an afternoon and appreciate it for what it is, an init system. I can't say the same when I look at systemd's code.
But most could care less. As long as it works. And all the power to them...
It does surprise me somewhat, however, that Linux users will condemn bloated browsers, electron apps, and text editors, but will give a pass to systemd, which holds so much more importance over whether pid 1 even launches and starts user space.
Let the downvoting commence.
systemd has become like the JavaScript of init systems
Likening systemd to JavaScript is incredibly inappropriate.
systemd now handles DNS, cron, bootloader, and is a suite of tools tightly coupled with the init system)
No. Except for the cron replacement, all of those are stand-alone tools that can be run with systemd, without systemd or replaced with any alternative.
They just happen to be developed under the systemd project umbrella and are obviously tested to work well with another.
This argument is especially weird for systemd-boot; it's not even a Linux program ffs.
There are some components that are harder to replace with alternatives but mostly because no good alternatives exist. Systemd might be partially to blame here in how easy it is those parts can be ran independently and replaced with equals and you could certainly criticize it for that but you didn't even mention one of them.
Truth be told, the birth of systemd really heralded in the death of the UNIX philosophy
There is no truth in this sentence.
Doing one thing only, and doing it well, while looking good on paper, and oftentimes is a good general rule of thumb, doesn't apply to modern application development, for better and worse.
What? Please google "Microservices".
Your whole wall of text hinges on the assumption that systemd is a simple "init system"; a root process spawning a set of other processes. This is false.
systemd (as in: PID1) does service management, not init. It happens to also fit into the "job description" of init because starting and cleaning up dead services also fall under the responsibility of a service manager but reducing it to just an init system is just plain wrong. All the other things are handled by separate components/processes.
Thus, it still follows the "unix philosophy". The "one thing" it does simply isn't what you think it does.
It's like saying
cp
doesn't follow the UNIX philosophy because you could copy files withcat
.cat
is soo much simpler to understand, why would anyone ever use the bloatedcp
? Must be the pesky commercial influence of Bell labs!Truth be told, the birth of
cp
really heralded in the death of the UNIX philosophy.Hyperbola has the best vision for a clean and libre general-OS.
Yes, they very strict about the interpretation of "libre", but that makes the vision pure and crystal clear.
Gentoo took the (imo) correct approach by providing users choice as well.
Systemd is what most programs and systems have come to expect, and you shouldn't bother changing your init system unless you have a VERY GOOD REASON.
Some people hate it for not following the unix philosophy of doing one thing and doing it well, but at this point nothing does except stuff like
cat
.actually many "Unix people" got mad at cat becoming "bloated", because of options like -v (which escapes nonprinting characters)
is there any reason why I should even care about the freedom of init system?
Freedom of choice! It's troublesome if distros and/or DEs rely so heavily on systemd to do their bidding. So much so, that some combinations of distro + DE don't allow any differentiation in init or make it very cumbersome and unwieldy at best. I'm not interested in making systemd a necessary part of Linux. Therefore other inits not only have to exist, but should be 'competitive' as well. Which, to be frank, is currently not the case.
Another concern is that systemd is by no means a minimalist approach. Which beyond bloat, also has security implications. More information can be found in this (infamous) guide by Madaidan; security researcher on multiple distros known for taking security and privacy very seriously like e.g. Kicksecure and Whonix. Interestingly, while Madaidan discourages the use of systemd in that guide, it's still heavily relied on in Kicksecure; one of the distros he works on. I think this is a perfect illustration of how systemd has become so good that even opponents can't deny its merits and continue to make use of it for the time being out of necessity.
So much so, that some combinations of distro + DE don’t allow any differentiation in init or make it very cumbersome and unwieldy at best.
it’s still heavily relied on in Kicksecure; one of the distros he works on. [..] this is a perfect illustration of how systemd has become so good
Considering Kicksecure is based on Debian, aren't you contradicting yourself?
How so? I literally don't see it. My apologies if I come across as obnoxious, but I simply don't understand how I might have contradicted myself. I never explicitly mentioned Debian anyways, so why did you feel the need to mention that as somehow being related to a supposed contradiction.
Fine, i'll bite, i'm bored.
Interestingly, while Madaidan discourages the use of systemd in that guide, it’s still heavily relied on in Kicksecure; one of the distros he works on.
While you didn't explicitly state it, it's a distro that's based on Debian, so, has to be based on systemd.
I think this is a perfect illustration of how systemd has become so good that even opponents can’t deny its merits and continue to make use of it for the time being out of necessity.
No, not at all. You said it yourself:
It’s troublesome if distros and/or DEs rely so heavily on systemd to do their bidding. So much so, that some combinations of distro + DE don’t allow any differentiation in init or make it very cumbersome and unwieldy at best.
So trying to use Kicksecure without systemd would be very cumbersome and unwieldy at best. Perhaps Madaidan should've used Devuan as a starting point instead.
In case you're bored enough to read my ramblings and/or interested in what I understood and how, then consider reading the spoiler below.
spoiler
Fam, you're all over the place.
Because you did an awful job at pointing at the supposed contradiction, I'll have to analyze your excuse of an elaboration so that it somehow starts to make sense if at all:
A contradiction consists of N statements that logically contradict with each other; for the sake of making it more precise we'll refer to these statements as P, Q, R, S etc. After we've established this, we can move on to find what these alleged statements are from your comments. My best take would be:
(Supposed) Contradicting Statements:
- P: systemd is the only init that's beyond a particular level of excellence and/or feature set.[1]
- Q: Some combinations of distro + DE are cumbersome and unwieldy at best if systemd is not used.[2]
Perhaps some other related statements that are either implied or a given/fact:
- R: Kicksecure uses systemd as its init.
- S: Modern distros use an init.
- T: Default init is chosen based on preference[3].
- U: Kicksecure has to use systemd because P despite not being in favor of some aspects of its design.
Please feel free to notify me if I missed the mark!
Don't you think that P and Q are actually complementary to one other?
No, not at all.
The crux might be here. But I'm not sure where exactly you might have tripped over. Was it because I said "opponents" instead of "(some) opponents"? Was it because I said "out of necessity", while elsewhere I said "don’t allow any differentiation in init or make it very cumbersome and unwieldy at best", but in this case they aren't contradictory statements. Was it the fact that Devuan exists? But, this assumes that any of the inits found on Devuan are somehow as mature and feature-rich as systemd. Which, unfortunately, is simply not the case. (I'm hopeful that dinit and s6 might reach maturity soon, though.)
So trying to use Kicksecure without systemd would be very cumbersome and unwieldy at best.
Exactly, that was my point.
Perhaps Madaidan should’ve used Devuan as a starting point instead.
It's a team effort, I don't even know if he started working on Kicksecure from its inception[4]. They might also simply be victims of the sunk-cost fallacy. Furthermore, I wouldn't be surprised if -to them- systemd's pros simply outweigh its cons. Which, curiously, gets us back to the entire point of my original comment; viable alternatives to systemd don't exist. This painful truth is not only sad and unfortunate, but perhaps even worrisome for the future of Linux.
- From: "systemd has become so good that even opponents can’t deny its merits and continue to make use of it for the time being out of necessity"
- From: "some combinations of distro + DE don’t allow any differentiation in init or make it very cumbersome and unwieldy at best."
- Preference is arguably too broad of a term, but I wanted to make clear that distro maintainers have different priorities.
- This page suggest otherwise, simply because someone else is referred to as founder. Though, ultimately, I don't know.
If not 😜; did I understand you correctly in that the mere existence of Devuan is the supposed contradiction?
Big spoiler there.
I don't think systemd is the epitome of technological evolution, but that's another rant. The fact that it's not just another init system is at the center of it, though.
Because it's not, any distro that chooses to use it is, in fact, adopting a whole ecosystem. Some apps that predate systemd are even hard-depending on it for... reasons. Can you use GNOME without it? Why most distros adopted it as default instead of an alternative i can only speculate. At least Slackware hasn't adopted it so far and Gentoo took, to me, the sanest approach: you can choose your init system, including systemd if you so prefer.
Devuan is the response to Debian choosing systemd. It's its raison d'être, to be Debian without systemd.
I was unaware of Kicksecure, who their founder is and when they decided to adopt systemd, so i may be at fault here.
With this i agree:
It’s troublesome if distros and/or DEs rely so heavily on systemd to do their bidding. So much so, that some combinations of distro + DE don’t allow any differentiation in init or make it very cumbersome and unwieldy at best.
With this, i don't:
systemd has become so good that even opponents can’t deny its merits and continue to make use of it
And this is where i think you've contradicted yourself. IMO, the only reason opponents use it is not because it's so great but because it's so entrenched in whichever distro they're using.
Thanks a lot for this excellent write-up! I believe it has successfully fulfilled its purpose.
To make myself absolutely clear: I believe that we agree on our general sentiment towards systemd; I don't like how it has almost ostracized other inits, nor do I like how ever-impactful it has become across the board so much so that even the most established DE (read: GNOME) has had hard dependencies to systemd in the past[1].
And this is where i think you’ve contradicted yourself. IMO, the only reason opponents use it is not because it’s so great but because it’s so entrenched in whichever distro they’re using.
Got it! I see now why you might have perceived that as a contradiction. And honestly, you might be correct! I assumed that systemd is used for how it might enable the full system AppArmor policy[2] and other features that Kicksecure has become known for. Honestly, I'm not an expert on Kicksecure myself. I just like the project and even try to import some of their systemd-related features and/or configs on my daily driver.
Based on past readings, the idea that systemd was (ironically) still preferred on Kicksecure for security-related features stuck with me. But, honestly, it could have been my misunderstanding and instead they might have chosen to make the best out of it as not using systemd would have increased the maintenance burden tremendously.
This conversation has opened the possibility to me that Kicksecure's maintainers might have stuck to systemd for non-security reasons. Ultimately, your contribution by addressing that point has been immense. Thank you so much for the insight and for being patient with me 😊!
- I believe this has since been resolved.
- Based on the following statement: "AppArmor can do this by loading a profile for systemd in the initramfs." found here
not on the level of a power user
Learns kernel basics
Bro i think you may be underestimating yourself
I think the init system matters A LOT! Systemd is anti-unix-style and making it a "new default" and forcing it, by depending on it, is breaking the best os-design there is: the unix-like system. (who changes it will be forced to reinvent it...better stay close to the original vision in the first place)
the best os-design there is: the unix-like system.
Couple of questions:
- Is there even any scientific basis to this statement?
- If yes, would you be so kind to cite sources as I got trouble finding peer-reviewed articles on the matter.
- If not, would you be able to make a logically sound argument on why that is the case?
- Why Unix-like and not Unix? Wouldn't Unix be the actual "original vision"?
-
There is not a scientific proof YET, but i think it can be done: for that we would need to program the "corner-stone", which would be the *nix-program #1 - something that could show practically what the pioneers of the *nix system envisioned. This practical proof is possible, if we deep dive into the POSIX definition to analyze for what it was made.
-
unix is a trademark, but what counts is the architectural vision behind it (D. Richie&co.) I think it would be better to avoid the tradmarked word (sry for using it) - *nix may be a proper word (although it implies that it is a whole group)
https://en.wikipedia.org/wiki/Unix_philosophy
"...This style was based on the use of tools: using programs separately or in combination to get a job done, rather than doing it by hand, by monolithic self-sufficient subsystems, or by special-purpose, one-time programs."
The more you learn about the original vision,. .. it is kind of terrifingly brilliant and powerful. The architects knew exactly what they were doing. That's why in the late 70's they tried the keep it from the public! (you can send thx to rms - he opened it up for us)
-
- Is there even any scientific basis to this statement?
the *nix system up to the shell enviroment needs to be clean, libre and true to the vision - everything beyond may be. .. whatever...
If you're into kernel hacking, you may consider supporting the HyperbolaBSD project, which seems much more promising than hurd.