* "opportunist" dependencies:
According to `s6-rc:src/s6-rc/s6-rc-compile.c' as of current trunk,
unknown services in `dependencies' will make rc-compile complain and
die, which is the optimal behaviour with mandatory dependencies.
Nevertheless, I think it can be helpful to also support "opportunist"
dependencies: if said service is not enabled, it is silently ignored;
if said service is enabled, the dependency on it is considered in the
dependency resolution process. If this is supported, service
definition can be distributed in a more uniform manner (cf. OpenRC's
runscripts).
Of course, mandatory and opportunist dependencies should be specified
separately; for example, `need()' and `use()' are used respectively
in OpenRC for these requirements.
* Online `OR'/virtual dependencies:
According to `s6-rc:doc/faq.html' as of current trunk, `OR'/virtual
dependencies are handled offline. But I think online virtuals still
have use that do not have offline equivalents: apart from
interchangeable implementations like openssh/dropbear, there can also
be multiple enabled services providing one functionality at the same
time. For example, with a laptop, it's common and useful to have
`eth0' and `wlan0' both providing network access, and a
network-dependent service can start when either is up.
In my view (and probably the opinions of quite a few other people, see
discussion on the DNG list), parallelism in rc is mostly appealing to
desktop, not server users. Therefore, `eth0'/`wlan0' and similar use
cases are not insignificant, and thus it is worth the hassle to
implement online virtuals.
--
My current OpenPGP key:
4096R/0xE18262B5D9BF213A (expires: 2017.1.1)
D69C 1828 2BF2 755D C383 D7B2 E182 62B5 D9BF 213A
Received on Tue Sep 29 2015 - 02:46:02 UTC