Email or username:

Password:

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

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

jade replied to Rich

@dalias uhhhhh

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

"standard data formats". do you mean "text", for which you have a "broken handrolled C parser full of CVEs" because it's not actually structured *or* standard? or is there some magical format I have forgot about?

dbus is a standard data format. the systemd-standardized interfaces are a standard, structured format.

Rich Felker replied to jade

@leftpaddotpy Um, you're reading some weird ideas you had in your head into what I said...?

jade replied to Rich

@dalias every time I see people accusing systemd of not using the standard APIs, the so-called standard APIs in question did not exist before, and the functionality was, prior to systemd, achieved by the client software mutating things in such a way that assumes they were the only possible client (e.g. /etc/resolv.conf with VPN software, vs under systemd-resolved)

I simply do not understand your argument.

Rich Felker replied to jade

@leftpaddotpy The dbus protocol framing/transport is a "standardized data format". The addresses you interact with over it are *explicitly named for application software* that you're communicating with. And forget about whether it's standard or not, it's not even a data format. It's a command channel.

Rich Felker replied to Rich

@leftpaddotpy What I mean by "standard data formats" vs tightly coupled applications goes back to the early Windows idea of "inserting a paintbrush object" into your Word document rather than "inserting an image file in BMP format". Or the early Mac idea of resource forks identifying an "owning application" for a file rather than the data format of the file.

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

@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.
Kevin Karhan :verified:

@ariadne well, #SystemD is the de-facto Standard for a reason.

#SystemVinit was kinda unworkable, a single #init file quickly becomes unworkable outside of minimalist embedded distros like @OS1337 and #SMF from #Solaris is very intertwined it's Kerbel and Userland

In fact, systemd is a good reimplementation of #LaunchD from #macOS.

And since it has RedHat-Level money and engineering behind it, it works quite well...

And as much as many long for somethibg simpler and easier, I simply doubt we'll see that for the next 5-25 years from now...
youtube.com/watch?v=o_AIw9bGog

@ariadne well, #SystemD is the de-facto Standard for a reason.

#SystemVinit was kinda unworkable, a single #init file quickly becomes unworkable outside of minimalist embedded distros like @OS1337 and #SMF from #Solaris is very intertwined it's Kerbel and Userland

In fact, systemd is a good reimplementation of #LaunchD from #macOS.

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.

Go Up