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