Email or username:

Password:

Forgot your password?
Top-level
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.)

104 comments
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.

0xC0DEC0DE07E8

@luis_in_brief 😭:but I have to run systemctl daemon-reload after I edit a config file for the changes to take effect.
Someone should make a systemd file watch package that automatically does it just for those particular nerds.
@ariadne @pid_eins

Lennart Poettering

@c0dec0dec0de @luis_in_brief @ariadne auto-reload only makes sense if every possible change you could do touches a single file only. That might be fine for trivial services. But for anything even remotely more complex than hello world you might need to edit two config files, a service file or two, and you really don't want anything to load the cfg while you are just half-way done.

Explicit configuration reload is a *good* thing, it allows you to schedule application of multiple changes as one

Rich Felker

@pid_eins @c0dec0dec0de @luis_in_brief @ariadne Not only that, I also reflexively save multiple times while editing config files, often with them in unworkable intermediate states.

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

jade replied to Ariadne Conill 🐰

@ariadne @dysfun it also replaced ... CORBA. and I don't think anyone missed CORBA.

Rich Felker replied to jade

@leftpaddotpy @ariadne @dysfun And it was all modelled on COM by folks who thought Windows was doing things that made sense...

Ariadne Conill 🐰 replied to Rich

@dalias @leftpaddotpy @dysfun well, DCOM really, which is an entirely different animal

Rich Felker replied to Rich

@leftpaddotpy @ariadne @dysfun There is really a clash of two *philosophies* here:

One that believes software systems should be tightly coupled with every piece of software interacting with the events and data of one another, mediated through object oriented abstractions.

And one that believes software should be decoupled, staying out of each other's way and exchanging data and reacting to events only through standard data formats and system interfaces.

Rich Felker replied to Rich

@leftpaddotpy @ariadne @dysfun The former is largely seen as "polished" and "professional looking" and "user-friendly" by techies and industry UX folks.

But it also enables a lot of really user-hostile behavior.

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

@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))

CEO of Anti-Clock Society

@ariadne @dysfun I still use pavucontrol regularly with Pipewire-Pulse 🤷

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.

Lennart Poettering

@ska @ariadne OK, I did not expect to read that today: that sd_notify() is "over-engineered" and "bloated".

It's *literally* a frickin env-var-like text string in a datagram to an AF_UNIX socket whose path is passed in an env var.

I mean, I can explain the protocol this in a single (one!) sentence.

If that's "bloated", then I think you are smoking some really really really good dope, man. No shame in that, but maybe don't comment on the Internet when you do ;-)

Ariadne Conill 🐰

@ska i don’t think your sd_notify example holds. a child supervisor could hoist the socket along to its parent to solve this problem using SCM_RIGHTS.

Erin 💽✨

@ariadne @ska also i dont’ see why it has to be a central daemon; each supervisor can just listen on whatever socket it wants and set NOTIFY_SOCKET appopriately.

jade

@ska

> 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.

Just set NOTIFY_SOCKET to the socket implementing the trivial protocol, which can be named at random? There is no reason this protocol is at all incompatible with multiple decentralized managers? You just run a socket on each?

I can't understand the problem here.

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"

Alice🌸

@artemist @ariadne you could port launchd which is what systemd is inspired by

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).

Ryan Finnie

@ariadne I would like to tell you about how I hacked runit until it was mostly unrecognizable, to use on Finnix back in the day. I would like to tell you this as a cautionary tale.

Ariadne Conill 🐰

@foo oh i’m very aware of that work, having used finnix to repair many systems

pabloyoyoista

@ariadne very interesting thoughts! One thing I wondered through this whole process with postmarketOS, and keep wondering to this date, is why all the people doing alternative init systems to systemd don't sit together and design some spec, that takes proven-right design decisions from systemd. Like let's say, having service-file (like @craftyguy did with superd) and DBUS-api compatibility with systemd. It's day-dreaming to hope that everybody else will adapt to something completely different.

Go Up