Comment by PhilipRoman
9 days ago
Systemd makes me sad because 99% of what I like about it could have been implemented in a modular fashion, but instead it's mostly all-or-nothing. I still use OpenRC on servers, but I have to implement or integrate a lot of the missing features, like all the cgroup/namespace stuff, logging, etc.
This. I don't like that it's not modular, and that more and more projects simply depend on on it. It feels like it makes it harder to not have systemd.
Which makes sense for systemd if their goal is to kill the "competition". But that's not my vision of how open source should work.
> But that's not my vision of how open source should work.
Exactly. I expect a modular fork of systemd when people get annoyed enough. I still don't understand why people treat systemd as the second coming of the Christ.
Disclosure: I'm managing large number of servers for the last 20 years. Don't tell me that init scripts were bad. I won't buy it. Don't tell me systemd is fast, again, I won't buy it.
> Exactly. I expect a modular fork of systemd when people get annoyed enough.
That's exactly the case with elogind, used by e.g. Alpine, Void, and Gentoo.
> I still don't understand why people treat systemd as the second coming of the Christ.
FWIW it managed to pull most distros in a single direction, decreasing ecosystem fragmentation. The outliers are well, outliers.
Just to be clear: it's not an endorsement from my side; there's enough criticism of systemd which I will not repeat. But the fragmentation aspect is what kills so much momentum, and it just runs too deep: Gnome was started because KDE's dependency on Qt wasn't kosher; Qt later got relicensed, but both projects kept pulling in different directions. It feels like any compatibility between anything is coincidental.
2 replies →
How is it not modular? Yes its all in one repo, but most of the parts are modular. Every distro adopts different parts of it.
Why doesn't someone make a modular systemd? Honestly I think a lot of systemd should be moved into the services its overriding or controlling.
I’ve used various forms of S6 init, you might take a look. It has its own scripting called execline, which is good, but you can also just use any shell. It doesn’t do everything systemd does but it’s quite small and very modular. https://skarnet.org/software/s6-linux-init/why.html
I like the general idea of execline, but I feel like it relies too much on chaining. It's a bit like Lisp, but without any parens - it hurts readability.
It went from "shells have too much syntax, which creates security issues" straight into "forth with blocks". My idea: runit already provides chpst, which folds things like cd, chroot, nice, etc into a single command; so let's put it all into a block with named parameters. Like this:
Maybe it could draw a bit from rc, which has actual lists as a first-class data structure.
I'm not exactly sure about the syntax, but that's the general direction.
Execline is available but not in any way required to use S6.