libera/#eudev/ Saturday, 2021-09-18

gnu_srs1What about taking up the development of vdev?00:24
golinuxgnu_srs: Maybe start a #vdev channel?  IIUC, that is a longer term solution . . .00:29
Arsenthere's no real incentive to do that00:37
bb|hcbgnu_srs1: maybe we can package it in Devuan and see how it goes, but it has one major drawback compared to eudev, the later is proven in lots of systems and is the safe way ahead00:53
skarnetoh boy. I just came back home and I'm exhausted so I will not elaborate right now (remind me tomorrow), but there's a lot to unpack here01:01
skarnetthe most important thing - Arsen, netbsduser - is that when you start running behind systemd, you have to be aware that *you will never stop*01:02
ArsenI'd love to hear what you mean by that when you're less tired :)01:02
skarnetyou obviously don't have to believe me, but freeinit is a red herring01:02
skarnetit's the perfect illustration of the wrong approach01:03
skarnetit is playing systemd's game and it will never win at it. systemd will always be better at being systemd than its clones.01:03
Arsenno, it's how you undertake and replace an established ecosystem01:03
skarnet1. you will never replace it that way01:03
Arsenkeep in mind libsystemd is a very small portion of what makes the mess of systemd what it is01:03
skarnet2. even if you do, given the way systemd is architectured, what you will end up with *will not be better*01:04
skarnetI don't care about replacing systemd if the replacement isn't better01:04
golinux+101:04
Arsenthat's arguably not true depending on the definition of better01:04
Arsenagain, the interfaces in there aren't very limiting01:04
skarnetone of the ways systemd maintains its hegemony is by enforcing its architecture and policies by encoding them into its APIs01:04
skarnetif you follow systemd's APIs, including libsystemd, your replacement will look exactly like systemd01:05
skarnetyou might have a totally independent code base, but it will be infused with poetterspirit01:05
skarnetIt's a subtle thing, but I'm not lying when I'm saying I have *studied the thing*01:06
netbsduseri'm intimiately aware that systemd's public APIs are grossly leaky01:06
skarnetit's not only leakiness01:06
skarnetit's how the whole thing is designed01:06
ArsenI'm not sure any design went into it01:06
Arsenif it did, I'm not sure anyone sane was doing it01:07
skarnetthere is a method to the madness01:07
netbsdusereven sd-event's ridiculous two-stage loop iteration semantics are suffused with the knock-on effects of that. this is where we need to effect a kind of coup01:07
skarnetanyway, to answer quickly before I go take a shower and crash:01:08
netbsduseri see a main goal of libfreeinit as being the offering of superior APIs01:08
skarnetdoing EEE on systemd? good luck01:09
Arsen(also, decouple freeinit from libfreeinit, there's a difference, the latter is a result of the former)01:09
skarneteven if it succeeds the result will be frankensystemd01:09
skarnetnot something I want on my system01:09
netbsduseroh, sure, the odds are ill in our favour, but with things like sd-event and sd-bus, i am quite sure we can make a difference01:09
skarnetso01:10
skarnetsd_notify, as with everything systemd, is overengineered01:10
ArsenI'm not convinced, though, that libsystemd apis are strongly stupid enough to force internals to adjust01:10
netbsduserthese things win by offering a particular set of useful characteristics like OOM resilience and, crucially, they are available everywhere* (where everwhere is "all the systemd-powered distros")01:10
skarnetblah blah01:10
Arsenyou sure you didn't miss a word, I doubt it should be limited to only sysd-powered distros01:11
netbsduserlibfreeinit must be low enough in cost to be similarly compelling01:11
skarnetI believe in OOM resilience when I see programs that don't use heap memory01:11
skarnetI don't think libfreeinit will do that01:11
skarnetanyway, to finish before I go01:11
skarnet- s6 provides its own notification protocol, that's simpler to implement than sd_notify01:12
skarnet- I have a program, sdnotify-wrapper, that can be used to wrap a daemon using the sd_notify protocol to run under s601:12
skarnetand that piggybacks sd_notify into the s6 notification system01:12
skarnetso anything that uses sd_notify, you can use under s6 (but it's obviously less efficient than if you use the s6 protocol directly)01:13
ArsenI'd hope status notifications are infrequent enough for that to not be an issue01:13
netbsduserand that plays right into the awful situation where daemon authors like to link against libsystemd01:14
skarnetcontinuous status notifications are useless, only readiness notification is useful01:14
skarnet- what systemd calls "socket activation" is a mix of several different things with different semantics so I don't like this terminology, it is unclear01:14
netbsduseri'd rather they link against something that will let them give systemd their status messages and suchlike, or just as well write a newline into the s6 notification fd and close it (i think i remember that as being what one does)01:15
Arsenyet, even with that, it underwhelms what socket activation could do01:15
skarnets6 provides implementation of all these parts, but separates what is semantically different01:15
skarnet* it provides super-servers for inetd-style daemons01:16
skarnet* itr provides fd-holding for programs to store and retrieve live file descriptors such as sockets01:16
skarnet* it provides tools to preopen sockets, if needed, but it's a terrible idea (it cheats readiness)01:17
skarnetthe way systemd achieves speed is by cheating readiness, preopening stuff and launching services before it's safe to do so01:18
skarnets6 and s6-rc don't do that01:18
Arsensystemds claim about speed here are questionable frankly01:18
ArsenI'm very unconvinced in the argument for socket activation for performance purposes01:18
netbsduseri am entirely unconvinced that speed is a real merit of socket preopening01:18
skarnetoh, it is relatively fast - faster than anything you can achieve with a serial service manager anyway01:19
skarnetyeah, you're right to be unconvinced01:19
Arsenyes, but the word "serial" is a key part of it, nothing to do with sockets01:19
skarnetsocket activation is only one of the ways systemd cheats01:19
skarnetthe most crucial cheat is logging01:20
skarnetit starts stuff before the loggers are ready01:20
skarnetso if loggers eventually fails, boom, your initial logs are lost01:20
netbsduseri think Zarzycki who invented launchd had an interesting notion - launchd has no dependency logic whatsoever, it gets a helper daemon to preopen sockets and then one or two eagerly-started services set the ball rolling that ultimately triggers all the services to come up. but systemd in marrying that to traditional dependency-based startup gains little01:21
skarnetwell s6-rc is faster that that without cheating :P01:23
skarnethttps://skarnet.org/lists/supervision/2815.html shows a *slight* increase in speed when switching from systemd to s6-rc: 4-4.5% faster, which is not impressive01:23
skarnetbut the interesting part is that with s6-rc there's no cheating at all01:24
netbsduseri picked up an old mac recently to port some software to, and it's certainly not going to win any awards for fast bootup01:24
skarnetyou'll never lose logs, you'll never fake readiness01:24
skarnetwell launchd isn't exactly lightweight01:24
skarnetanyway, ping me tomorrow. Good night everyone!01:25
Arsensleep well01:26
bb|hcb:)01:26
netbsdusercheers. i have a lot of respect for the daemontools approach to supervision and i like how you keep that spirit with s6-rc. have a good night01:27
joergArsen: >> I don't think that's how find works<< right. would need a sh -c "weirly escaped command line". I found `rename` though, might do what I need01:28
bb|hcbI am leaving the old pad for kids to play with it as much as they please :) The new one is here: https://pad.dyne.org/pad/#/2/pad/edit/OxndgL71YfgX8ypl5BC2kuT9/p/04:43
Ariadnehi17:30
netbsduserafternoon17:34
Arsen0/17:37
ArsenAriadne: did you see the discussion from last night? I'd also like some Alpine insight into that17:38
golinuxIt seemed a little out of scope for this channel.17:49
golinuxWhich is to maintain eudev.17:50
AriadneArsen: about what?  alpine's position is that we trust skarnet to build a good init system17:52
netbsdusergolinux: you can't possibly regard this as having nothing to do with the broader question of breaking systemd's domination over our community17:57
ArsenAriadne: right, so I imagine alpine has no interest in eudev past the point of adapting mdev?18:00
Arsenmdevd*18:00
Arsenthe topic was about replacing udevs libsystemd with a standalone, portable implementation and removing other importabilities in udev itself18:00
Ariadnei would be in favor of that18:01
Ariadnebut yes, alpine plans to adapt mdevd in future18:01
Arsenright18:01
golinuxnetbsduser: Everything has something to do with something else.  For our purposes here the focus is eudev.18:04
Arsenanother thing, the freestanding implementation (which has been dubbed libfreeinit, and is a project that netbsduser wishes to undertake) is meant to provide a bridge between systemd and saner systems, and to slowly replace libsystemd in daemons that rely on it (for instance, those that use sd-bus or sd-daemon)18:04
Arsengiving first class support to "alternative" init schemes18:05
Arsenalpine could find use in that18:05
golinuxBut take that with a grain of salt because my association with Linux is ethical and philosophical more than technical.18:06
Arsengolinux: there's absolutely a technical connection between eudev and such a project18:07
golinuxAlso note that bb|hcb is away for the weekend so unable to participate in this discussion.18:07
Arsenthat is alright, so am I, I just happen to have a laptop with me :P18:07
Arsenanyway, when I started looking into updating eudev to be on-par with systemd-udevd, the goal I had was to minimize the maintenance effort and increase the rate at which patches can be applied to eudev from the upstream tree18:08
* golinux is always wired18:08
ArsenI managed to reduce that maintenance effort to - fixing merge conflicts, and - maintaining a libsystemd replacement in-tree18:09
netbsduserthe crucial element being the introduction of some saner standards. systemd's LISTEN_FDS/LISTEN_FDNAMES are tedious, for example. it would be prudent to define something better18:09
Arsenthe latter part would be put out of tree and made more universal with netbsduser's project, which came to conception a few weeks after I undertook the original effort, which was the same day (or the day after?) eudev was announced as retired18:09
netbsduserthat's the part of libfreeinit which is really important. in the meantime, i'd like daemon authors to stop linking libsystemd and start linking a library whose purpose is to provide some more universal abstractions over the differences between various service managers, where possible18:10
Arsenthat's the connection that makes this discussion an on-topic one18:10
Arsennow, of course, we don't want libfreeinit to be *just* a libsd replacement, but we don't want to cause further divergence in the ecosystem and cause issues, instead allowing for a smooth transitional path towards better apis than what systemd has to offer18:11
Arsenwhich is almost in-line with what seatd does, just a little farther, libseat doesn't provide a backwards compatible api18:12
joerghmm19:43
joergeven closer?19:43
skarnetnetbsduser:20:04
skarnet(spurious enter key)20:05
skarnetI'd be interested in having you over in #s6 on OFTC, in order to discuss details of the functionality you need from LISTEN_FDS and other parts of socket activation, and see if there's something missing in s6 wrt that, and maybe design a sane protocol you can implement in libfreeinit that you can add a sd_listen* stub over20:07
skarnetmore generally if the point of libfreeinit is to ease the transition from systemd APIs to saner systems, as opposed to running behind systemd, then it's something I'm interested in and want to have technical discussions about20:08
netbsduserskarnet: already there ;)20:12
skarnetoh groovy :D20:13
Arsenexciting!20:21
skarnetArsen: I see you're there too, and twice even XD20:22
Arsenthe single one was taken :P20:23
Arsenthough the person hadn't logged in in about a decade20:23
Arsenmight ask to have it merged into my account20:23
joerg(re freenode->libera) is doch immer der selbe scheiss, der teufel steckt im detail http://reisenweber.net/irclogs/libera/_eudev/search?q=fooo23:51
joergoops sorry, ECHAN23:52

Generated by irclog2html.py 2.17.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!