[talk] In Contrast to BSD init, A history of modern init systems (1992-2015)
raulcuza at gmail.com
Mon Sep 21 11:09:40 EDT 2015
This thread is exhibiting some of the communication problems that
plague init tools and service coordination. (The first sentence is
meant as humor and not a judgement of anyone's contribution to the
thread so far. If you take offense, please feel free to fork it and
release a funnier version.)
Back to the topic at hand: which is what exactly?
I posted a history of init systems. As the discussion evolved, it
became apparent that there is disagreement by what init systems are
supposed to do. Is the initiation system just for when the OS boots or
is it a service coordinator that plays a continuous role?
Thank you, Sujit, for sharing Jordan Hubbard's talk that elucidates a
critical reason for this disagreement. The hardware and situations
that operating system occupy today is remarkably different than 21
Traditionally a server gets installed on a machine and is brought up
in a particular physical environment with a set of configurations and
left to run. The init system in this case makes sure the server's
daemons get started in the right order and then steps out of the way.
This is the class of server I have managed in most of the work I've
done and what I called "classical".
A modern operating system cannot make the same assumptions that could
be made 21 years ago. It might be installed on a USB stick that gets
moved to to different machines. It might be on hardware or
virtual-hardware that gets put to sleep periodically (e.g. a laptop).
Network interfaces may come and go while the server is running (e.g.
USB Wi-Fi and Cellular). Isn't it the operating system's role in these
situations to coordinate these changes? If you say yes to this then it
follows that the 'init' service is not something that can happen at
boot and then walk away.
Now this is where I am stuck. How does BSD help software developers
navigate all these complex events while giving them the freedom to use
the wealth of useful tools that currently exist? It is wrong for our
OS to dictate that all software on it must use $X configuration format
and nothing else (where $X is whatever standard is chosen, for
instance XML or JSON). But if the OS is going to offer coordination
between services then there must be standards that they all use in
order to reap the benefits of the coordination service. And
configuration formats is just one of many standards that a service
coordination tool needs to be effective.
Hubbard mentioned having BSD run on watches and phones, which I really
could care less about since I don't administer or develop for these
platforms. What I do want to do is to choose BSD for all the places I
currently deploy servers, from virtual machines on developers laptops,
to iron on a rack, and instances in other company's stacks. And
apparently the 'classical' init system is one of the reasons this is
not easy for me to do yet.
No conclusions here, but something I will continue to think and talk
about. This is a very interesting problem whose solution will benefit
BSD's role in the tech world. Thank you for your contributions.
More information about the talk