Re: What's the difference between s6 and s6-rc?

2016-02-25 Thread Steve Litt
On Thu, 25 Feb 2016 19:26:11 +0100
Laurent Bercot  wrote:


>   Do you think a glossary page would help? 

Yes yes yes yes YES!!!

SteveT

Steve Litt 
February 2016 featured book: The Key to Everyday Excellence
http://www.troubleshooters.com/key


Re: What's the difference between s6 and s6-rc?

2016-02-25 Thread Steve Litt
On Thu, 25 Feb 2016 16:02:11 +0100
Laurent Bercot  wrote:

> On 25/02/2016 15:47, Steve Litt wrote:
> > Could somebody, in one or two sentences, tell me the difference
> > between s6 vs s6-init?
> > I'm not looking for references to big old documents: I'm looking for
> > one or two sentences telling me the difference.  
> 
>   Still, big old documents have all the information you need, and
> more: the first lines of http://skarnet.org/software/s6-rc/why.html
> would answer your question.
> 
>   s6 is a process supervisor. It manages daemons.
>   s6-rc is a service manager. It manages the global state of a
> machine: what service is up, what service is down, with dependencies
> between services, and "services" being implemented by either a daemon
> or a one-shot script.
> 
>   s6-rc is a management layer running *on top of* s6. It uses the s6
> infrastructure to do its job, but this job is not the same at all.

:-)

Expecting responses like the preceding, I specified 1 or 2 sentences.
Luckily, Jan Bramcamp answered my questions in 2 sentences, and then
went on to give even more details, so I now feel confident in
understanding the difference between the two.

Understanding http://skarnet.org/software/s6-rc/why.html depends on
understanding the exact meanings of "supervision suite" and "service
manager", two phrases sounding confusingly similar to me (and I doubt
I'm the only one). Also confusing is sometimes use of "supervision
tree", which I assume is a synonym for "supervision suite." And then in
your email reply (above), you refer to "process supervisor", which I
assume is yet another synonym for "supervision suite."

I wouldn't have understood http://skarnet.org/software/s6-rc/why.html
before reading Jan's 2 sentence explanation (with additions). Now I do.

I'll write more about this in a separate email...

Thanks,
 
SteveT

Steve Litt 
February 2016 featured book: The Key to Everyday Excellence
http://www.troubleshooters.com/key


Re: What's the difference between s6 and s6-rc?

2016-02-25 Thread Jan Bramkamp



On 25/02/16 15:47, Steve Litt wrote:

Hi all,

Could somebody, in one or two sentences, tell me the difference between
s6 vs s6-init?


For the subject i infer that you're asking for the difference between s6 
and s6-rc because there is no project or binary named s6-init.



I'm not looking for references to big old documents: I'm looking for
one or two sentences telling me the difference.


s6 is a collection of tools. Together these tools implement service 
supervision. One of those tools is s6-svscan. It scans a service 
directory and starts one s6-supervise process per service. It can also 
serve as pid 1 (aka init) of a unix system.


While s6 is a good service supervisor on its own it lacks service 
management. s6 can only track running processes and offers no ordering 
between them. You can block in a ./run script until all your 
dependencies are fulfilled or just exit and retry until it works. 
Writing this logic in every ./run script is a burden on the user but 
manageable.


On its own s6 can't track state not represented by a running process 
e.g. a mounted file system. This forces a system booting with just s6 to 
run a (possibly very small) script before s6-svscan can take over. 
Dependencies can only be modeled between running processes. This is good 
enough for small embedded devices or (most) systems run by a very 
experienced user willing to tinker with his boot process.


s6-rc builds on top of s6 to provide support for state tracking and 
changing on top of s6. It does this in a surprisingly safe, clean and 
simple way. This in turn makes it hard to understand because s6-rc is 
just an empty hull. You still have to write your own start code fitting 
into its structure. The s6 linux init repo contains an example of how it 
could look like.