0db87befeb4c2901a80ec450dee870fe8f773d6d
[privoxy.git] / doc / webserver / developer-manual / documentation.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >Documentation Guidelines</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8 "><LINK
9 REL="HOME"
10 TITLE="Privoxy Developer Manual"
11 HREF="index.html"><LINK
12 REL="PREVIOUS"
13 TITLE="The CVS Repository"
14 HREF="cvs.html"><LINK
15 REL="NEXT"
16 TITLE="Coding Guidelines"
17 HREF="coding.html"><LINK
18 REL="STYLESHEET"
19 TYPE="text/css"
20 HREF="../p_doc.css"></HEAD
21 ><BODY
22 CLASS="SECT1"
23 BGCOLOR="#EEEEEE"
24 TEXT="#000000"
25 LINK="#0000FF"
26 VLINK="#840084"
27 ALINK="#0000FF"
28 ><DIV
29 CLASS="NAVHEADER"
30 ><TABLE
31 SUMMARY="Header navigation table"
32 WIDTH="100%"
33 BORDER="0"
34 CELLPADDING="0"
35 CELLSPACING="0"
36 ><TR
37 ><TH
38 COLSPAN="3"
39 ALIGN="center"
40 >Privoxy Developer Manual</TH
41 ></TR
42 ><TR
43 ><TD
44 WIDTH="10%"
45 ALIGN="left"
46 VALIGN="bottom"
47 ><A
48 HREF="cvs.html"
49 ACCESSKEY="P"
50 >Prev</A
51 ></TD
52 ><TD
53 WIDTH="80%"
54 ALIGN="center"
55 VALIGN="bottom"
56 ></TD
57 ><TD
58 WIDTH="10%"
59 ALIGN="right"
60 VALIGN="bottom"
61 ><A
62 HREF="coding.html"
63 ACCESSKEY="N"
64 >Next</A
65 ></TD
66 ></TR
67 ></TABLE
68 ><HR
69 ALIGN="LEFT"
70 WIDTH="100%"></DIV
71 ><DIV
72 CLASS="SECT1"
73 ><H1
74 CLASS="SECT1"
75 ><A
76 NAME="DOCUMENTATION">3. Documentation Guidelines</H1
77 ><P
78 >    All formal documents are maintained in Docbook SGML and located in the
79     <TT
80 CLASS="COMPUTEROUTPUT"
81 >doc/source/*</TT
82 > directory. You will need
83     <A
84 HREF="http://www.docbook.org"
85 TARGET="_top"
86 >Docbook</A
87 >, the Docbook 
88     DTD's and the Docbook modular stylesheets (or comparable alternatives),
89     and either <SPAN
90 CLASS="APPLICATION"
91 >jade</SPAN
92 > or
93     <SPAN
94 CLASS="APPLICATION"
95 >openjade</SPAN
96 > (recommended) installed in order to
97     build docs from source. Currently there is <A
98 HREF="../user-manual/index.html"
99 TARGET="_top"
100 ><I
101 CLASS="CITETITLE"
102 >user-manual</I
103 ></A
104 >,
105     <A
106 HREF="../faq/index.html"
107 TARGET="_top"
108 ><I
109 CLASS="CITETITLE"
110 >FAQ</I
111 ></A
112 >, and, of
113     course this, the <I
114 CLASS="CITETITLE"
115 >developer-manual</I
116 > in this format.
117     The <I
118 CLASS="CITETITLE"
119 >README</I
120 >, <I
121 CLASS="CITETITLE"
122 >AUTHORS</I
123 >
124     <I
125 CLASS="CITETITLE"
126 >privoxy.1</I
127 > (man page), and
128     <I
129 CLASS="CITETITLE"
130 >config</I
131 > files are also now maintained as Docbook
132     SGML. These files, when built, in the top-level source directory are
133     generated files! Also, the <SPAN
134 CLASS="APPLICATION"
135 >Privoxy</SPAN
136 > <TT
137 CLASS="FILENAME"
138 >index.html</TT
139 > (and a 
140     variation on this file, <TT
141 CLASS="FILENAME"
142 >privoxy-index.html</TT
143 >, 
144     meant for inclusion with doc packages), are maintained as SGML as well.
145     <SPAN
146 CLASS="emphasis"
147 ><I
148 CLASS="EMPHASIS"
149 >DO NOT edit these directly</I
150 ></SPAN
151 >. Edit the SGML source, or
152     contact someone involved in the documentation (at present Hal).
153     </P
154 ><P
155 >     <TT
156 CLASS="FILENAME"
157 >config</TT
158 > requires some special handling. The reason it
159      is maintained this way is so that the extensive comments in the file
160      mirror those in <I
161 CLASS="CITETITLE"
162 >user-manual</I
163 >. But the conversion 
164      process requires going from SGML to HTML to text to special formatting 
165      required for the embedded comments. Some of this does not survive so
166      well. Especially some of the examples that are longer than 80 characters.
167      The build process for this file outputs to <TT
168 CLASS="FILENAME"
169 >config.new</TT
170 >, 
171      which should be reviewed for errors and mis-formatting. Once satisfied
172      that it is correct, then it should be hand copied to
173      <TT
174 CLASS="FILENAME"
175 >config</TT
176 >.
177     </P
178 ><P
179 >     Other, less formal documents (e.g. <TT
180 CLASS="FILENAME"
181 >LICENSE</TT
182 >,
183      <TT
184 CLASS="FILENAME"
185 >INSTALL</TT
186 >) are maintained as plain text files in the
187      top-level source directory. At least for the time being.
188     </P
189 ><P
190 >     Packagers are encouraged to include this documentation. For those without
191      the ability to build the docs locally, text versions of each are kept in
192      CVS. HTML versions are also now being kept in CVS under 
193      <TT
194 CLASS="FILENAME"
195 >doc/webserver/*</TT
196 >.
197     </P
198 ><P
199 >     Formal documents are built with the Makefile targets of
200      <TT
201 CLASS="COMPUTEROUTPUT"
202 >make dok</TT
203 >, or alternately
204      <TT
205 CLASS="COMPUTEROUTPUT"
206 >make redhat-dok</TT
207 >. If you have problems,
208      try both. The build process uses the document SGML sources in
209      <TT
210 CLASS="COMPUTEROUTPUT"
211 >doc/source/*/*</TT
212 > to update all text files in
213      <TT
214 CLASS="COMPUTEROUTPUT"
215 >doc/text/</TT
216 > and to update all HTML
217      documents in <TT
218 CLASS="COMPUTEROUTPUT"
219 >doc/webserver/</TT
220 >.
221     </P
222 ><P
223 >     Documentation writers should please make sure documents build
224      successfully before committing to CVS, if possible.
225     </P
226 ><P
227 >     How do you update the webserver (i.e. the pages on privoxy.org)?
228      
229      <P
230 ></P
231 ><OL
232 TYPE="1"
233 ><LI
234 ><P
235 >        First, build the docs by running <TT
236 CLASS="COMPUTEROUTPUT"
237 >make
238         dok</TT
239 > (or alternately <TT
240 CLASS="COMPUTEROUTPUT"
241 >make
242         redhat-dok</TT
243 >). For PDF docs, do <TT
244 CLASS="COMPUTEROUTPUT"
245 >make
246         dok-pdf</TT
247 >.
248       </P
249 ></LI
250 ><LI
251 ><P
252 >        Run <TT
253 CLASS="COMPUTEROUTPUT"
254 >make webserver</TT
255 > which copies all
256         files from <TT
257 CLASS="COMPUTEROUTPUT"
258 >doc/webserver</TT
259 > to the
260         sourceforge webserver via scp.
261       </P
262 ></LI
263 ></OL
264 >
265   </P
266 ><P
267 >   Finished docs should be occasionally submitted to CVS
268    (<TT
269 CLASS="FILENAME"
270 >doc/webserver/*/*.html</TT
271 >) so that those without 
272    the ability to build them locally, have access to them if needed.
273    This is especially important just prior to a new release! Please
274    do this <SPAN
275 CLASS="emphasis"
276 ><I
277 CLASS="EMPHASIS"
278 >after</I
279 ></SPAN
280 > the <TT
281 CLASS="LITERAL"
282 >$VERSION</TT
283 > and
284    other release specific data in <TT
285 CLASS="FILENAME"
286 >configure.in</TT
287 > has been
288    updated (this is done just prior to a new release).
289   </P
290 ><DIV
291 CLASS="SECT2"
292 ><H2
293 CLASS="SECT2"
294 ><A
295 NAME="SGML">3.1. Quickstart to Docbook and SGML</H2
296 ><P
297 > If you are not familiar with SGML, it is a markup language similar to HTML. 
298  Actually, not a mark up language per se, but a language used to define 
299  markup languages. In fact, HTML is an SGML application. Both will use
300  <SPAN
301 CLASS="QUOTE"
302 >"tags"</SPAN
303 > to format text and other content. SGML tags can be much
304  more varied, and flexible, but do much of the same kinds of things. The tags,
305  or <SPAN
306 CLASS="QUOTE"
307 >"elements"</SPAN
308 >, are definable in SGML. There is no set
309  <SPAN
310 CLASS="QUOTE"
311 >"standards"</SPAN
312 >. Since we are using
313  <SPAN
314 CLASS="APPLICATION"
315 >Docbook</SPAN
316 >, our tags are those that are defined by 
317  <SPAN
318 CLASS="APPLICATION"
319 >Docbook</SPAN
320 >. Much of how the finish document is
321  rendered is determined by the <SPAN
322 CLASS="QUOTE"
323 >"stylesheets"</SPAN
324 >.
325  The stylesheets determine how each tag gets translated to HTML, or other
326  formats.</P
327 ><P
328 > Tags in Docbook SGML need to be always <SPAN
329 CLASS="QUOTE"
330 >"closed"</SPAN
331 >. If not, you
332  will likely generate errors. Example: <TT
333 CLASS="LITERAL"
334 >&#60;title&#62;My
335  Title&#60;/title&#62;</TT
336 >. They are also case-insensitive, but we
337  strongly suggest using all lower case. This keeps compatibility with
338  [Docbook] <SPAN
339 CLASS="APPLICATION"
340 >XML</SPAN
341 >.</P
342 ><P
343 > Our documents use <SPAN
344 CLASS="QUOTE"
345 >"sections"</SPAN
346 > for the most part. Sections
347  will be processed into HTML headers (e.g. <TT
348 CLASS="LITERAL"
349 >h1</TT
350 > for 
351  <TT
352 CLASS="LITERAL"
353 >sect1</TT
354 >). The <SPAN
355 CLASS="APPLICATION"
356 >Docbook</SPAN
357 > stylesheets
358  will use these to also generate the Table of Contents for each doc. Our 
359  TOC's are set to a depth of three. Meaning <TT
360 CLASS="LITERAL"
361 >sect1</TT
362 >, 
363  <TT
364 CLASS="LITERAL"
365 >sect2</TT
366 >, and <TT
367 CLASS="LITERAL"
368 >sect3</TT
369 > will have TOC 
370  entries, but <TT
371 CLASS="LITERAL"
372 >sect4</TT
373 > will not. Each section requires 
374  a <TT
375 CLASS="LITERAL"
376 >&#60;title&#62;</TT
377 > element, and at least one 
378  <TT
379 CLASS="LITERAL"
380 >&#60;para&#62;</TT
381 >. There is a limit of five section 
382  levels in Docbook, but generally three should be sufficient for our 
383  purposes.</P
384 ><P
385 > Some common elements that you likely will use: </P
386 ><P
387 >  <P
388 ></P
389 ><TABLE
390 BORDER="0"
391 ><TBODY
392 ><TR
393 ><TD
394 >      <SPAN
395 CLASS="emphasis"
396 ><I
397 CLASS="EMPHASIS"
398 >&#60;para&#62;&#60;/para&#62;</I
399 ></SPAN
400 >, paragraph delimiter. Most 
401       text needs to be within paragraph elements (there are some exceptions).
402     </TD
403 ></TR
404 ><TR
405 ><TD
406 >      <SPAN
407 CLASS="emphasis"
408 ><I
409 CLASS="EMPHASIS"
410 >&#60;emphasis&#62;&#60;/emphasis&#62;</I
411 ></SPAN
412 >, the stylesheets
413       make this italics.
414     </TD
415 ></TR
416 ><TR
417 ><TD
418 >      <SPAN
419 CLASS="emphasis"
420 ><I
421 CLASS="EMPHASIS"
422 >&#60;filename&#62;&#60;/filename&#62;</I
423 ></SPAN
424 >, files and directories.
425     </TD
426 ></TR
427 ><TR
428 ><TD
429 >      <SPAN
430 CLASS="emphasis"
431 ><I
432 CLASS="EMPHASIS"
433 >&#60;command&#62;&#60;/command&#62;</I
434 ></SPAN
435 >, command examples.
436     </TD
437 ></TR
438 ><TR
439 ><TD
440 >      <SPAN
441 CLASS="emphasis"
442 ><I
443 CLASS="EMPHASIS"
444 >&#60;literallayout&#62;&#60;/literallayout&#62;</I
445 ></SPAN
446 >, like 
447       <TT
448 CLASS="LITERAL"
449 >&#60;pre&#62;</TT
450 >, more or less.
451     </TD
452 ></TR
453 ><TR
454 ><TD
455 >      <SPAN
456 CLASS="emphasis"
457 ><I
458 CLASS="EMPHASIS"
459 >&#60;itemizedlist&#62;&#60;/itemizedlist&#62;</I
460 ></SPAN
461 >, list with bullets.
462     </TD
463 ></TR
464 ><TR
465 ><TD
466 >      <SPAN
467 CLASS="emphasis"
468 ><I
469 CLASS="EMPHASIS"
470 >&#60;listitem&#62;&#60;/listitem&#62;</I
471 ></SPAN
472 >, member of the above.
473     </TD
474 ></TR
475 ><TR
476 ><TD
477 >      <SPAN
478 CLASS="emphasis"
479 ><I
480 CLASS="EMPHASIS"
481 >&#60;screen&#62;&#60;/screen&#62;</I
482 ></SPAN
483 >, screen output, implies 
484       <TT
485 CLASS="LITERAL"
486 >&#60;literallayout&#62;</TT
487 >.
488     </TD
489 ></TR
490 ><TR
491 ><TD
492 >      <SPAN
493 CLASS="emphasis"
494 ><I
495 CLASS="EMPHASIS"
496 >&#60;ulink url="example.com"&#62;&#60;/ulink&#62;</I
497 ></SPAN
498 >, like 
499       HTML <TT
500 CLASS="LITERAL"
501 >&#60;a&#62;</TT
502 > tag.
503     </TD
504 ></TR
505 ><TR
506 ><TD
507 >      <SPAN
508 CLASS="emphasis"
509 ><I
510 CLASS="EMPHASIS"
511 >&#60;quote&#62;&#60;/quote&#62;</I
512 ></SPAN
513 >, for, doh, quoting text. 
514     </TD
515 ></TR
516 ></TBODY
517 ></TABLE
518 ><P
519 ></P
520 ></P
521 ><P
522 > Look at any of the existing docs for examples of all these and more.</P
523 ><P
524 > You might also find <SPAN
525 CLASS="QUOTE"
526 >"<A
527 HREF="http://www.bureau-cornavin.com/opensource/crash-course/"
528 TARGET="_top"
529 >Writing Documentation
530  Using DocBook - A Crash Course</A
531 >"</SPAN
532 > useful.</P
533 ></DIV
534 ><DIV
535 CLASS="SECT2"
536 ><H2
537 CLASS="SECT2"
538 ><A
539 NAME="DOCSTYLE">3.2. <SPAN
540 CLASS="APPLICATION"
541 >Privoxy</SPAN
542 > Documentation Style</H2
543 ><P
544 >    It will be easier if everyone follows a similar writing style. This 
545     just makes it easier to read what someone else has written if it 
546     is all done in a similar fashion.
547    </P
548 ><P
549 >    Here it is:
550    </P
551 ><P
552 >    <P
553 ></P
554 ><UL
555 ><LI
556 ><P
557 >       All tags should be lower case.
558       </P
559 ></LI
560 ><LI
561 ><P
562 >       Tags delimiting a <SPAN
563 CLASS="emphasis"
564 ><I
565 CLASS="EMPHASIS"
566 >block</I
567 ></SPAN
568 > of text (even small
569        blocks) should be on their own line. Like:
570        <P
571 CLASS="LITERALLAYOUT"
572 >&nbsp;&#60;para&#62;<br>
573 &nbsp;&nbsp;Some&nbsp;text&nbsp;goes&nbsp;here.<br>
574 &nbsp;&#60;/para&#62;<br>
575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
576 >
577        Tags marking individual words, or few words, should be in-line:
578        <P
579 CLASS="LITERALLAYOUT"
580 >&nbsp;&nbsp;Just&nbsp;to&nbsp;&#60;emphasis&#62;emphasize&#60;/emphasis&#62;,&nbsp;some&nbsp;text&nbsp;goes&nbsp;here.<br>
581 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
582 >
583      </P
584 ></LI
585 ><LI
586 ><P
587 >      Tags should be nested and step indented for block text like: (except
588       in-line tags) 
589      <P
590 CLASS="LITERALLAYOUT"
591 >&nbsp;&#60;para&#62;<br>
592 &nbsp;&nbsp;&#60;itemizedlist&#62;<br>
593 &nbsp;&nbsp;&nbsp;&#60;para&#62;<br>
594 &nbsp;&nbsp;&nbsp;&nbsp;&#60;listitem&#62;<br>
595 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Some&nbsp;text&nbsp;goes&nbsp;here&nbsp;in&nbsp;our&nbsp;list&nbsp;example.<br>
596 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/listitem&#62;<br>
597 &nbsp;&nbsp;&nbsp;&#60;/para&#62;<br>
598 &nbsp;&nbsp;&#60;/itemizedlist&#62;<br>
599 &nbsp;&#60;/para&#62;<br>
600 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
601 >
602       This makes it easier to find the text amongst the tags ;-)
603     </P
604 ></LI
605 ><LI
606 ><P
607 >     Use white space to separate logical divisions within a document, 
608      like between sections. Running everything together consistently 
609      makes it harder to read and work on.
610     </P
611 ></LI
612 ><LI
613 ><P
614 >     Do not hesitate to make comments. Comments can either use the 
615      &#60;comment&#62; element, or the &#60;!--  --&#62; style comment 
616      familiar from HTML. (Note in Docbook v4.x &#60;comment&#62; is 
617      replaced by &#60;remark&#62;.)
618     </P
619 ></LI
620 ><LI
621 ><P
622 >     We have an international audience. Refrain from slang, or English 
623      idiosyncrasies (too many to list :). Humor also does not translate 
624      well sometimes.
625    </P
626 ></LI
627 ><LI
628 ><P
629 >    Try to keep overall line lengths in source files to 80 characters or less
630     for obvious reasons. This is not always possible, with lengthy URLs for
631     instance.
632    </P
633 ></LI
634 ><LI
635 ><P
636 >    Our documents are available in differing formats. Right now, they 
637     are just plain text, TML, and PDF, but others are always a 
638     future possibility. Be careful with URLs (&#60;ulink&#62;), and avoid 
639     this mistake:
640    </P
641 ><P
642 >     My favorite site is &#60;ulink url="http://example.com"&#62;here&#60;/ulink&#62;.
643    </P
644 ><P
645 >     This will render as <SPAN
646 CLASS="QUOTE"
647 >"My favorite site is here"</SPAN
648 >, which is 
649      not real helpful in a text doc. Better like this:
650    </P
651 ><P
652 >     My favorite site is &#60;ulink url="http://example.com"&#62;example.com&#60;/ulink&#62;.
653    </P
654 ></LI
655 ><LI
656 ><P
657 >    All documents should be spell checked occasionally.
658     <SPAN
659 CLASS="APPLICATION"
660 >aspell</SPAN
661 > can check SGML with the
662     <TT
663 CLASS="LITERAL"
664 >-H</TT
665 > option. (<SPAN
666 CLASS="APPLICATION"
667 >ispell</SPAN
668 > I think
669     too.)
670    </P
671 ></LI
672 ></UL
673 >
674  </P
675 ></DIV
676 ><DIV
677 CLASS="SECT2"
678 ><H2
679 CLASS="SECT2"
680 ><A
681 NAME="AEN233">3.3. Privoxy Custom Entities</H2
682 ><P
683 >  <SPAN
684 CLASS="APPLICATION"
685 >Privoxy</SPAN
686 > documentation is using 
687   a number of customized <SPAN
688 CLASS="QUOTE"
689 >"entities"</SPAN
690 > to facilitate 
691   documentation maintenance. 
692  </P
693 ><P
694 >  We are using a set of <SPAN
695 CLASS="QUOTE"
696 >"boilerplate"</SPAN
697 > files with generic text,
698   that is used by multiple docs. This way we can write something once, and use
699   it repeatedly without having to re-write the same content over and over again.
700   If editing such a file, keep in mind that it should be
701   <SPAN
702 CLASS="emphasis"
703 ><I
704 CLASS="EMPHASIS"
705 >generic</I
706 ></SPAN
707 >. That is the purpose; so it can be used in varying 
708   contexts without additional modifications.
709  </P
710 ><P
711 >  We are also using what <SPAN
712 CLASS="APPLICATION"
713 >Docbook</SPAN
714 > calls 
715   <SPAN
716 CLASS="QUOTE"
717 >"internal entities"</SPAN
718 >. These are like variables in 
719   programming. Well, sort of. For instance, we have the
720   <TT
721 CLASS="LITERAL"
722 >p-version</TT
723 > entity that contains the current 
724   <SPAN
725 CLASS="APPLICATION"
726 >Privoxy</SPAN
727 > version string. You are strongly 
728   encouraged to use these where possible. Some of these obviously 
729   require re-setting with each release (done by the Makefile). A sampling of
730   custom entities are listed below. See any of the main docs for examples.
731  </P
732 ><P
733 >  <P
734 ></P
735 ><UL
736 ><LI
737 ><P
738 >    Re- <SPAN
739 CLASS="QUOTE"
740 >"boilerplate"</SPAN
741 > text entities are defined like:
742    </P
743 ><P
744 >    <TT
745 CLASS="LITERAL"
746 >&#60;!entity supported SYSTEM "supported.sgml"&#62;</TT
747 >
748    </P
749 ><P
750 >     In this example, the contents of the file,
751      <TT
752 CLASS="FILENAME"
753 >supported.sgml</TT
754 > is available for inclusion anywhere 
755      in the doc. To make this happen, just reference the now defined 
756      entity: <TT
757 CLASS="LITERAL"
758 >&#38;supported;</TT
759 > (starts with an ampersand 
760      and ends with a semi-colon), and the contents will be dumped into 
761      the finished doc at that point.
762    </P
763 ></LI
764 ><LI
765 ><P
766 >    Commonly used <SPAN
767 CLASS="QUOTE"
768 >"internal entities"</SPAN
769 >:
770   </P
771 ><P
772 ></P
773 ><TABLE
774 BORDER="0"
775 ><TBODY
776 ><TR
777 ><TD
778 >    <SPAN
779 CLASS="emphasis"
780 ><I
781 CLASS="EMPHASIS"
782 >p-version</I
783 ></SPAN
784 >: the <SPAN
785 CLASS="APPLICATION"
786 >Privoxy</SPAN
787
788     version string, e.g. <SPAN
789 CLASS="QUOTE"
790 >"3.1.1"</SPAN
791 >.
792    </TD
793 ></TR
794 ><TR
795 ><TD
796 >    <SPAN
797 CLASS="emphasis"
798 ><I
799 CLASS="EMPHASIS"
800 >p-status</I
801 ></SPAN
802 >: the project status, either 
803     <SPAN
804 CLASS="QUOTE"
805 >"alpha"</SPAN
806 >, <SPAN
807 CLASS="QUOTE"
808 >"beta"</SPAN
809 >, or <SPAN
810 CLASS="QUOTE"
811 >"stable"</SPAN
812 >.
813    </TD
814 ></TR
815 ><TR
816 ><TD
817 >    <SPAN
818 CLASS="emphasis"
819 ><I
820 CLASS="EMPHASIS"
821 >p-not-stable</I
822 ></SPAN
823 >: use to conditionally include 
824     text in <SPAN
825 CLASS="QUOTE"
826 >"not stable"</SPAN
827 > releases (e.g. <SPAN
828 CLASS="QUOTE"
829 >"beta"</SPAN
830 >).
831    </TD
832 ></TR
833 ><TR
834 ><TD
835 >    <SPAN
836 CLASS="emphasis"
837 ><I
838 CLASS="EMPHASIS"
839 >p-stable</I
840 ></SPAN
841 >: just the opposite.
842    </TD
843 ></TR
844 ><TR
845 ><TD
846 >    <SPAN
847 CLASS="emphasis"
848 ><I
849 CLASS="EMPHASIS"
850 >p-text</I
851 ></SPAN
852 >: this doc is only generated as text.
853    </TD
854 ></TR
855 ></TBODY
856 ></TABLE
857 ><P
858 ></P
859 ></LI
860 ></UL
861 >
862  </P
863 ><P
864 >  There are others in various places that are defined for a specific 
865   purpose. Read the source!
866  </P
867 ></DIV
868 ></DIV
869 ><DIV
870 CLASS="NAVFOOTER"
871 ><HR
872 ALIGN="LEFT"
873 WIDTH="100%"><TABLE
874 SUMMARY="Footer navigation table"
875 WIDTH="100%"
876 BORDER="0"
877 CELLPADDING="0"
878 CELLSPACING="0"
879 ><TR
880 ><TD
881 WIDTH="33%"
882 ALIGN="left"
883 VALIGN="top"
884 ><A
885 HREF="cvs.html"
886 ACCESSKEY="P"
887 >Prev</A
888 ></TD
889 ><TD
890 WIDTH="34%"
891 ALIGN="center"
892 VALIGN="top"
893 ><A
894 HREF="index.html"
895 ACCESSKEY="H"
896 >Home</A
897 ></TD
898 ><TD
899 WIDTH="33%"
900 ALIGN="right"
901 VALIGN="top"
902 ><A
903 HREF="coding.html"
904 ACCESSKEY="N"
905 >Next</A
906 ></TD
907 ></TR
908 ><TR
909 ><TD
910 WIDTH="33%"
911 ALIGN="left"
912 VALIGN="top"
913 >The CVS Repository</TD
914 ><TD
915 WIDTH="34%"
916 ALIGN="center"
917 VALIGN="top"
918 >&nbsp;</TD
919 ><TD
920 WIDTH="33%"
921 ALIGN="right"
922 VALIGN="top"
923 >Coding Guidelines</TD
924 ></TR
925 ></TABLE
926 ></DIV
927 ></BODY
928 ></HTML
929 >