supervision scripts, 2015-02

From: Avery Payne <>
Date: Sun, 01 Mar 2015 20:12:35 -0800

A household move consumed most of January and February, so not much was
accomplished until later in the month. Un-boxing things tends to do that...

- - - - - - - -
+ New definitions: lighttpd, minissdpd, knockd, nscd.

+ Merged all run templates that utilize /bin/sh into a single, master
template at sv/.run/run-sh. That master script now supports run
directories and chmod/chown. Other requirements will be placed there as

+ Use double indirection for ./run files to allow switching of template
environments is complete for run scripts and logging.

+ All fgetty/agetty/mingetty are now converted to the envdir format.

+ Service definition names can now be changed to support runit's SysV
shim mode. NOTE: this feature breaks compatibility with peer-dependency
support if you don't update the ./needs directory after a rename of a

In Progress:
- - - - - - - -
+ Revise the documentation. The README file will be split into separate
sections and placed into the doc/ directory.

+ Add design notes to the documentation. There are a LOT of assumptions
that aren't spelled out and people are misunderstanding why I have such
a quirky & bland set of scripts. This would help to explain the thought
process behind all of it; it will also allow some (hopefully
constructive and positive) criticism about the design.

+ Figure out how to get finish scripts fit into the schema for switching
between sh/execline/perp (see below for details on how perp fits in).
I'm not sure how this will turn out.

+ Clean up untested definitions, as part of the push for the 0.1
release. Many of the definitions have met the minimum test requirements
and I've not cleared out the "untested" marker. The current criteria
for being tested is (a) the service launches cleanly (b) the service
does not complain beyond warnings in its logs (c) the service appears to
function as intended.

+ Clean up all remaining one-off definitions, as part of the push for
the 0.1 release. A bit of work has already been done in this regard,
but there are still some that need to be brought up to current standards.

+ Finish the logging schema, as part of the push for the 0.1 release.
At this point I won't have a full "logging chain" but it will have all
the required features. This also means proper support for daemontools
and s6.

+ ...and of course, enough new definitions to justify a 0.1 release.
This means at least 122 *tested* entries in sv/ must be present, which
is about 10% of the count of init.d scripts used by Debian 7. There are
currently 96 entries but many are for getties, so after deducting 18
redundant entries that leaves 78 definitions, which means I need to make
44 entries. Worst case, I end up with a 0.1 release candidate.

Still To-Do / Experimental:
- - - - - - - -
+ Think about ways to incorporate perp, which uses a different format of
./run file. With the recent switch to support /bin/sh vs execline, this
is a real possibility now. That means sv/.run/run-sh,
sv/.run/run-execline, and now sv/.run/run-perp will become potential
targets for sv/.run/run. Madness, I tell you, madness!

+ Examine nosh. This is going take a bit of time to digest...

+ Re-think/re-work the ./needs directory. While nosh already has a
similar concept, I want to be able to support Laurent's future efforts
as well.

+ Prepare to re-license the project as BSD when I approach the 0.2
release, or approximately 244 entries. The entire point of the current
MPL2.0 license was to make contributions "sticky" enough to the project
until such point that it had some critical mass. When I reach over 240+
definitions, the project should be able to accommodate the needs of a
majority of people, so I won't have the same kind of need anymore, and
can re-license the scripts to something much more permissive.

+ Once my project is BSD licensed, I might be able to merge / hybridize
/ collaborate-on some of Toki's work (see below), completely supplanting
the existing sv/.run/run-sh arrangement. Or not. Or, something...we'll
just have to wait and see.

+ Support a modified version of usersv[1]. While scripted support for
user-defined process management will still be present, it would be nice
to see usersv expanded to support other frameworks, and not just runit
alone. This would give a passive (admin controlled) or active (user
controlled) option.


P.S. Toki Clover has been blazing a path with his own take on
supervision scripts for OpenRC. While there aren't nearly as many
definitions, the scripts are nearing completion, and I'm sure it won't
take much to extract the daemon settings from my project and port them
into his. Well done Toki!
Received on Mon Mar 02 2015 - 04:12:35 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC