Ian Jackson's general resolution to prevent init system coupling has failed to pass, the majority vote deciding that the resolution is unnecessary. This means that not only will Debian's default init be systemd, but packages will not be required to support other init systems. Presumably, this means that using other init systems on Debian (without using systemd as a base) will not be possible without major workarounds, or possibly at all. It also leaves the future of Debian projects such as kFreeBSD unclear, as systemd is linux specific.
The vote results can be found here
The winners are:
Option 4 "General Resolution is not required"
Yes.... this is the kind of philosophical mental model I want to document to help other people convert.
The very simple model of "linux has one file per package/daemon, mostly" and "freebsd has one monster file /etc/rc.conf that does it all" when examined in detail is somewhat more complicated.
So level 1 of learning how stuff is configured is the one liner I gave and level 2 of learning, in more detail, is your post, more or less.
Probably there's some kind of level 3 of learning in even more detail but its advanced enough I haven't figured out where it is yet much less what it is...
It's not so much one file vs many. Both have the many, but BSD init is much cleaner in return for lacking run-levels.
Linux with SysVInit: /etc/init.d has the basic scripts; each script reads settings from its own config file in /etc/default. /etc/rc0.d through /etc/rc6.d - one directory for each run level - contain a forest of symlinks to those scripts, with prefixes. The letter of the prefix is S for start or K for stop. The digits control the order they are run ("priority"). Enabling or disabling a daemon changes the corresponding symlinks. The run-level is controlled by /etc/inittab.
FreeBSD: /etc/rc.d has the basic scripts; each script reads settings from /etc/rc.conf. Common boilerplate is separated out into /etc/rc.subr. Dependencies between scripts are handled by special comment lines in the scripts. There is no forest of symlinks. Enabling or disabling a daemon is done in /etc/rc.conf. There are no run-levels. Single-user is a kind of fall-back if boot-to-multi-user fails, but it is possible to boot to single-user, and you can exit to single-user from multi-user by "kill -TERM 1".
Both systems have an /etc/rc.local to stuff any kind of one-time on-boot stuff you want that does not fit into a daemon model, or you do not want to bother with a daemon.
I have simplified the FreeBSD description a little, but not much. For example, there is a /usr/local/etc with its own parallel files. / is for the base system, and /usr/local is for packages/ports.
FYI, Entries for many services can be added to /etc/rc.conf.d/service-name . This cleans up rc.conf quite a bit.
Probably there's some kind of level 3 of learning...
So I understand that you would like to become a dev. We shall prepare the rite. Baptize your hard disk with /dev/zero so we can begin pure.