Email or username:

Password:

Forgot your password?
Ariadne Conill 🐰

not surprised that @postmarketOS folks pulled the trigger on systemd

in alpine we have promised to build something better than openrc for years, but it still isn’t here.

meanwhile, the polyfills for various systemd apis to work on openrc do not actually work correctly in many cases, leading to unnecessary bugs on the desktop.

i think @alpinelinux should join pmOS in getting off openrc, the project is basically on life support anyway and the maintainers primarily focus on Gentoo usecases also.

150 comments
Sertonix

@ariadne Getting off openrc is definetly needed but not to systemd.

Ariadne Conill 🐰

@sertonix what is the alternative? alpine has been waiting over half a decade for s6-rc to be ready. it still isn’t even at usability parity with openrc.

show me a project with working polyfills and a usable and concise service management model that exists today that isn’t systemd, and there is something to talk about.

but all there is are toy projects designed by random techies who haven’t thought about what a servicing lifecycle actually looks like, and systemd.

hexaheximal

@ariadne @sertonix The lack of systemd is one of the reasons why I like Alpine Linux in the first place.

If Alpine Linux dropped OpenRC, I would stop using it, as well as postmarketOS.

Sertonix

@ariadne
I don't know which major feature is missing in s6-rc that isn't also missing from openrc. At least for me it was easier to understand than openrc.

I also had good experience with artix. It might be that I don't notice issues that other people have without systemd since I try to pick lean software but if you look at the alpine linux about page that is the target of alpine linux: simple

Ariadne Conill 🐰

@sertonix s6-rc being at feature parity with openrc (which also lacks features wanted in alpine) isn’t a good argument.

s6-rc also lacks a good user interface story, at least in terms of how alpine tools are supposed to feel and be invoked. alpine tools are very much about noun/verb invocation (think: apk add foo, lbu commit /dev/fd0, etc), while s6-rc uses switches for everything.

the main thing missing is event handling, for example launching cups to print only when you’re printing, rather than having it always running and wasting memory. or launching iwd when you plug in a usb wifi stick, or whatever.

openrc’s “hotplug” run level is too clunky to be usable.

@sertonix s6-rc being at feature parity with openrc (which also lacks features wanted in alpine) isn’t a good argument.

s6-rc also lacks a good user interface story, at least in terms of how alpine tools are supposed to feel and be invoked. alpine tools are very much about noun/verb invocation (think: apk add foo, lbu commit /dev/fd0, etc), while s6-rc uses switches for everything.

Laurent Bercot

@ariadne @sertonix The reason why s6-rc isn't at usability parity with openrc is because openrc cheats by embedding itself with a shell, which means it's dynamic everywhere, which makes it powerful but very hacky.

Using similar shortcuts would lead to similar results, and getting the same amount of power with a clean infrastructure is *difficult*.

(Edit: typo)

Ariadne Conill 🐰

@ska @sertonix i meant more basic things like:

s6-rc -D $foo

you are new to alpine. what does this do to the $foo service?

verses:

rc-service $foo —force stop

neither really fit the noun/verb UX that alpine prefers though, which would be something like

servicectl —force stop $foo

Doridian

@ariadne The fact OpenRC focuses on Gentoo is also kind of interesting, considering Gentoo offers systemd as an init system option and I suspect OpenRC will disappear....eventually

Mary

@ariadne how do you feel about s6 and/or runit?

Ariadne Conill 🐰

@mary alpine has been waiting for s6-rc for almost half a decade at this point. meanwhile the world is moving on, and openrc is increasingly not suitable for the things people want to do with alpine.

Ariadne Conill 🐰

@mary there is no service management framework built around runit that is suitable for a mainline distro like alpine

awooo :autism:​🏴‍☠️🐾⎇

@ariadne The discussion it spawned in the matrix room is kinda 🍿 ngl

Ariadne Conill 🐰

(this is not an invitation to tell me about your friend’s pet init system. designing a service management framework for an operating system is harder than it looks. i’ve looked at all of the options outside systemd, and frankly openrc is the one with the most maturity. the landscape is bleak.)

Gerva

@ariadne
I wonder if systemd is able to implement a tamagotchi like pet, so we could have an actual pet init system

Ariadne Conill 🐰

and, frankly, whatever you want to say about @pid_eins, he is one of the rare software engineers who understands both the technical aspects of creating software and also the usability aspects.

this is something that every other proposed service management framework lacks. it’s not necessarily a bad thing, but it is good to have a maintainer at the top that has good taste in both departments.

Luis Villa

@ariadne @pid_eins More than anything else, this is the thing I just don't understand about the nostalgia for the Old Ways. Gigantic-pile-o-shell was just ... *terrible* from a usability (not to mention maintainability and debuggability) perspective.

Ariadne Conill 🐰

@dysfun i’m not wrong though. i am not saying systemd is *good*, but the tooling around it feels solid. much more so than openrc, or any of the other hobbyist projects.

gaytabase

@ariadne this may all be true, but saying lennart knows usability makes me gag.

Ariadne Conill 🐰

@dysfun in general i think it is his strongest quality. he knows enough to get things going on the development side of things, but where he does his best work is in designing tools.

gaytabase

@ariadne that's certainly an opinion, but it's most definitely not one i share.

Ariadne Conill 🐰

@dysfun pulseaudio failing to route audio doesn’t mean that pavucontrol wasn’t a well designed mixer 😂

gaytabase

@ariadne lol maybe you'd like to bring up avahi while we're going through his greatest user interface innovations 😬​

Ariadne Conill 🐰

@dysfun avahi doesn’t have any UI of its own, it hooks into gtk and qt file choosers. distributions also misconfigured avahi in many cases. i can’t actually put that one on him because i’ve seen how the sausage was implemented.

gaytabase replied to Ariadne Conill 🐰

@ariadne it has a dbus interface. i'm not very fond of dbus either.

Ariadne Conill 🐰 replied to gaytabase

@dysfun i mean, same? but that ship sailed well before lennart entered the picture

Τοπάζ Αλαιν Φογτια Αννα Εμιλια

@ariadne @dysfun pulseaudio is okayish (although I don't appreciate that pavucontrol just regularly appears to segfault on my systems, in contrast to pulsemixer)

but PipeWire is awesome (although the APIs are a bit of a mess (at least messier compared to both JACK and PulseAudio))

equi

@ariadne @dysfun hm. Somehow my perception is very different here. The time I've sunk into trying to figure out why systemd is (or is not) doing something while wrangling service files is… significant. And pretty much all of my bubble shares this view: it's great while it works, but as soon as something goes wrong you're left digging for scraps of rare helpful output and trying to divine from manpages what is going on. The tools are /horrible/ at telling you /why/ things are as they are.

gaytabase

@equinox @ariadne this. it was the thing that finally made me go alpine in the first place.

Ariadne Conill 🐰

@dysfun @equinox i suspect that if alpine devs collaborated with lennart that this aspect of systemd could be improved significantly.

gaytabase

@ariadne @equinox i expect if you fork it they can, but given how lennart behaves on github i have precisely zero faith you can collaborate with him and achieve anything useful.

Ariadne Conill 🐰 replied to gaytabase

@dysfun @equinox we have had conversations with him over the years and he has largely come around to seeing our thinking on a number of issues, which led to pmOS feeling like they could pull the trigger. i worry more about openrc having basically no maintenance and the code being a minefield of potential CVEs than dealing with lennart on a bad day.

Ariadne Conill 🐰

@equinox @dysfun yes, i agree there, but that’s more a problem of trying to explain failures in a directed graph moreso than it is a fault of systemd itself. even apk fails to describe failures in dependency graphs effectively, and god knows i’ve tried to improve that output…

pj
@equinox @ariadne @dysfun I can't imagine this being a systemd fault, when almost every tool that fails is just bad at telling me why it fails. I've also built software that has the same problem.
Ariadne Conill 🐰

i can’t stress this enough. one of the guiding design principles in alpine is that if you have to read a manpage to perform a basic operation as a user, we have already failed.

the competition to systemd in service lifecycle management is largely a minefield of tools with cryptic command line switches and other potholes. the tools do not feel good to use.

we want a service management system that feels as good to use as apk.

Doridian

@ariadne Not to mention that writing service definitions with systemd is much easier as well <.<

Ariadne Conill 🐰

there are of course, valid criticisms of systemd. the fact that so much userspace surface is contained in a single project is unpleasant from a technical and governance POV.

however, systemd itself is highly modular. the core service management framework is only a few megabytes on disk, which is comparable to openrc.

so the people who complain about bloat are likely just not using a properly packaged form of systemd…

Howard Chu @ Symas

@ariadne modularity of some chunks of code is kind of moot when such fundamental parts of the kernel interface (eg. udev) no longer work standalone.

Ariadne Conill 🐰

@hyc you can build and deploy udev without the rest of the systemd components

Space Hobo Actual

@ariadne
Me, an intellectual: uses an OS built around busybox, and eschews an init system that combines too many systems into a single runtime.

Ariadne Conill 🐰

@spacehobo but systemd doesn’t actually do that. its a monorepo, but it generates tons of binaries.

Space Hobo Actual

@ariadne Yeah, I was hoping to wave hands a little wider than I did with the word "runtime", really.

Laurent Bercot

@ariadne The granularity of binaries on disk is a very partial indication of the modularity of the software. systemd has good granularity, but it is NOT modular.

Modularity, or lack of, is a property of the *design* and architecture of the software. When I say "systemd is not modular", I mean that its architecture is hostile, it centralizes control and disempowers users.

When I look at one part of systemd, say, one given binary, say I want to replace it: can I do it with knowledge that is purely local to this binary? And the answer is no: the necessary knowledge is still the full
global workings of systemd.

Another example is the sd_notify mechanism, which assumes that the fd you send the notification to (via an overengineered, bloated protocol) is a socket. This assumption means that the only way to implement readiness notification management in systemd is to have a central supervisor for all the services, which is the exact opposite of modularity.

@ariadne The granularity of binaries on disk is a very partial indication of the modularity of the software. systemd has good granularity, but it is NOT modular.

Modularity, or lack of, is a property of the *design* and architecture of the software. When I say "systemd is not modular", I mean that its architecture is hostile, it centralizes control and disempowers users.

it's zip!

@ariadne as a long-time systemd hater I tried out Void, which is on runit, and discovered to my displeasure that the Old Ways are actually super annoying and systemctl is actually a very wieldy way to manage services… but there’s also part of me that appreciated having a system where you could quickly figure out how to enable or disable a service by inspecting its peers in the filesystem. I think systemd is equally guilty of needing a manpage check – I’ve had to google how to read logs so much

s00ner🌈

@ariadne I like this philosophy. The first time I installed something with apk, the operation completed so quickly I thought it wasn't working properly. On the flipside, I found openrc to be poorly documented and lacking examples.

LisPi
@ariadne So all management interfaces in Alphine are interactive-first (or only)?

That's the main way I see of making such self-documentation even remotely practical.
Jordan Petridis

@ariadne Lennart is one of the kindest people I've ever met. And this is when he'd have all the rights in the world to be the exact opposite, yet he does not.

always tired (moved to chaos)

@ariadne I'm half sad about it. systemd kinda works and isn't bad but its lock in tactics are bad and now that succeeds yet more.

equi

@ariadne honestly the most realistic thing (IMHO) to do is probably to write (or derive from existing systemd code) a bunch of (dependent) libraries that reimplement parts of systemd. Unit file parser. Constraints manager. Service starter. Hotplug handler.

Some of the design decisions make things difficult to untangle, but a lot of the underlying building blocks are OK. They're just tied together into an undebuggable opinionated monolith…

artemist

@ariadne I've been dealing with the FreeBSD init system and it has so many problems that I keep coming back to "how hard would it be for me to port systemd" then getting sad when I realize that the answer is "very"

Kevin Granade

@ariadne I've worked with I think 8 different init systems in constrained use cases for work over the years, and the concept of using *any* of them other than systemd for a whole distro is nightmarish (that includes SystemV).

void *anna;
@ariadne the polyfills to systemd api (elogind being the major one in linux, which is just systemd-logind extracted out) can't really be fixed by another init system that isn't systemd tho

because what those apis do, are not init management. it's session tracking (logind), it's device management (udev), it's a dbus api, and so on.

what would be needed is good replacement for those parts. consolekit died, seatd[1] is trying, but the major desktop environment got to using systemd's bundled apis for non-init-stuff, and well, while it's doable to make new specs/apis/implementations of those, trying to provide the same api is kind of an impossible task.

more to it, as more and more distros go to systemd, less work would even be put on those (either alternatives, or polyfills), and then, we'd really have no other option but systemd.

1: https://sr.ht/~kennylevinsen/seatd/
@ariadne the polyfills to systemd api (elogind being the major one in linux, which is just systemd-logind extracted out) can't really be fixed by another init system that isn't systemd tho

because what those apis do, are not init management. it's session tracking (logind), it's device management (udev), it's a dbus api, and so on.
pj

@ariadne @postmarketOS @alpinelinux meanwhile systemd wasn’t even accepted in testing and the whole shistorm that happened in MR…

angelthorns

@ariadne @postmarketOS @alpinelinux i just installed alpine today, and yeah, getting pipewire working was *not* fun.

Lennart Poettering

@ariadne @postmarketOS @alpinelinux You are such a sellout! ;-)

A very welcome sellout though. ;-)

indrora, boot of journalism

@ariadne I feel like "required reading" for anyone wanting to chime in on this situation is the combination of @aurynn 's "Contempt Culture" and @benno 's Tragedy of Systemd

blog.aurynn.com/2015/12/16-con
youtu.be/o_AIw9bGogo

mah:~ $ :nixos:

@ariadne just here sending @pid_eins some thoughts and prayers, my god this thread is gold lmao.

DELETED

@ariadne @postmarketOS @alpinelinux Is there a blog post or something about this new init system plan?

SpaceLifeForm

@ariadne @postmarketOS @alpinelinux

If everyone is going to get on the systemd bandwagon, then it is important to focus many thousands of eyes on the source code.

I would look for race conditions.

They will not be obvious. While studying the code, you have to think outside the box, and ask yourself:

How can this be attacked?

🌈 A. Wilcox delicately

@ariadne Adélie would have switched a few years ago if journald wasn't still joined at the hip with it. If there was an effort to make a systemd without journald I'd be all-in. So tired of dealing with OpenRC bull.

See also my thought piece on it: catfox.life/2024/01/05/systemd

Go Up