Subject: Re: NetBSD master CVS tree commits
To: Chris G Demetriou <Chris_G_Demetriou@UX2.SP.CS.CMU.EDU>
From: Greg Hudson <ghudson@mit.edu>
List: current-users
Date: 03/30/1996 20:16:29
> I'd say that, for the majority of 'naive' uesrs out there, and for
> the majority of 'large installation' users out there, 'init.d' is
> definitely the right choice for the default.

Why do you think init.d is the right choice for the default for "large
installation" users?

If third-party software comes packaged as a tarfile which wants to be
extracted from the root of the filesystem so that it can drop a file
in /etc/init.d/foobar and a symlink in /etc/rc.d/95foobar, then this
makes life harder for me if I want to install the software on a file
server instead of on a single machine.

>From the perspective of standardizing machine configuration, my
experience at MIT is that although it's a much harder to do for
systems using /etc/init.d than it is on systems using the simpler
/etc/rc system, because of the added complexity of the /etc/rc system.
(I do not think /etc/rc is a "good" system; I just think that of the
two standard evils, /etc/rc is preferrable to /etc/init.d because of
its simplicity.  Not that /etc/init.d is particularly standard; every
vendor seems to do it differently.)

Making sure site-specific configuration tasks happen becomes a tiny
bit easier, but the effort saved is eclipsed by the above two
concerns.

A brief statement on why alphabetized symlinks in a directory is evil:
a good configuration file (or "means of storing configuration
information," if you prefer) should have the following properties:

	1. It should be easy to read and edit by a human who has not
	   read any documentation.
	2. It should have a syntax for comments (relevant to (1)).
	3. It should be verifiable by an automatic procedure.
	4. It should be editable by an automatic procedure.
	5. If possible, single errors should not invalidate the entire
	   configuration file.

A shell script has property 2 and, to some degree 1, but automatically
flunks 3, 4, and 5 because it's Turing-complete.  Symlinks in a
directory have property 3, 4, and 5, but they do not and never will
have property 1 and 2.

Symlinks in a directory have the main advantage that they allow you to
do ordering with the "ls" command.  I think this is a sorry reason to
use it over a configuration file.