FreeBSD Documentation Project: SGML
The Documentation Project uses SGML as the standard method of representing the documentation.
SGML is the Standard Generalized Markup Language.
In a nutshell (and apologies to any SGML purists in the audience who are offended) SGML is a language for writing other languages.
You have probably already used SGML, but you did not know it. HTML, the language used to write web pages, has a formal description. That description is written in SGML. When you are writing HTML you are not writing SGML (per se), but you are using a language that is defined using SGML.
There are many, many markup languages that are defined using SGML. HTML is one of them. Another is called "DocBook". This is a language designed specifically for writing technical documentation, and as such it has many tags (the markers of the form <tag content>) to describe technical documentation for subsequent formatting. The FreeBSD Documentation Project adopted it and defined some new elements to make it more precise.
For example, this is how you might write a brief paragraph in HTML (do not worry about the content, just look at the tags):
<p>The system's passwords are stored in <tt>/etc/passwd</tt>. To edit this file you should use <b><tt>vipw</tt></b>. However, if you just want to add a new user you can use <b><tt>adduser</tt></b>.</p>
The same paragraph, marked up using DocBook, looks like
<para>The system's passwords are stored in <filename>/etc/passwd</filename>. To edit this file you should use <command>vipw</command>. However, if you just want to add a new user you can use <command>adduser</command>.</para>
As you can see, DocBook is much more 'expressive' than HTML. In the HTML example the filename is marked up as being displayed in a 'typewriter' font. In the DocBook example the filename is marked up as being a 'filename', the presentation of the filename is not described.
There are a number of advantages to this more expressive form of markup:
It is not ambiguous or inconsistent.
You do not spend time thinking "Hmm, I need to show a filename, should I use 'tt', or 'b', or 'em'?"
Instead, you just use the right tag for the right job.
The conversion process from DocBook to other formats (HTML, PostScript®, and so on) makes sure that all <filename> elements are shown the same way.
You stop thinking about the presentation of your document, and instead concentrate on the content.
Because the documentation is not tied to any particular output format, the same documentation can be produced in many different formats—plain text, HTML, PostScript, RTF, PDF and so on.
The documentation is more 'intelligent', so more intelligent things can be done with it. For example, it becomes possible to automatically produce an index of the documentation that lists every command shown in the documentation.
This is a bit like Microsoft® Word stylesheets, only vastly more powerful.
Of course, with this power comes a price;
Because the number of tags you can use is much larger, it takes longer to learn all of them, and how to use them effectively.
A good way to learn SGML and DocBook is to read the source version of lots of example documents, seeing how other authors have written similar information.
The conversion process is not simple.
What if you do not know DocBook? Can you still contribute?
Yes you can. Quite definitely. Any documentation is better than no documentation. If you have documentation to contribute and it is not marked up in DocBook, do not worry.
Submit the documentation as normal. Someone else on the Project will grab your committed documentation, mark it up for you, and commit it. With a bit of luck they will then send you the marked-up text back. This is handy because you can do a "before and after" shot of the plain documentation and the marked up version and, hopefully, learn a bit more about the markup in the process.
Obviously, this slows down the committing process, since your submitted documentation needs to be marked up. This may take a few hours spread out over a few days, but it will get committed.
More information about SGML and DocBook?
First read the Documentation Project Primer. This aims to be a comprehensive explanation of everything you need to know in order to work with the FreeBSD documentation. This is a long document, split into many smaller pages. You can also view it as one large page.
- http://www.oasis-open.org/cover/sgml-xml.html
The SGML/XML web page. Includes countless pointers to more information about SGML.
- http://www-sul.stanford.edu/tools/tutorials/html2.0/gentle.html
The "Gentle Introduction to SGML". Recommended reading for anyone who wants to learn more about SGML from a beginner's perspective.
- http://www.oasis-open.org/docbook/
The DocBook DTD is maintained by OASIS. These pages are aimed at users who are already comfortable with SGML, and who want to learn DocBook.