Email or username:

Password:

Forgot your password?
59 comments
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.

extreme organic gay

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

extreme organic gay

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

extreme organic gay

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

extreme organic gay replied to Ariadne Conill 🐰

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

Ariadne Conill 🐰 replied to extreme organic gay

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

Raito Bezarius replied to Rich

@dalias @leftpaddotpy @ariadne @dysfun Can you cite user hostile behavior of systemd?

Rich Felker replied to Raito

@raito @leftpaddotpy @ariadne @dysfun The post you're replying to is not even particularly about systemd. It's about systems where software is tightly coupled.

One obvious place it ends up being user hostile is in the presence of low-trust or untrusted applications which get visibility into what other applications you have running and what you're doing in them (Android), partly via the IPC/RPC system.

Raito Bezarius replied to Rich

@dalias @leftpaddotpy @ariadne @dysfun why tight coupling cause what you're describing?

Ariadne Conill 🐰 replied to Rich

@dalias @leftpaddotpy @dysfun i don’t think this really applies to systemd. you can just use the parts you want, without the others. you can even replace the parts you don’t want with other implementations. all of that is possible.

it just happens to be a bunch of projects worked on by the same people in a monorepo with a unified release schedule, but the projects are actually fairly independent of each other.

Rich Felker replied to Ariadne Conill 🐰

@ariadne @leftpaddotpy @dysfun Is it actually possible to run systemd the service manager without systemd the udev controller that decides how it wants to rename all your devices?

Sertonix replied to Ariadne Conill 🐰

@ariadne
@dalias @leftpaddotpy @dysfun
I don't see the independence:

To replace udev with a different device manager you need libudev-zero in most cases. Even then udisk2 and other don't work since they rely on udev internals (source libudev-zero).

Ariadne Conill 🐰 replied to Sertonix

@sertonix @dalias @leftpaddotpy @dysfun the fact that libudev-zero exists kinda proves my point. yes, if you are reimplementing an API, then you have to reimplement the API. i know, shocking.

Rich Felker replied to Ariadne Conill 🐰

@ariadne @sertonix @leftpaddotpy @dysfun I was only aware that you could use libudev-zero as a udev replacement on a non-systemd system, not that you could opt not to use the systemd-integrated udev behaviors on a systemd-based system. I'm still not convinced the latter is practical unless someone demonstrates it.

Sertonix replied to Ariadne Conill 🐰

@ariadne
@dalias @leftpaddotpy @dysfun
If you want to replace mdev/mdevd/smdev with udev you don't need to create a mock for any software.

And even if you need an api libseatd has shown how to do it right: allow multiple backends.

If libudev would work ok when udev isn't running it could be considered independent.

27329ed9-2211-a1ba-9371-e2641bf0dcb6 replied to Sertonix
@sertonix never heard about libudev-zero before.

Thank you for mentioning it.I had to patch out udev dependency from kmscon few weeks ago. A stub/minimal implementation would've been ideal there, but I didn't knew about it.
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 post you replied to was not even about systemd. It was about dbus, CORBA, DCOM, OLE & DDE, etc.

Petr Menšík :fedora: replied to jade

@leftpaddotpy @dalias oh, systemd-resolved handling of /etc/resolv.conf is great example how to do it wrong way. Yes, there was maybe resolvconf only, hackish command. But because no other service claimed to be best #DNS cache everyone should use. I am quite confident resolved is broken. It supports only itself, unlike other solutions. Okay, it has decent dbus API. But also unfixed issues. Systemd has excellent integration skills, but fails to export it for use by 3rd party services.

Rich Felker replied to Petr Menšík :fedora:

@pemensik @leftpaddotpy Nobody actually wants resolv.conf to get rewritten based on what network they connect to, with a garbage ns serving fake results with ads injected. They want it statically pointed at 127.0.0.1, 8.8.8.8, or something they trust. That something *should* be on 127.0.0.1, with full dnssec validation & efficient upstream querying, which systemd kinda tried to do, but botched...

Petr Menšík :fedora: replied to Rich

@dalias @leftpaddotpy that depends. If systemd is preventing some features like dnssec or single label queries, then I want working resolvers instead. Statically configured servers won't know site-specific domains. Sure, you want to override DNS servers network has provided *sometime*. But you would want privacy VPN on such networks anyway, if you need to use that network at all. I get broken experience even on trusted networks with resolved.

Rich Felker replied to Petr Menšík :fedora:

@pemensik @leftpaddotpy VPN UX on Linux is just messed up. We now have the tools to do it right (user+net namespaces with their own localhost & own ns running on it with no access to outside-vpn network), but are doing it still with fragile hacks messing up global system network config. 🤦

Petr Menšík :fedora: replied to Rich

@dalias @leftpaddotpy I am not sure, why would you want to lock a process into separate namespace with a VPN. In most cases I *want* site-enabling VPN to modify *global* system configuration. I just want to choose which parts this VPN can provide, for example limiting it to only selected domains. It would be nice to have simpler ways to bind a service to just one network interface, but I don't need it often.

Rich Felker replied to Petr Menšík :fedora:

@pemensik @leftpaddotpy I was speaking more with sn assumption of a privacy providing VPN where you don't want any traffic to leak. But a site-enabling VPN also makes sense to scope only to processes meant to have access. A compromised nobody account shouldn't have access to VPN your user account has access to.

Petr Menšík :fedora: replied to Rich

@dalias @leftpaddotpy I think general assumption is once local machine is compromised, security falls apart. I would say untrusted nobody user (and it's services) should have filtered access to the system network. Especially if you run a code without trusted source from it. Sort of podman solves it. Okay, it would be nice to restrict domains and IP ranges such process can access. I don't know anything simple offering that.

Rich Felker replied to Petr Menšík :fedora:

@pemensik @leftpaddotpy If that's true, sounds like really, really bad news for most Android users...

Petr Menšík :fedora: replied to Rich

@dalias @leftpaddotpy who said VPN server on Android cannot filter out ads or unwanted traffic? I think iptables should be able to filter based on userid or pid. I admit it would be great for flatpaks also. Name resolution usually does not have user or pid information for each request, it would have to use Unix socket instead of IP+port domain. So it would be difficult to apply ACL on those. But having alternative DNS cache on non-default address would be simple.

Petr Menšík :fedora: replied to Rich

@dalias @leftpaddotpy Android apps have good sandbox from other users. Each app is separate user there. Unless given rights to media access, they are well separated. Except network and DNS, correct. I would not expect Google to make ads blocking trivial task for obvious reasons.

Petr Menšík :fedora: replied to Rich

@dalias @leftpaddotpy what I thing we miss is a good implementation of provisioning domains RFC draft, well integrated with the system. And proper support for site-specific domains (discovery), not ~example.com hacks in dns-search.

jade replied to Rich

@dalias @pemensik i think you may have missed the real point of systemd-resolved here:

you no longer have different vpn software tampering resolv.conf and breaking your DNS queries when you change networks (e.g.). resolved proxies even bad software like gpg that ignores NSS into hitting the VPN DNS server for only VPN stuff and the network one for others. there is literally no standard way to do this besides everyone having the same DNS proxy, which has APIs, on their computer.

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

Be

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

extreme organic gay

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

extreme organic gay

@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 extreme organic gay

@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.
Go Up