dragoonaethis,
@dragoonaethis@mstdn.social avatar

A tiny sliver of hell froze over: https://postmarketos.org/blog/2024/03/05/adding-systemd/

>Is Alpine cool with this?
(Most likely) absolutely not, but please keep going

dragoonaethis,
@dragoonaethis@mstdn.social avatar

...it appears I need to eat my words: https://social.treehouse.systems/@ariadne/112044941290779320

wolf480pl,
@wolf480pl@mstdn.io avatar

@dragoonaethis that's just one person from the Alpine dev team right?

lanodan,
@lanodan@queer.hacktivis.me avatar

@wolf480pl @dragoonaethis Yeah, that said Alpine governance is a really weird thing.

icedquinn,
@icedquinn@blob.cat avatar

@lanodan @wolf480pl @dragoonaethis
> You heard it here first folks: systemd is coming to postmarketOS
☠️

lanodan,
@lanodan@queer.hacktivis.me avatar

@icedquinn @wolf480pl @dragoonaethis Was kind of doomed to happen, Telephony/MobileData/Bluetooth/… on linux without systemd is quite a mess and the "rewrite all of QtMobile in Gnome instead" headed by Librem likely didn't help at all.

icedquinn,
@icedquinn@blob.cat avatar

@lanodan @wolf480pl @dragoonaethis skimming over the mastodont thread to see what their actual complaints about s6 are.

so far all i see is just people shitting about "we have to maintain adapters because everyone else has just given in to poettering" though

lanodan,
@lanodan@queer.hacktivis.me avatar

@icedquinn @wolf480pl @dragoonaethis Yeah, because if you'd want to actually have an alternative, then you'd need to do a lot of work and get things right enough that it's a compelling enough alternative to systemd for third-party software to support your stuff.

lanodan,
@lanodan@queer.hacktivis.me avatar

@icedquinn @dragoonaethis @wolf480pl It's quite like how you had PulseAudio pretty much ruling over until PipeWire, because the alternatives were significantly worse. (Or even "you live like this?" with alsa)

icedquinn,
@icedquinn@blob.cat avatar

@lanodan @wolf480pl @dragoonaethis pipewire is good but the only reason it works is because it speaks poettershit.

lanodan,
@lanodan@queer.hacktivis.me avatar

@icedquinn @wolf480pl @dragoonaethis Yeah, because you don't change well over 10+ years of usage instantly.
So yeah a systemd alternative would need some adapters, but in the case of things like udev they ended up worse, I think seatd is the only one where it's better and significantly so.

icedquinn,
@icedquinn@blob.cat avatar

@lanodan @wolf480pl @dragoonaethis its that classical problem of stuff like photoshop where you ask people what they would accept for an alternative and everyone just says "something that works exactly like this" to which they are basically admitting no alternative is possible.

you'd have to reimplement the entire interface including the bad ideas :/

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan pipewire is trash, have you seen the sourcecode?

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan
clarification: I don't actually think pipewire is trash.

It's quite impressive what it can do, and I'm sure a lot of work went into it.

Still, the code is full of weird object-oriented boilerplate with factories and stuff, which I find painful to read. I'm told people who are used to reading gstreamer source code find this easier. Still, pulseaudio code is way more readable in comparison.

icedquinn,
@icedquinn@blob.cat avatar

@wolf480pl @dragoonaethis @lanodan boilerplate is one of the reasons i don't use stuff other than nim unless i'm being paid.

c code is just honestly too painful to put up with.

icedquinn,
@icedquinn@blob.cat avatar

@wolf480pl @dragoonaethis @lanodan main issue i have with a lot of get-what-you-are-given language comes down to that. once you've determines some set of stanzas is indeed how you want to handle all of your objects... in TCL or Lisp you just make a macro. Now you move on with your lives.

in C you have to bloat the code up with the same stanzas all the time. even though we already know this is what a gobject does, this is how we iterate the iterators, and so on, but the language doesn't afford us a way to agree on that and move on.

so.. yeah. i can see that. gstreamer is one of those APIs that looks like dogshit because the bookkeeping can't be abstracted in a sensible way. (there is going away with OOP stuff entirely, but that carries... other costs. in something like nim or rust i don't really have to choose though.)

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan
Ok, now look at Linux kernel. Or wlroots. Or something from OpenBSD, eg. OpenSMTPD.

They have some objects, with some inheritance, and and some of those have virtual methods.

They also have generic collection types.

And you know what? There's nowhere near as much boilerplate as there's with gobject.

Because they have a few macros.

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan
Well, and a lot of good judgement on what macros to make.

lanodan,
@lanodan@queer.hacktivis.me avatar

@wolf480pl @icedquinn @dragoonaethis Yeah, it's more tasteful API and library design kind of stuff rather than "$language bad" or "OOP bad".

icedquinn,
@icedquinn@blob.cat avatar

@lanodan @wolf480pl @dragoonaethis i still believe C makes it significantly harder to maintain tasteful APIs.

lanodan,
@lanodan@queer.hacktivis.me avatar

@icedquinn @wolf480pl @dragoonaethis All programming languages have constraints and you need to work well in those.
Don't be Stephen R. Bourne (of Bourne Shell fame) and transform C into a bastard version of ALGOL.

icedquinn,
@icedquinn@blob.cat avatar

@lanodan @wolf480pl @dragoonaethis if i had anything to do with a language these days, it would look more like terralua: running an interpreter that builds up code objects and then ejects them out as a binary once its all said and over with.

the base language wouldn't give you much more than what ANSI C already did, and then just let people import constructs after the fact.

icedquinn,
@icedquinn@blob.cat avatar

@wolf480pl @dragoonaethis @lanodan i wrote kernel drivers and we didn't really use macros for that :blobcatterrified:

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan
WDYM?
No container_of?

icedquinn,
@icedquinn@blob.cat avatar

@wolf480pl @dragoonaethis @lanodan No. Raw input/HID drivers. It was all classical C code.

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan
ok but like

did you have a double-linked-list anywhere in the code?

Normally in Linux kernel when you need a list, you include struct list_head inside your struct that you want to keep on the list.

Then when you retrieve something from the list, you get a pointer to the struct list_head, and you use container_of to get at your own struct that contains the list_head

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan
like, how do you write a driver without using this: https://kernelnewbies.org/FAQ/LinkedLists

icedquinn,
@icedquinn@blob.cat avatar

@wolf480pl @dragoonaethis @lanodan didn't need them. i decoded packets from a USB stream and translated them to evdev events and pushed them out the other side.

wolf480pl,
@wolf480pl@mstdn.io avatar

@icedquinn @dragoonaethis @lanodan
In practice systemd is pretty good.

I think its design is bad in principle, but the only practical concer I see is that a lot of software will start relying on its APIs. Judging by the postmarketOS blogpost, that ship has already sailed.

icedquinn,
@icedquinn@blob.cat avatar

@wolf480pl i would have been less blackpilled if poettershit had actually won in a marketplace of ideas.

in reality it just rode red hat forcing the issue each time and then people just normalcy bias around it until it becomes permanent.

now we're stuck with this absolute garbage because of the power of mediocretes.

@dragoonaethis @lanodan

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • Hentai
  • doujinshi
  • announcements
  • general
  • All magazines