← Back to context

Comment by palata

20 hours ago

> Linux is now effectively systemd/linux

This is my issue with systemd. I wanted Linux because I wanted to have a choice. The philosophy was that users should have a choice. Systemd goes against that: it's taking over everything and more and more projects require systemd. Flatpak as well: if a project only supports flatpak, chances are that it won't be easy to package normally. So if I don't use Flatpak, I'm screwed.

People who don't see the problem with systemd "because it works" miss the point, IMO. It's like those devs who proudly ship their project in a docker container, because they are not capable of making it properly available to package maintainers. "It works", but I can't package it for my distro because it's a big mess. Developers don't have to package their project for all distros, they just have to properly provide the sources. But more often than not, they don't know how to do that, and instead see Flatpak/docker as "good alternatives that just work".

> Developers don't have to package their project for all distros

Essentially nobody uses the sources we provide. Literally nobody packages them. A few people use our rpm and deb packages, but the vast majority uses a (slightly broken and outdated) docker image built by third party.

You might not like it, and I certainly do not, but unfortunately containers seem to be the best alternative that just works, compared to everything else.

  • > but unfortunately containers seem to be the best alternative that just works, compared to everything else.

    I think it's actually the worst alternative that works. If it didn't work, people wouldn't do it. And the better alternatives require more effort.

    I think it unfortunately goes with popularity: when programming becomes more accessible, the average quality of code gets worse. When Linux becomes more accessible, the average level of its users gets worse.

    What made Linux desirable for me risks getting worse the more popular it gets. I went from Debian to Arch, to Gentoo, and eventually I may have to move to a *BSD. Because apparently what I want disappears when a system gets massively popular.

    • Send me an email please if you haven't yet. You'll want to try this distro, and I'd like to get your feedback.

      site: killthe.net

      name: dave

    • I've been using Gentoo for 20+ years, it hasn't changed much. I have changed different logger, cron, ntp, login and probably other daemons over time. Stability has gotten better over time, making me not switch to anything else.

      1 reply →

Except for the main pid1 process, systemd is one of the most customizeable things, certainly much more than old shell-based things. Everything is documented, can be disabled or replaced, and in such a way that the rest of the system can keep functioning, and the system upgrades don't mess it up.

A lot of people said you can edit /etc/init/ scripts, but this was pretty annoying, as the moment you upgrade the package, your package manager throws a conflict at you. It was certainly non-scaleable if you have many machines with automated upgrades. Compare to systemd overrides, where there is both drop-ins and wholesale service replacement, and system upgrades never mess with that.

Heck, even something as simple as "disable distribution-provided service" was a pain! I can't remember how many times I've added "exit 0" to /etc/default/something file, just because the sysvinit did not respect user decisions during upgrades or reinstalls! Compare to systemd, where I can "mask" the service even before it's installed.

And for deeper changes? Pre-systemd ubuntu had this this stupid "system is online" idea, and I once needed to customize this.. this was lots of undocumented reading and hacking on the script, and let's hope we did not need to upgrade. Or something like "my service X should start after NFS, but ssh should start before NFS" - this was pretty hard as well, and would cause upgrade conflicts.

Systemd has lots of problems, but the customizeability is one of their best parts. It is the only thing that I know which clearly delimits "user" vs "distribution", and gives all the power to user.

  • I am not sure if we are talking about the same thing. I am not saying that systemd is bad. I am saying that when a project has a hard dependency on systemd (which is not necessarily systemd's fault, to be fair), then it doesn't work with an alternative init system.

    • Right, but my point is that unlike earlier init systems, unless that dependency on pid 1 itself, there is nothing preventing alternative implementations, and in fact, there is all the support to make such implementations possible.

      To give an example, let's say a package depends on systemd because it uses sd_journal protocol, presumably because it wants to send enriched logs. That protocol is fully described (in [0]), and is actually pretty trivial to implement, on both server and client side. It even have a build-in "upgrade" mechanism (via $JOURNAL_STREAM) to allow seamless switch between base/systemd-logs, although AFAIK sd_journal_* functions do not implement it by default.

      So this brings us a question: if a program wants to provide rich logs, and it is is using a documented protocol to do so, but there is only one implementation of the receiver, is this a problem? Is the onus on the program's authors to support multiple log sending functions, or on the distributions to provide a log receiver that the program expects?

      [0] https://systemd.io/JOURNAL_NATIVE_PROTOCOL/