On Sun, Apr 16, 2017 at 09:57:38PM -0400, Steve Litt wrote: > On Sun, 16 Apr 2017 19:22:36 -0400 > Hendrik Boom <hend...@topoi.pooq.com> wrote: > > > On Sun, Apr 16, 2017 at 05:04:18PM -0400, Hendrik Boom wrote: > > > On Sun, Apr 16, 2017 at 09:59:36PM +0200, Enrico Weigelt, metux IT > > > consult wrote: > > > > > By the way: maybe we should write an RFC draft for the whole > > > > issue ... > > > > > > Looked for a relevant RFC. But found only this: > > > https://lists.ubuntu.com/archives/kernel-team/2008-December/003628.html > > > [RFC] [PATCH] notify init daemon when children are reparented to it > > > > > > But this doesn't seem to be quite what we want, and I can't say I > > > have enough context to understand it. > > > > That so-calledRFC seems to be very much in the style of > > requiring the init process to be intimately involved in process > > supervision actions, which is a strong constraint on what init > > systems can be chosen. And, I suspect, an init system that is so > > involved is a potential tool to gradually take over the entire OS, as > > systemd has done. > > And, in fact, being written in 2008, that so called rfc might have been > either the excuse or the inspiration for systemd. > > The "rfc" suffers from a perfectionism related to bikeshedding. Heaven > forbid there's ever a zombie or a process with a 'T' in the ps status > field! We simply MUST make a perfect init or supervisor system: Nothing > less will do. And while we're indulging our perfection, it's important > to remember that simplicity not be a priority at all. We will remain > oblivious to the fact that complexity and lack of encapsulation > creates flaws far worse than the flaws we're moving heaven and earth > to get rid of. And for gosh sakes, let's forget the facts: > > THE FACTS > > * sysvinit is perfectly workable for the vast majority of users, or at > least it was until the systemd people influenced the "upstreams" to > build in code to fail with sysvinit. > > * sysvinit plus daemontools is perfectly workable for almost all users > who are capable of writing a short run file and creating a symlink. > Daemontools suffers from none of the problems hand-wrung by the > "rfc", and indeed in a daemontools world (or at least as a runit > world which I assume is the same), the only process whose parent is > PID1 is runsvdir (equivalent of daemontools svscanboot). On my > computer, the executables reparented to PID1 are all stuff spawned by > dmenu or UMENU, as well as the gvim executable, which doubleforks > itself automatically. More on this later... > > * sysvinit plus OpenRC is perfectly workable for most users who don't > want daemon respawning. > > * sysvinit plus OpenRC plus daemontools is perfectly workable for users > who want some daemons respawnable. > > * A PID1 consisting of an rc file that somehow respawns the virtual > terminals, background-runs any daemons necessary, and then ends in a > loop that listens for and handles signals to PID1, is perfectly > workable for a person operating a small, special purpose computer. If > I knew how to respawn virtual terminals I'd do just that as a > demonstration, but respawning gettys is incredibly difficult: It > often kills the process that tried to respawn it. > > * The 83 line Suckless Init spawning an rc file is perfectly workable > for someone wanting simplicity and the ultimately simple PID1. > > Bottom line, all this bikeshedding perfectionism is unnecessary unless > you're a big commercial company trying to turn Free Software into a > cash cow by complexifying it. All the problems were solved long ago, or > are easily solvable by simple, user space addons needing no > modification to the likes of sysvinit, daemontools, runit, s6, Epoch, > OpenRC and the like. > > For instance, I have a real problem with zombies and T status processes > created by my use of dmenu and UMENU. It wouldn't be particularly > difficult for me to build a userspace daemontools analog, where one > process parented to PID1 (my analog of svscanboot) would spin around > listening for commands and/or scripts to run in such a way that IT was > the parent, or perhaps via analogs of svscan that don't respawn. I > could then modify dmenu and UMENU to message my daemon in order to run > commands. Notice the idea in this paragraph requires not one > modification to whatever "init system" you're using. And it's simple > enough that even I could implement it, given the time. > > There's no need to search for the perfect init or supervisor. Long ago > we got a bunch of them that are all good enough, and can be combined to > fill almost any need. This continuing search for a perfect init is just > wheel spinning, or perhaps an excuse for profit-driven complexification.
Thank you for this eloquent and extensive statement of principle. -- hendrik _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng