Next   Prev   Back to Table of Contents

APPENDICES

Further notes on this documentation

Some mom users are sure to ask: "Why is this documentation in html? If mom's so great, why not typeset the whole thing to show her off? And if groff's so great, why not write a man page?"

Valid questions, to be sure, and mom has answers. (Okay -- I have answers, but I speak for mom.)

The documentation is in html because I still find it the best tool for navigating lengthy manuals. Html, with its anchors and links, came into being precisely so people could do something they'd never been able to with the printed word: instantly track down internal and external references in a document.

To me, it's essential that people reading mom's documentation never have difficulty finding precisely the macro they need for a particular task. Equally, when reading up on a macro, they should never be presented with terms or other macro names for which they cannot instantly find accurate explanations. Short of having written the documentation in TeX for the info browser (and TeX bloat is one of the reasons I prefer to typeset with groff), I can think of no better way to achieve the kind of truly useful documentation I wanted than html.

Another reason for html is that working with mom necessarily involves creating files inside a text editor. I use elvis, a truly fabulous vi clone that does a terrific job of rendering basic (text only) html. I may have written mom, but I still regularly call on her documentation. Elvis, with its html capabilities, lets me write and format mom documents AND peruse her documentation, clicking on links as necessary, without ever leaving the comfy confines of my text editor.

Not everyone, of course, uses an editor with html capabilities. For them, firing up a browser is obviously necessary for reading mom's documentation. Browsers being what they are, and not everyone on the globe having the cash for muscle machines to run Galeon, or Konqueror, or Mozilla, or Netscape, their browser needs to be one that's fast and light -- Lynx, in other words.

Some mom users may notice the absence of graphics, frames, and (for the most part) tables in this documentation. The reason is simple: Lynx. People who, for whatever reason (choice or necessity), use Lynx to read the documentation must be able to make sense of it. All of it. Graphical examples of mom in action might have made some parts of the documentation easier to write, but would have excluded Lynx-only users. And it goes without saying that the documentation looks fine if you're reading it in a graphical browser.


Some reflections on mom

Mom, as a complete macro set, had her origins in a "library" of groff routines I wrote over the years to handle various aspects of typesetting and document processing that weren't adequately covered by ms, me, mm, and so on. Typically, I'd use the library to cobble together macro sets for new challenges as they came my way.

If, as Eric Raymond asserts, open source begins with a programmer scratching a personal itch, then mom can truly be called open source, even if, a mere humble set of macros standing on the shoulders of a giant named troff, she isn't programming at all.

As a writer living in a perpetual state of penury, all the computers I've ever owned have been hand-me-downs -- several generations out-of-date and "resource challenged". Disk space has always been an issue, as has processor speed and available RAM. One of the reasons I run Linux is that it has helped enormously to get the most out of my poor little boxes.

In Linux-land, the choice of typesetting systems basically comes down to groff or TeX. Both are wonderful -- monumental achievements if you ask me -- and both have their own particular strengths. However, for people in my financial position (and there are millions of us around the globe, in both developed and developing countries), TeX and groff have one big difference: size. TeX is huge. Even its most ardent supporters agree it suffers from bloat, on top of being complex and unwieldy to manage. Groff is tiny by comparison, occupying minimal disk space and having only a small memory footprint while at the same time being flexible and powerful, typographically speaking. I've run it successfully on a 386 with 8 megs of RAM and a 250 meg hard disk.

However, groff has always had a liability: it's incredibly geeky. Owing to its very long history, it -- and its "power users" -- have remained stuck in a time warp. Most common macro packages still look as they did in those decades when memory was exorbitantly expensive, and every byte mattered. Documentation -- not always easy to find -- is written as if all readers are computer whizzes, or at least have a university degree in one of the higher sciences.

By no means a stupid man, nor unfamiliar with the precepts of programming, I've more than once torn my hair out over the terseness and ambiguity of groff's documentation. Making sense of certain primitives has often involved days of testing, interpreting the documentation instead of just using the primitive.

(ADDENDUM to the previous two paragraphs: A tremendous amount of effort has gone into creating a groff manual that can be read with "info," as well as creating truly useful man pages. The info manual is clear and well-written, so my comments are actually out of date. I leave them in for the benefit of groff newbies, who may still find the documents a bit intimidating.)

For some time now, groff users and macro writers have had the option to use "long" names, yet have mostly chosen not to. With long names, it's possible to create macro sets that are humanly readable and easy to interpret, encouraging development and evolution. What's more, the macros themselves need not be terse, intimidating, and easily forgotten 1- or 2-letter commands inserted in the body of a document. They can be sensible and helpful to everyone, groff newbies and old hands alike.

Mom's macro file, om.tmac, uses long names, aliases, and a host of other groff goodies that have become part of the whole groff picture under the unflagging guidance of groff's current maintainer, Werner Lemberg. Nearly every macro, number register and string is "recognizable" simply by its name. The file is heavily commented. A consistent, if idiosyncratic, indenting style is used as well, significantly improving readability. Anyone wanting to futz around with mom's macros should be able to do so with a minimum of head scratching.


Contact the author

If you have any questions or comments about mom, suggestions to make, criticisms to offer, or bugs to report, use the groff mailing list at groff@ffii.org (subscription information available here) or contact me, Peter Schaffter, directly at df191@ncf.ca.

Please include the word "mom" or "groff" in the Subject: line of any message sent to my personal address, or you risk the wrath of my implacable spam filters. :)


Next   Prev   Top   Back to Table of Contents