]> git.cameronkatri.com Git - mandoc.git/blobdiff - manuals.7
Version.
[mandoc.git] / manuals.7
index 5ce9b645777875b3b67c3f43604a0986a0b434ff..c4be01fde037bba41d65729fda3ce4a94ea08e89 100644 (file)
--- a/manuals.7
+++ b/manuals.7
@@ -1,5 +1,21 @@
-.Dd $Mdocdate: March 22 2009 $
-.Dt manuals 7
+.\"    $Id: manuals.7,v 1.15 2009/06/25 10:55:40 kristaps Exp $
+.\"
+.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\" 
+.Dd $Mdocdate: June 25 2009 $
+.Dt MANUALS 7
 .Os
 .\" SECTION
 .Sh NAME
 .Pp
 A system component's documentation describes the utility of that
 component, whether it's a device driver, an executable or, most
-importantly, a game.  Although there are plenty of documents available
-on how to read 
-.Ux 
-documents, or where to find them, few focus on composition.
-.\" PARAGRAPH
+importantly, a game.  
 .Pp
 This document serves as a tutorial to writing 
 .Ux 
 documentation
 .Pq Dq manuals .
-If you add something to your operating system, whether it's a new file
-format or directory structure or device driver, it needs documentation.
 .\" SECTION
 .Sh COMPOSITION
-Prepare your composition environment by copying over the manual template
-from 
-.Pa /usr/share/misc/mdoc.template .
+First, copy over the manual template from 
+.Pa /usr/share/misc/mdoc.template
+into your source directory.
+.Pp
+.Dl % cp /usr/share/misc/mdoc.template \.
+.Pp
 .Em \&Do not
 start afresh or by copying another manual unless you know exactly what
-you're doing!
+you're doing!  If the template doesn't exist, bug your administrator.
 .\" SUBSECTION
 .Ss Section Numbering
 Find an appropriate section for your manual.  There may exist multiple
-manual names per section, so be specific.  A table of all available
-manual sections follows:
+manual names per section, so be specific:
 .Pp
 .\" LIST
 .Bl -tag -width "XXXXXXXXXXXX" -offset indent -compact
@@ -72,13 +84,14 @@ to see the specific section manual (section 1, in this example):
 .\" DISPLAY
 .Bd -literal -offset indent
 % apropos myname
-myname (1) - some description here
+myname (1) - utility description
+myname (3) - library description
 % man \-s 1 myname
 .Ed
 .\" SUBSECTION
 .Ss Naming
-Name your component.  Be terse, erring on the side of clarity.  You may
-want to look for other manuals by that same name before committing:
+Name your component.  Be terse, erring on the side of clarity.  Look for
+other manuals by that same name before committing:
 .Pp
 .Dl % apropos myname
 .Pp
@@ -86,7 +99,9 @@ Manual files are named
 .Pa myname.mysection ,
 such as
 .Pa manuals.7
-for this document.
+for this document.  Rename the template file:
+.Pp
+.Dl % mv mdoc.template myname.mysection
 .\" SUBSECTION
 .Ss Input Language
 Manuals should 
@@ -97,19 +112,12 @@ formatting language.
 .Pp
 There exist other documentation-specific languages, such as the
 historical
-.Xr me 7 ,
-.Xr ms 7
-and
 .Xr man 7
-packages of 
+package of 
 .Xr roff 7 ;
-newer languages such as DocBook, texinfo or schema-driven XML; or even
-ad-hoc conventions such as README files.  
+newer languages such as DocBook or texinfo; or even ad-hoc conventions
+such as README files.  
 .Em Avoid these formats .
-Historical formats fail to capture a manual's semantic content, instead
-only modelling its style.  Newer methods requires special,
-system-specific tools and may change or become obsolete over the
-life-time of your component.
 .Pp
 There are two canonical references for writing mdoc.  Read them.
 .Pp
@@ -122,7 +130,7 @@ macro reference
 .El
 .Pp
 Open the template you've copied into
-.Pa name.section
+.Pa myname.mysection
 and begin editing.
 .\" SUBSECTION
 .Ss Development Tools
@@ -133,54 +141,48 @@ While writing, make sure that your manual is correctly structured:
 You may spell-check your work as follows:
 .Pp
 .Dl % deroff name.1 | spell
+.Pp
+If 
+.Xr ispell 1
+is installed, it has a special mode for manuals:
+.Pp
 .Dl % ispell \-n name.1
 .Pp
 Use 
 .Xr cvs 1
-or, if not available,
+or
 .Xr rcs 1
 to version-control your work.  If you wish the last check-in to effect
 your document's date, use the following RCS tag for the date macro:
 .Pp
-.Dl \&.Dd $Mdocdate: March 22 2009 $
+.Dl \&.Dd $Mdocdate: June 25 2009 $
 .\" SUBSECTION
 .Ss Viewing
-mdoc documents may be paged to your terminal with traditional 
-tools such as
-.Xr nroff 1 ,
-.Xr groff 1 ,
-or with newer, more powerful tools such as
-.Xr mandoc 1 :
-.\" DISPLAY
-.Bd -literal -offset indent
-% nroff \-mandoc name.1 | less
-% groff \-Tascii \-mandoc name.1 | less
-% mandoc name.1 | less
-.Ed
-.Pp
-Other output formats are also supported:
-.\" DISPLAY
+mdoc documents may be paged to your terminal with 
+.Xr mandoc 1 .
+If you plan on distributing your work to systems without this tool,
+check it against
+.Xr groff 1 :
 .Bd -literal -offset indent
-% groff \-Tps \-mandoc name.1 | less
-% mandoc \-Thtml name.1 | less
+% mandoc \-Wall name.1 2>&1 | less
+% groff -mandoc name.1 2>&1 | less
 .Ed
 .\" SUBSECTION
 .Ss Automation
 Consider adding your mdoc documents to 
 .Xr make 1
-Makefiles in order to automatically check your input and generate
-output:
+Makefiles in order to automatically check your input:
 .Bd -literal -offset indent
-\&.SUFFIXES: .html .txt .1 .in
+\&.SUFFIXES: .1 .in
 
 \&.in.1:
        mandoc -Wall,error -Tlint $<
        cp -f $< $@
-\&.1.html:
-       mandoc -Thtml $< >$@
-\&.1.txt:
-       mandoc -Tascii $< | col -b >$@
 .Ed
+.\" SUBSECTION
+.Ss Licensing
+Your manual must have a license.  It should be listed at the start of
+your document, just as in source code.
 .\" SECTION
 .Sh BEST PRACTICES
 The
@@ -190,7 +192,7 @@ and
 files are indispensable in guiding composition.  In this section, we
 introduce some 
 .Ux
-manual best practices:
+manual best practises:
 .\" SUBSECTION
 .Ss Language
 .Bl -enum 
@@ -210,6 +212,17 @@ symbols and so on), use the escapes dictated in
 .Xr mdoc 7 .
 .El
 .\" SUBSECTION
+.Ss Style
+The structure of the mdoc language makes it very hard to have any
+particular format style.  Keep your lines under 72 characters in length.
+If you must have long option lines, use 
+.Sq \&Oo/Oc .
+The same goes for function prototypes.
+.Em \&Do not
+use 
+.Sq \&Xo/Xc .
+Find another way to structure your line.
+.\" SUBSECTION
 .Ss References 
 Other components may be referenced with the
 .Sq \&Xr
@@ -229,20 +242,14 @@ publications, please use the
 block macros.
 .\" SUBSECTION
 .Ss Formatting
-Let the front-ends worry about formatting for you, but if you must think
-about formatting (at times necessary, especially for tagged and columnar
-lists), assume that your output device is a fixed-width terminal window:
-.Bd -literal -offset indent
-\&.Bl \-tag \-width "-o outfile"
-\&.It \&Fl \&Ar outfile
-.Ed
-.Pp
-You may assume that the width calculated by the string literal 
-.Qq Fl o Ar outfile
-will be covered by the \-width argument.
+.Em Don't style your manual .
+Give it meaningful content.  The front-end will worry about formatting
+and style.
 .\" SECTION
 .Sh MAINTENANCE
 As your component changes and bugs are fixed, your manual may become out
-of date.  You may be tempted to use automation tools like Doxygen to
-smooth the development of your manuals.  Don't.  Source documentation is
-different from a component manual.
+of date.  You may be tempted to use tools like Doxygen to automate the
+development of your manuals.  Don't.
+.Pp
+.Em Manuals are part of a system component :
+if you modify your code or specifications, modify the documentation.