]> git.cameronkatri.com Git - mandoc.git/blobdiff - manuals.7
Updating web-site.
[mandoc.git] / manuals.7
index 0130121306bc2299f8ce18cb4479e22516fdc40d..f4fc9b090ae2a28923f84e66e62784c036da6ba0 100644 (file)
--- a/manuals.7
+++ b/manuals.7
@@ -1,4 +1,22 @@
-.Dd $Mdocdate: March 22 2009 $
+.\" $Id: manuals.7,v 1.9 2009/03/24 10:59:50 kristaps Exp $
+.\"
+.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@openbsd.org>
+.\"
+.\" 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: March 24 2009 $
 .Dt manuals 7
 .Os
 .\" SECTION
@@ -25,22 +43,22 @@ documentation
 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 CLASSIFICATION
-Classify your system component.  In
-.Ux ,
-each component has a manual section , which categorises the component's
-function.  The section of a manual is usually listed in parenthesis next
-to the component name, such as
-.Xr ps 1 ,
-section 1.  You can query a manual explicitly by its section:
-.Bd -literal -offset XXXX
-% man \-s 1 ps
-% apropos ps
-.Ed
+.Sh COMPOSITION
+Prepare your composition environment by copying over the manual template
+from 
+.Pa /usr/share/misc/mdoc.template .
 .Pp
-The following table lists classifications and the applicable manual
-sections:
+If this file doesn't exist, bug your administrator.
+.Em \&Do not
+start afresh or by copying another manual unless you know exactly what
+you're doing!
+.\" 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:
 .Pp
+.\" LIST
 .Bl -tag -width "XXXXXXXXXXXX" -offset indent -compact
 .It Em Section
 .Em Description
@@ -62,52 +80,31 @@ administrator utilities
 in-kernel routines
 .El
 .Pp
-Some examples in regular name/section form:
-.Pp
-.\" LIST
-.Bl -tag -width "File-formatX" -offset indent -compact
-.It Em Manual
-.Em Description
-.It Xr dc 4
-DEC/Intel 10/100 Ethernet device
-.It Xr usermod 8
-modify user login information
-.It Xr cc 1
-the C compiler
-.It Xr fortune 6
-print a random adage
-.It Xr open 2
-open or create a file for reading or writing
-.It Xr isspace 3
-whitespace character test
-.It Xr Pod::Man 3p
-convert POD data to formatted roff
-.It Xr tsleep 9
-process context sleep
-.It Xr passwd 5
-format of the password file
-.It Xr symlink 7
-symbolic link handling
-.El
-.\" SECTION
-.Sh COMPOSITION
-Prepare your composition environment by copying over the manual template
-from 
-.Pa /usr/share/misc/mdoc.template .
-.Em \&Do not
-start afresh or by copying another manual unless you know exactly what
-you're doing!
+If your manual falls into multiple categories, choose the most
+widely-used or, better, re-consider the topic of your manual to be more
+specific.  You can list all manuals per section by invoking
+.Xr apropos 1 ,
+then provide the
+.Fl s
+flag to
+.Xr man 1
+to see the specific section manual (section 1, in this example):
+.\" DISPLAY
+.Bd -literal -offset indent
+% apropos myname
+myname (1) - utility description
+myname (3) - library description
+% man \-s 1 myname
+.Ed
 .\" SUBSECTION
 .Ss Naming
-Your component will need a name by which to query its contents via
-.Xr man 1 .
-Keep it simple.  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.  You may
+want to look for other manuals by that same name before committing:
 .Pp
 .Dl % apropos myname
 .Pp
-Conventionally, manual files are named 
-.Pa myname.section ,
+Manual files are named 
+.Pa myname.mysection ,
 such as
 .Pa manuals.7
 for this document.
@@ -121,21 +118,18 @@ 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.  
-.Em Stay away from these methods!
+.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 manuals:
+There are two canonical references for writing mdoc.  Read them.
 .Pp
 .\" LIST
 .Bl -tag -width XXXXXXXXXXXXXXXX -offset indent -compact
@@ -166,7 +160,12 @@ or, if not available,
 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: March 24 2009 $
+.Pp
+If using version control, the first line in your manual should be a
+comment with the 
+.Li $Id: manuals.7,v 1.9 2009/03/24 10:59:50 kristaps Exp $
+rcs tag.
 .\" SUBSECTION
 .Ss Viewing
 mdoc documents may be paged to your terminal with traditional 
@@ -200,13 +199,15 @@ output:
 \&.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
@@ -236,9 +237,20 @@ 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 .
+.Em \&Do not
+use 
+.Sq \&Xo/Xc ;
+instead, either fine another way to write long lines, or, at the
+absolute worst, use CPP-style newline escapes.
+.\" SUBSECTION
 .Ss References 
 Other components may be referenced with the
-.Sq \&Xr ,
+.Sq \&Xr
 and
 .Sq \&Sx
 macros.  Make sure that these exist.  If you intend to distribute your
@@ -255,14 +267,12 @@ 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.