man page RantI've been involved in a discussion of documentation on one of RedHat's mailing lists, which culminated in my posting the following rant:
<rant>Back in the good old days, I could fire up xman and find out *everything* I needed to know about a Unix system. I could even print out the entire blasted manual (that's what "man" stands for, remember?) with a single find command.</rant> (from this message.)
The man pages contained a description, however brief, of *every* program in the system, and a reference to other documentation if there was any. If someone asked me a question about a program, I could tell them to run "man foo" in total confidence that it would return something useful.
If a program had a configuration file with a funny syntax, _it_ had a man page and the program's man page had a reference to it. If I wanted to find out where apache kept its configuration files, I could run "man apache" and find out. On RH7.3 it says they're in /usr/local/apache. Big help.
Even now, when I go to the "help" menu on Emacs, I get a list of options that include printing the version number, browsing the hypertext manual, listing the current key bindings, and submitting a bug report. Try that with, say, gdmconfig and you get an about box. Whee!
One of Unix's biggest strengths was the fact that the online documentation was complete, easily accessed, and all in one place. The current chaotic mess is *not* an improvement.
 My main complaint at the time was the fact that RedHat doesn't bother
    documenting their changes to applications' configuration files.  I mention
    Apache -- the man page for Apache says that all the
    configuration files and web pages are in subdirectories of
    /usr/local/apache.  But RedHat puts the configuration files
    in /etc/httpd and the web pages in /var/web!
    Yes, there's a (somewhat obscure) command you can run to find this out,
    but the point is that you shouldn't have to.  And even
    rpm will only tell you where the files are, not what
    changes RedHat made to them.
 Before you conclude that this is a RedHat-specific problem, let me assure
    you that it isn't: almost(?) every distribution has the same
    problem, and that's not counting the myriad applications, like almost all
    of Gnome, that don't have any man pages at all, and little if
    any online help of any kind.  Let's face it:  programmers don't like to
    document their code, and technical writers are too busy.
 Back in the old days, the man pages were the
    manual! When you bought a Unix box from Sun, you also got a box full
    of looseleaf binders -- one for each section of the manual.  Pages
    were alphabetized but unnumbered, so that whenever you installed a new or
    updated program you could put its pages in their proper place.  If you
    patched a program or changed a compile-time default (like where the
    configuration files were located), you updated the corresponding
    information in the man page so that what was online was
    always accurate.
 Of course, the system administrator got the ``official'' copy of the
    manual, but that was OK because the entire manual was online -- where
    most users preferred to read it anyway.  But any user who felt like
    tending a printer for a couple of hours could print out their own, using a
    combination of find and man -t (which
    produced, as it does now, a typeset page on STDOUT).
 You could still do that, but it wouldn't do you nearly as much good,
    because the man pages are neither complete or correct on your
    average Linux distribution.
I could just end it here, and leave the conclusion as an exercise for the reader. But I won't -- I think there are things we can do.
The simplest thing is for the distributions' QA groups to refuse to sign off on any package that doesn't have a complete set of
manpages that's been patched for their distro, and for developers to write configuration programs that automatically patch the documentation from the compile-time configuration files. But that would make too much sense -- I don't expect to see it happen in my lifetime.
Note that I'm not calling for yet another book called Linux for the Complete Idiot, or even Linux for the Unsatisfied Expert. What I want is nothing less than a comprehensive, up-to-date, online manual -- something that you can browse on your own machine.
Browse... Now what does that remind me of?
 So how does this sound: Gather together all of the available
    documentation files on your machine, convert it to HTML, sort it,
    cross-index it, and serve it up to any browser you feel like pointing at
    it.  For good measure, cross-index it to the actual configuration
    files, the diff's between those and the ones in the original
    software distribution, and links to anything available on the web -- the
    developer's website, the bug database, maybe even mailing lists. 
 Now, this isn't as big an effort as it might seem: a lot of the available
    documentation is in places like /usr/share and either in HTML
    already (like Gnome and KDE's help files), or in man or
    info pages (which are pretty easy to convert to HTML, and
    there are CGI's floating around that can do the job).
 The main index, of course, would be generated by going through the various
    */bin directories to find out which apps you have and which
    packages they came from.  Then you go to the package installation
    database, which not only tells you where to look for help and
    configuration files but gives you a capsule description, too.  And if you
    installed the app from sources, there's probably still a directory
    somewhere in /usr/local/src -- with a doc
    subdirectory, if you're lucky.
Finally, if you had a net connection, you could hit the various software information sites (like Freshmeat)and search engines (like Google) to track down the ``official'' website for the application, plus any unofficial sites that may be floating around.
Now, none of this really requires any cooperation at all from either the distributions or the application developers. Even if they haven't written much documentation -- or any at all -- there's going to be a lot of information around just from the fact that it's been packaged up and installed on your system. The documentation, as they say, is out there. On the other hand, if the documentation scrounger existed we might hope that developers and distributors would eventually plan for it, and include the necessary information in their packages.
 Now, somebody has to actually write this documentation
    scrounger.  But it's either that, or wait for developers and distributions
    to keep their man pages up to date.