Forwarding this, that was seemingly meant to the list. My reply comes
right afterwards.


------ Forwarded Message ------
From "grin" <[email protected]>
To [email protected]
Date 19/02/2026 21:12:46
Subject First time user experiences

Hello list,

Let me share my first time user experiences, while they're fresh. Hope
it helps. (Read it with a positive, helpful tone.)

So, installed s6 from Debian (which contains the base tools but not
s6-rc for example), with the webpages but no package pre-created
supervision structure.

It was okay, I went to the documentation. I am mainly about this.

There seem to be very simple introductory materials AND very tech
reference docs but nothing in-between. I was looking for some simple
architectural scheme, like:

s6-svscan                               - manages supervise daemons
 \
  |--s6-supervise daemon1               - spawns and monitors daemon1
  |  \- /usr/bin/daemon1 args
  \--s6-supervise daemon1/log           - spawns and monitors log of daemon1
     \- s6-log T /var/log/s6/daemon1

and some suggested directory structure like
/etc/s6/sv/             - collection of daemons
        sv/daemon1/run  - + sample
        sv/daemon1/type - + sample
        sv/daemon1/log/run - ...
       /service/        - the live services
        symlink to ../sv/daemon1

and that it's started by `s6-scsvan /etc/s6/supervise`.

And some tutorial like example what the huge amount of separate tools
are for. Yes, it is possible to decode that from the reference pages,
but that's usually for later, when the admin got the feeling how it
works, what tools to use for what. (The tools have absolute minimal
nondescriptive help, with nondescript switches. Debian shipping with
the webpages but not the manpages doesn't help either.)

Then I started to test stuff and it just works. Nice.
(Okay, it's easy for me coming from runit.)

Some quirks I have noticed.

- if supervise is killed the daemon keeps running, while a new
  supervise tries to start a new one. Is this intentional? Definitely
  not convenient.
- the restarted supervise seem to lose the death-toll immediately,
  including any proof that the daemon was running or dying or killed.
- you're in love with TAI64N which is fine, but the provided
  tai64nlocal isn't intelligent enough to match it in the middle of a
  text, like the output of s6-svdt or in `ls -la`. It's super human
  unfriendly this way.

Without specific examples I'm not even sure how some tools would work,
like svlink, svlisten* and various event based tools. Yes, I could
spend much more time to read through all reference pages (with no
examples) and try to figure it out, but I am not sure what would give
me the motivation for that, beyond the sometimes pretty abstract gains
compared to, say, runit.

Do not take me wrong: I think the code is fine, but possibly the
documentation, especially the onboarding would need more love, and
possibly more specific examples, especially for more complex cases.

I'll check back from time to time to see how it goes. :-)

Thanks for S6!

g

Reply via email to