
On Fri, Nov 01, 2024 at 04:36:53AM -0400, Steve Litt via talk wrote:
If you mean which distros come with s6 as the default init, that would be Adélie Linux (https://www.adelielinux.org/), for the last 5 years. If you mean which on which distros can you install and use S6, that would be any distro that inits with anything other than systemd, or has the option to do so.
By the way, the Void Linux distro has shipped with runit as the default init system for at least a decade.
One more thing needs to be said. The fact that I consider systemd junk doesn't account for my disdain for it. My disdain is that systemd breaks lots of good things that used to work, adds a ton of complexity, adds a whole lot of attack surface, and integrates itself so far into the OS and user software that it's extremely difficult to remove and replace. I'm a Vim guy but I don't go around bashing Emacs because Emacs does nothing to impede my Vim usage. Please remember this paragraph when you read the rest of my responses.
Initially I also thought systemd was too complex. Having worked with it for a while I eventually figured out why it had changed a bunch of stuff the way it did. The stuff it replaced was in fact not working well, it was just traditional. As for attack surface, I am not convinced that is true. The amount of stupid mistakes one can make in a shell script that can be exploited is huge. systemd does not prevent people from supplying other startup scripts for daemons. Of course the fact most people seem to now be fairly happy with systemd means there are a lot less people who want to spend time writing such scripts. Blaming systemd for being successful is unfair. I haven't seen any daemon that can't run without systemd, but certainly many do support it now. Certainly in the case of Debian there has been a lot of arguing over systemd, and there are definitely other init systems available, but systemd is the one installed by default. And yes there are packages that no longer seem to provide sysvinit startup scripts because the package maintainer doesn't want to spend time on it since they don't use it and don't even have a system setup to test it on.
OK, all the ones you tried sucked. I know you never tried s6 because you never heard of it, and I have a feeling you never tried runit either. Those are the two best init systems.
It appears from the git tree that it came out in 2014 (version 2.0.0, I can't find any indication of a version before that). That's a bit late to the party as most major distributions had already gone to systemd by then. Even Debian had by that time and they were one of the last to do it.
Why are shellscripts crappy? They're a wonderful way to boss your computer. Use the ksh scripting language and the shellcheck shellscript validation checker and you'll have a spectacular control over whatever you want. If you consider shellscripts bad, why use a Unix clone at all?
There is far far more to a unix system than shell scripts. Even a python script would give better control over things than a shell script. It seems a bit overkill though. Dealing with arguments and quoting and such in a shell script is very error prone. systemd avoids that by not using a shell to launch processes at all. That is a lot safer. Less flexible, but much safer and less error prone. I want my system to work. Building from source and tweaking was fun and interesting at the start, but that was 30 years ago. To me distributions like Gentoo are a joke. Their focus is something that is a complete waste of time. There is no point building everything from source on every machine. There is no benefit just wasted CPU cycles. I can't recall which linux distribution used to claim that it made a difference that you optimized everything for your particular CPU model at compile time, but again, what a waste of time. Looking at the packaging file to see how things are being built is definitely interesting and you can learn from it, but that doesn't mean you need to actually spend time doing it to learn.
What you have in systemd is a notification of when the process *says* it's ready to work, which may or may not be true information. The way s6 and runit work, you devise an easy test to *prove* the process is ready to work, and act accordingly. Runit has complete monitoring and control of processes via its sv program, and s6 has something equivalent.
I would think if it isn't true then that is a bug in the service that should be fixed. And making an external test could be rather complicated. Sounds annoying. A proper test is not a bad idea, but I am not sure the complications of implementing it are worth it.
S6 and runit do that.
Well it seems s6 was too late to be relevant. Runit predates systemd by about 6 years. There must have been some reason it didn't catch on instead of sysvinit at the time. -- Len Sornsen