Just a few bug fixes including mispellings in tag names.
[fspm_howto] / FreeSoftwareProjectManagementHOWTO.sgml
1 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
2
3 <article>
4
5 <!-- Header -->
6
7  <artheader>
8   <title>Free Software Development HOWTO</title>
9
10   <author>
11      <firstname>Benjamin</firstname>
12      <othername>Mako</othername>
13      <surname>Hill</surname>
14      <affiliation>
15         <address>
16            <email>mako@debian.org</email>
17
18         </address>
19      </affiliation>
20   </author>
21
22    <revhistory>
23       <revision>
24          <revnumber>v0.01</revnumber>
25          <date>1 January 2001</date>
26          <authorinitials>bch</authorinitials>
27           <revremark>
28           Initial Release
29          </revremark>
30       </revision>
31    </revhistory>
32
33   <abstract>
34     <indexterm>
35       <primary>fswd</primary>
36     </indexterm>
37
38     <para>
39      This HOWTO is designed for people with experience in programming
40      and some skills in managing a software project but who are new to
41      the world of Free Software. This document is meant to act as a
42      guide to the non-technical aspects of programming and was written
43      to act as a crash course in the people skills that aren't taught
44      to commercial coders but that can make or break a free software
45      project.
46     </para>
47   </abstract>
48
49  </artheader>
50
51 <!-- Section1: intro -->
52
53  <sect1 id="intro">
54    <title>Introduction</title>
55
56    <indexterm>
57     <primary>fswd!introduction</primary>
58    </indexterm>
59
60   <para>
61    For various reasons, this realease has been codenamed the
62    <emphasis>homade yogurt</emphasis> release.
63   </para>
64
65   <para>
66    New code names will appear as per industry standard
67    guidelines to emphasize the state-of-the-art-ness of this
68    document.
69   </para>
70
71   <para>
72    Skimming through Freshmeat provides mountains of reasons for this
73    HOWTO's existence--the Internet is littered with excellently
74    written and useful programs that have faded away into the Universe
75    of Free Software Forgottenness. This dismal scene made me ask
76    myself, "Why?"
77   </para>
78
79   <para>
80    This HOWTO tries to do a lot of thing (probably too many), but it
81    can't answer that question and won't attempt it. What this HOWTO
82    will attempt to do is give your Free Software project a fighting
83    chance-an edge. If you write a piece of crap that no one is
84    interested in, you can read this HOWTO until you recite it in your
85    sleep and your project will probably fail. Then again, you can
86    write a beautiful, relevent piece of software and follow every
87    instruction in this HOWTO and your software may still not make
88    it. Sometimes life is like that. However, I'll go out a limb and
89    say that if you write a great, relevant pieces of software and
90    ignore the advise in this HOWTO, you'll probably fail <emphasis>
91    more often</emphasis>.
92   </para>
93
94   <para>
95    A lot of the information in this HOWTO is best called common
96    sense. Of course, as any debate on interfaces will prove, what is
97    common sense to some programmers proves totally unintuitive to
98    others. After explaining bites and pieces of this HOWTO to Free
99    Software developers on several occasions, I realized that that
100    writing this HOWTO might provide a useful resource and a forum for
101    programmers to share ideas about what has and has not worked for
102    them. 
103   </para>
104
105   <para>
106
107   </para>
108
109   <para>
110    As anyone involved in any of what seems like an unending parade of
111    ridiculous intellectual property clashes will attest to, a little
112    bit of legalese proves important.
113   </para>
114
115 <!-- Section2: copyright -->
116
117   <sect2 id="copyright">
118    <title>Copyright Information</title>
119
120    <para>
121     This document is copyrighted (c) 2000 Stein Gjoen and is
122     distributed under the terms of the Linux Documentation Project
123     (LDP) license, stated below.  <emphasis>Replace with your name,
124     or supply a new license, when you use this skeleton for a new
125     HOWTO.</emphasis>
126    </para>
127
128    <para>
129     Unless otherwise stated, Linux HOWTO documents are
130     copyrighted by their respective authors. Linux HOWTO documents may
131     be reproduced and distributed in whole or in part, in any medium
132     physical or electronic, as long as this copyright notice is
133     retained on all copies. Commercial redistribution is allowed and
134     encouraged; however, the author would like to be notified of any
135     such distributions.
136    </para>
137
138    <para>
139     All translations, derivative works, or aggregate works
140     incorporating any Linux HOWTO documents must be covered under this
141     copyright notice. That is, you may not produce a derivative work
142     from a HOWTO and impose additional restrictions on its
143     distribution. Exceptions to these rules may be granted under
144     certain conditions; please contact the Linux HOWTO coordinator at
145     the address given below.
146    </para>
147
148    <para>
149     In short, we wish to promote dissemination of this
150     information through as many channels as possible. However, we do
151     wish to retain copyright on the HOWTO documents, and would like to
152     be notified of any plans to redistribute the HOWTOs.
153    </para>
154
155    <para>
156     If you have any questions, please contact 
157     <email>linux-howto@metalab.unc.edu</email>
158    </para>
159   </sect2>
160
161 <!-- Section2: disclaimer -->
162
163   <sect2 id="disclaimer">
164    <title>Disclaimer</title>
165
166    <para>
167     No liability for the contents of this documents can be accepted.
168     Use the concepts, examples and other content at your own risk.
169     As this is a new edition of this document, there may be errors
170     and inaccuracies, that may of course be damaging to your system.
171     Proceed with caution, and although this is highly unlikely,
172     the author(s) do not take any responsibility for that.
173    </para>
174
175    <para>
176     All copyrights are held by their by their respective owners, unless
177     specifically noted otherwise.  Use of a term in this document
178     should not be regarded as affecting the validity of any trademark
179     or service mark.
180    </para>
181
182    <para>
183     Naming of particular products or brands should not be seen 
184     as endorsements.
185    </para>
186
187    <para>
188     You are strongly recommended to take a backup of your system 
189     before major installation and backups at regular intervals.
190    </para>
191   </sect2>
192
193 <!-- Section2: newversions-->
194
195   <sect2 id="newversions">
196    <title>New Versions</title>
197
198     <indexterm>
199      <primary>(your index root)!news on</primary>
200     </indexterm>
201
202    <para>
203     This is the initial release. It is written to be released to
204     developers for critique and brainstorming and submitted to
205     Hampshire College for academic credit. Please keep in mind that
206     this version of the HOWTO is still in an infant stage and will be
207     revised extensively before it hits the LDP.
208    </para>
209
210    <para>
211     The latest version number of this document should always be listed 
212     at my webpage at<ulink url="http://people.debian.org/~mako/">
213     http://people.debian.org/~mako/</ulink> Debian.
214    </para>
215
216    <para>
217     The newest version of this HOWTO will always be made available at
218     the same website, in a variety of formats:
219    </para>
220
221    <para>
222    <itemizedlist>
223     <listitem>
224      <para>
225       <ulink url="http://people.debian.org/~mako/howto/fswd-howto.html">HTML</ulink>.
226      </para>
227     </listitem>
228
229     <listitem>
230      <para>
231        <ulink URL="http://people.debian.org/~mako/howto/fswd-howto.txt">plain text</ulink>.
232      </para>
233     </listitem>
234
235     <listitem>
236      <para>
237       <ulink url="http://people.debian.org/~mako/howto/fswd-howto.US.ps.gz">compressed 
238        postscript (US letter format)</ulink>.
239      </para>
240     </listitem>
241
242     <listitem>
243      <para>
244       <ulink url="http://people.debian.org/~mako/howto/fswd-howto.UF.ps.gz">compressed 
245        postscript (Universal format / 8.27x11in; 210x279mm)</ulink>.
246      </para>
247     </listitem>
248
249     <listitem>
250      <para>
251       <ulink url="http://people.debian.org/~mako/howto/fswd-howto.sgml">SGML source</ulink>.
252      </para>
253     </listitem>
254    </itemizedlist>
255    </para>
256   </sect2>
257
258 <!-- Section2: credits -->
259
260   <sect2 id="credits">
261    <title>Credits</title>
262
263    <para>
264     In this version I have the pleasure of acknowledging:
265    </para>
266
267    <para>
268     <emphasis>Karl Fogel</emphasis>, the author of <emphasis>Open
269     Source Development with CVS</emphasis> published by the Coriolis
270     Open Press. Larges parts of the book are available <ulink
271     url="http://cvsbook.red-bean.com">on the web</ulink>. 225 pages of
272     the book are available under the GPL and constitute the best
273     tutorial on CVS I have ever seen. The rest of the book covers,
274     "the challenges and philosophical issues inherent in running an
275     Open Source project using CVS." The book does a good job of
276     covering some of the subjects brought up in this HOWTO and much
277     more. <ulink url="http://cvsbook.red-bean.com">The book's
278     website</ulink> has information on ordering the book and provides
279     several translations of the chapters on CVS. I you are seriously
280     interested in running a Free Software project, you want this book.
281    </para>
282    
283    <para>
284     Karl Fogel can be reached at <email>kfogel (at) red-bean (dot)
285     com</email>
286    </para>
287    <para>
288     Also providing support and material, and inspiration for this
289     HOWTO is Eric S. Raymond for his prolific, consitent, and
290     carefully crafted arguments, to Lawrence Lessig for reminding me
291     of the importance of Free Software and to every user and developer
292     involved with the <ulink url="http://www.debian.org">Debian
293     Project</ulink>. The project has provided me with a home, a place
294     to practice Free Software advocacy and to make a difference, a
295     place to learn from those how have been involved with the movement
296     much longer than I, and an proof of a Free Software project that
297     <emphasis>definately, definately works</emphasis>.
298    </para>
299
300    <para>
301     Above all, I want to thank <emphasis>Richard Stallman</emphasis>
302     for his work at the Free Software Foundation and for never giving
303     up. Stallman provided the philosphical basis that attracts me to
304     Free Software and that drives me towards writing a document to
305     make sure it succeeds. RMS can always be emailed at <email>rms
306     (at) gnu (dot) org</email>.
307    </para>
308
309   </sect2>
310
311 <!-- Section2: feedback -->
312
313   <sect2 id="feedback">
314    <title>Feedback</title>
315
316    <para>
317     Feedback is most certainly welcome for this document. Without your
318     submissions and input, this document wouldn't exist. Something
319     missing? Don't hesitate to contact me and to write a chapter. I
320     want this document to be as much a product of the Free Software
321     development process that it heralds and I think its ultimate
322     success will be rooted in this fact. Please send your additions,
323     comments and criticisms to the following email address :
324     <email>mako (at) debian (dot) org</email>.
325    </para>
326    </sect2>
327
328 <!-- Section2: translations -->
329
330   <sect2 id="translations">
331    <title>Translations</title>
332
333    <para>
334     I know that not everyone speaks English. Translations are nice and
335     I'd love for this HOWTO to gain the kind of international reach
336     afforded by a translated version.
337    </para>
338    <para>
339     However, this HOWTO is still young and I have to yet to be
340     contacted about a translation so English is all that is
341     available. If you would like to help with or do a translation, you
342     will gain my utmost respect and admiration and you'll get to be
343     part of a cool process. If you are at all interested, please don't
344     hesitate to contact me at: <email>mako (at) debian (dot)
345     org</email>.
346    </para>
347    </sect2>
348  </sect1>
349
350 <!-- Section1: intro: END -->
351
352 <!-- Section1: starting -->
353
354  <sect1 id="starting">
355   <title>Starting a Project</title>
356
357    <indexterm>
358     <primary>fswd!starting</primary>
359    </indexterm>
360
361
362
363 <!-- Section2: chooseproject-->
364
365   <sect2 id="chooseproject">
366    <title>Choosing a Project</title>
367   </sect2>
368
369 <!-- Section2: chooselicense-->
370
371   <sect2 id="chooselicense">
372    <title>Deciding on a License</title>
373   </sect2>
374
375 <!-- Section2: chooseversioning-->
376
377   <sect2 id="chooseversioning">
378    <title>Choosing a Method of Version Numbering</title>
379   </sect2>
380
381 <!-- Section2: documentation-->
382
383   <sect2 id="documentation">
384    <title>Documentation</title>
385   </sect2>
386
387 <!-- Section2: presentation -->
388
389   <sect2 id="presentation">
390    <title>Other Presentation Issues</title>
391   </sect2>
392
393 <!-- Section2: futuredev -->
394
395   <sect2 id="futuredev">
396    <title>Nuturing Future Development</title>
397   </sect2>
398
399  </sect1>
400
401 <!-- Section1: starting: END -->
402
403 <!-- Section1: developers -->
404
405  <sect1 id="developers">
406   <title>Maintaining a Project: Interacting with Developers</title>
407
408    <indexterm>
409     <primary>fswd!developers</primary>
410    </indexterm>
411
412 <!-- Section2: delegation  -->
413
414   <sect2 id="delegation">
415    <title>Delegating Work</title>
416   </sect2>
417
418 <!-- Section2: branches  -->
419
420   <sect2 id="branches">
421    <title>Stable and Development Branches</title>
422   </sect2>
423
424 <!-- Section2: freezing -->
425
426   <sect2 id="freezing">
427    <title>Freezing</title>
428   </sect2>
429
430 <!-- Section2: codecram -->
431
432   <sect2 id="codecram">
433    <title>Avoiding the Code Cram Effect</title>
434   </sect2>
435
436 <!-- Section2: patching -->
437
438   <sect2 id="patching">
439    <title>Accepting and Rejecting Patches</title>
440   </sect2>
441  </sect1>
442
443 <!-- Section1: users -->
444
445  <sect1 id="users">
446   <title>Maintaining a Project: Interacting with Users</title>
447
448    <indexterm>
449     <primary>fswd!users</primary>
450    </indexterm>
451
452
453 <!-- Section2: announcing  -->
454
455   <sect2 id="announcing">
456    <title>Announcing Your Project</title>
457   </sect2>
458
459 <!-- Section2: testing -->
460
461   <sect2 id="testing">
462    <title>Testing and Testers</title>
463   </sect2>
464 </sect1>
465
466 <!-- Section1: samples  -->
467
468  <sect1 id="samples">
469   <title>Samples</title>
470
471   <para>
472    <emphasis>This section gives some simple SGML examples you could
473    use. Read the SGML source to see how it was done.</emphasis>
474   </para>
475
476   <para>
477    Further information and examples can be obtained from the publication
478    <ulink url="http://docbook.org/tdg/html/">DocBook: The Definitive 
479    Guide</ulink>. Written by <emphasis>Norman Walsh</emphasis>
480    and <emphasis>Leonard Muellner</emphasis>; 1st Edition, October 1999.
481   </para>
482   
483 <!-- Section2: lists -->
484
485   <sect2 id="lists">
486    <title>Lists</title>
487
488    <para>
489     <emphasis>Lists are used frequently, and are available in a number
490     of formats shown below.</emphasis>
491    </para>
492
493    <para>
494     A list in which each entry is marked with a bullet or other dingbat:
495    </para>
496
497    <para>
498     <itemizedlist>
499
500      <listitem>
501       <para>Apples</para>
502      </listitem>
503
504      <listitem>
505       <para>Oranges</para>
506      </listitem>
507
508      <listitem>
509       <para>Bananas</para>
510      </listitem>
511
512     </itemizedlist>
513    </para>
514
515    <para>
516     A list in which each entry is composed of a set of one or more
517     terms and an associated description:
518    </para>
519
520    <para>
521     <variablelist>
522
523      <varlistentry>
524       <term>Fruits</term>
525       <listitem>
526        <para>such as apples, oranges, and more.</para>
527       </listitem>
528      </varlistentry>
529
530      <varlistentry>
531       <term>Nuts</term>
532       <listitem>
533        <para>Don't eat too many; you are what you eat.</para>
534       </listitem>
535      </varlistentry>
536
537      <varlistentry>
538       <term>Vegetables</term>
539       <listitem>
540        <para>Potatos are spelled with care.</para>
541       </listitem>
542      </varlistentry>
543
544     </variablelist>
545    </para>
546
547    <para>
548     A list in which each entry is marked with a sequentially 
549     incremented label:
550    </para>
551
552    <para>
553      <orderedlist>
554
555       <listitem>
556        <para>Step one</para>
557       </listitem>
558
559       <listitem>
560        <para>Step two</para>
561       </listitem>
562
563      </orderedlist>
564    </para>
565   </sect2>
566
567 <!-- Section2: links -->
568
569   <sect2 id="links">
570    <title>Links</title>
571
572    <para>
573     <emphasis>Links can be used within your documents to refer to
574     different sections and chapters or to refer to documents external
575     to yours.</emphasis>
576    </para>
577
578    <sect3 id="int-links">
579     <title>Internal links</title>
580
581     <para>
582      Click on the <xref LinkEnd="samples"> link to jump to the top of
583      this chapter. Note the anchor at the section tag.
584     </para>
585    </sect3>
586
587    <sect3 id="ext-links">
588     <title>External links</title>
589
590     <para>
591      Click on <ulink url="http://www.linuxdoc.org/">this</ulink> link
592      to jump to the LDP site. Note you can use http, ftp, news and
593      other protocols in the locator if required.
594     </para>
595    </sect3>
596
597   </sect2>
598
599 <!-- Section2: images -->
600
601   <sect2 id="images">
602    <title>Images</title>
603
604    <para>
605     <emphasis>Avoid diagrams if possible as this cannot be rendered
606     in the ASCII outputs which are still needed by many around the
607     world.</emphasis>
608    </para>
609
610    <para>
611      <figure>
612       <title>Graphics Test Image</title>
613       <graphic FileRef="red.gif"></graphic>
614      </figure>
615    </para>
616
617    <para>
618     Here is another variation which allows for ALT text:
619    </para>
620
621    <para>
622      <mediaobject>
623
624       <imageobject>
625        <imagedata fileref="green.gif" format="gif">
626       </imageobject>
627
628       <textobject>
629        <phrase>
630         ALT text to be used: Green Ball
631        </phrase>
632       </textobject>
633
634       <caption>
635        <para>
636         Caption for the graphic goes here: This is a Green Ball.
637        </para>
638       </caption>
639      </mediaobject>
640    </para>
641   </sect2>
642
643  </sect1>
644
645 <!-- Section1: samples: END -->
646
647
648 <!-- Section1: structure -->
649
650  <sect1 id="structure">
651   <title>Structure</title>
652
653   <para>
654    <emphasis>A quick overview on how all parts fit together in the overall
655    structure. An example from the Multi Disk HOWTO is used.</emphasis>
656  </para>
657
658   <para>
659    As this type of document is supposed to be as much for learning as
660    a technical reference document I have rearranged the structure to
661    this end. For the designer of a system it is more useful to have
662    the information presented in terms of the goals of this exercise
663    than from the point of view of the logical layer structure of the
664    devices themselves. Nevertheless this document would not be
665    complete without such a layer structure the computer field is so
666    full of, so I will include it here as an introduction to how it
667    works.
668   </para>
669
670 <!-- Section2: logical-struct -->
671
672   <sect2 id="logical-struct">
673    <title>Logical structure</title>
674
675     <indexterm>
676      <primary>disk!structure, I/O subsystem</primary>
677     </indexterm>
678
679    <para>
680     This is based on how each layer access each other, traditionally
681     with the application on top and the physical layer on the bottom.
682     It is quite useful to show the interrelationship between each of
683     the layers used in controlling drives.
684
685     <screen>
686         ___________________________________________________________
687         |__     File structure          ( /usr /tmp etc)        __|
688         |__     File system             (ext2fs, vfat etc)      __|
689         |__     Volume management       (AFS)                   __|
690         |__     RAID, concatenation     (md)                    __|
691         |__     Device driver           (SCSI, IDE etc)         __|
692         |__     Controller              (chip, card)            __|
693         |__     Connection              (cable, network)        __|
694         |__     Drive                   (magnetic, optical etc) __|
695         -----------------------------------------------------------
696     </screen>
697    </para>
698
699    <para>
700     In the above diagram both volume management and RAID and
701     concatenation are optional layers. The 3 lower layers are in
702     hardware. All parts are discussed at length later on in this
703     document.
704    </para>
705   </sect2>
706
707 <!-- Section2: doc-struct -->
708
709   <sect2 id="doc-struct">
710    <title>Document structure</title>
711
712    <para>
713     Most users start out with a given set of hardware and some plans
714     on what they wish to achieve and how big the system should be.
715     This is the point of view I will adopt in this document in
716     presenting the material, starting out with hardware, continuing
717     with design constraints before detailing the design strategy that
718     I have found to work well. I have used this both for my own
719     personal computer at home, a multi purpose server at work and
720     found it worked quite well. In addition my Japanese co-worker in
721     this project have applied the same strategy on a server in an
722     academic setting with similar success.
723    </para>
724
725    <para>
726     Finally at the end I have detailed some configuration tables for
727     use in your own design. If you have any comments regarding this
728     or notes from your own design work I would like to hear from you
729     so this document can be upgraded.
730    </para>
731   </sect2>
732
733 <!-- Section2: reading-plan -->
734
735   <sect2 id="reading-plan">
736    <title>Reading plan</title>
737
738    <para>
739     <emphasis>As you go beyond 50 pages or so there will be a lot of
740     text that experts and even the experienced do not need to read.
741     Keeping in mind that we wish to care for all kinds of people in
742     the Linux world we might have to make a reading plan. Again,
743     an example follows from the Multi Disk HOWTO.</emphasis>
744    </para>
745
746    <para>
747     Although not the biggest HOWTO it is nevertheless rather big
748     already and I have been requested to make a reading plan to make
749     it possible to cut down on the volume.
750    </para>
751
752    <para>
753     <variablelist>
754
755      <varlistentry>
756       <term>Expert</term>
757       <listitem>
758        <para>
759         (aka the elite). If you are familiar with Linux as well as
760         disk drive technologies you will find most of what you need in
761         the appendices. Additionally you are recommended to read the
762         FAQ and the <XRef LinkEnd="bits-n-pieces">chapter.
763        </para>
764       </listitem>
765      </varlistentry>
766
767      <varlistentry>
768       <term>Experienced</term>
769       <listitem>
770        <para>
771         (aka Competent). If you are familiar with computers in
772         general you can go straight to the chapters on 
773         <XRef LinkEnd="technologies"> and continue from there on.
774        </para>
775       </listitem>
776      </varlistentry>
777
778      <varlistentry>
779       <term>Newbie</term>
780       <listitem>
781        <para>
782         (mostly harmless). You just have to read the whole thing.
783         Sorry. In addition you are also recommended to read all the
784         other disk related HOWTOs.
785        </para>
786       </listitem>
787      </varlistentry>
788
789     </variablelist>
790    </para>
791   </sect2>
792
793  </sect1>
794
795 <!-- Section1: structure: END -->
796
797
798 <!-- Section1: technologies -->
799
800  <sect1 id="technologies">
801   <title>Technologies</title>
802
803    <indexterm>
804     <primary>(your index root)!technologies</primary>
805    </indexterm>
806
807   <para>
808    <emphasis>Introduction of technology for the newbie with a few
809    references to detailed works. Remember that not everyone has
810    Internet access so you have to explain in sufficient details so
811    even the newbie can get by.</emphasis>
812   </para>
813
814  </sect1>
815
816 <!-- Section1: technologies: END -->
817
818
819 <!-- Section1: implement -->
820
821  <sect1 id="implement">
822   <title>Implementation</title>
823
824    <indexterm>
825     <primary>(your index root)!implementation</primary>
826    </indexterm>
827
828   <para>
829    <emphasis>Now your readers should have a sufficient knowledge of
830    what this is about and now we come to the hands on of implementing
831    your clever scheme.</emphasis>
832   </para>
833
834  </sect1>
835
836 <!-- Section1: implement: END -->
837
838
839 <!-- Section1: maint -->
840
841  <sect1 id="maint">
842   <title>Maintenance</title>
843
844    <indexterm>
845     <primary>(your index root)!maintenance</primary>
846    </indexterm>
847
848   <para>
849    <emphasis>Few systems and designs are maintenance free, here you
850    explain how to keep the system running.</emphasis>
851   </para>
852
853  </sect1>
854
855 <!-- Section1: maint: END -->
856
857
858 <!-- Section1: adv-issues -->
859
860  <sect1 id="adv-issues">
861   <title>Advanced Issues</title>
862
863    <indexterm>
864     <primary>(your index root)!advanced topics</primary>
865    </indexterm>
866
867   <para>
868    <emphasis>You can get most things up and running in a quick and
869    dirty fashion, useful for testing and getting used to how things
870    work. For more serious use you would need to be a little more
871    advanced. This is the place to explain it all, if applicable.</emphasis>
872   </para>
873
874  </sect1>
875
876 <!-- Section1: adv-issues: END -->
877
878
879 <!-- Section1: moreinfo -->
880
881  <sect1 id="moreinfo">
882   <title>Further Information</title>
883
884    <indexterm>
885     <primary>(your index root)!information resources</primary>
886    </indexterm>
887
888   <para>
889    <emphasis>A HOWTO cannot describe everything, some times the user
890    has to venture out on th enet to get more information or just
891    updates. Here is the place to tell where and how. Again examples
892    from the Multi Disk HOWTO, replace as needed.</emphasis> There is wealth
893    of information one should go through when setting up a major system,
894    for instance for a news or general Internet service provider.  The
895    FAQs in the following groups are useful:
896   </para>
897
898 <!-- Section2: newsgroups -->
899
900   <sect2 id="newsgroups">
901    <title>News groups</title>
902
903     <indexterm>
904      <primary>disk!information resources!news groups</primary>
905     </indexterm>
906
907    <para>Some of the most interesting news groups are:
908
909     <itemizedlist>
910
911      <listitem>
912       <para>
913        <ulink url="news:comp.arch.storage">Storage</ulink>.
914       </para>
915      </listitem>
916
917      <listitem>
918       <para>
919        <ulink url="news:comp.sys.ibm.pc.hardware.storage">PC storage</ulink>.
920       </para>
921      </listitem>
922
923      <listitem>
924       <para>
925        <ulink url="news:alt.filesystems.afs">AFS</ulink>.
926       </para>
927      </listitem>
928
929      <listitem>
930       <para>
931        <ulink url="news:comp.periphs.scsi">SCSI</ulink>.
932       </para>
933      </listitem>
934
935      <listitem>
936       <para>
937        <ulink url="news:comp.os.linux.setup">Linux setup</ulink>.
938       </para>
939      </listitem>
940
941     </itemizedlist>
942    </para>
943
944    <para>
945     Most newsgroups have their own FAQ that are designed to answer most
946     of your questions, as the name Frequently Asked Questions indicate.
947     Fresh versions should be posted regularly to the relevant newsgroups.
948     If you cannot find it in your news spool you could go directly to the
949     <ulink url="ftp://rtfm.mit.edu/">FAQ main archive FTP site</ulink>.
950     The WWW versions can be browsed at the 
951     <ulink url="http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html">FAQ
952     main archive WWW site</ulink>.
953    </para>
954
955    <para>
956     Some FAQs have their own home site, of particular interest:
957
958     <itemizedlist>
959
960      <listitem>
961       <para>
962        <ulink url="http://www.paranoia.com/~filipg/HTML/LINK/F_SCSI.html">SCSI FAQ</ulink> 
963        and
964       </para>
965      </listitem>
966
967      <listitem>
968       <para>
969        <ulink url="http://alumni.caltech.edu/~rdv/comp_arch_storage/FAQ-1.html">comp.arch.storage FAQ</ulink>.
970       </para>
971      </listitem>
972
973     </itemizedlist>
974    </para>
975   </sect2>
976
977 <!-- Section2: maillists -->
978
979   <sect2 id="maillists">
980    <title>Mailing Lists</title>
981
982     <indexterm>
983      <primary>disk!information resources!mailing lists</primary>
984     </indexterm>
985
986    <para>
987     These are low-noise channels mainly for developers. Think twice
988     before asking questions there as noise delays the development.
989     Some relevant lists are <email>linux-raid</email>,
990     <email>linux-scsi</email> and <email>linux-ext2fs</email>.  Many
991     of the most useful mailing lists run on the <Literal
992     remap="tt">vger.rutgers.edu</Literal> server but this is
993     notoriously overloaded, so try to find a mirror. There are some
994     lists mirrored at <ulink url="http://www.redhat.com">The Redhat
995     Home Page</ulink>. Many lists are also accessible at <ulink
996     url="http://www.linuxhq.com/lnxlists">linuxhq</ulink>, and the
997     rest of the web site contains useful information as well.
998    </para>
999
1000    <para>
1001     If you want to find out more about the lists available you can send
1002     a message with the line <command>lists</command> to the list server
1003     at <email>majordomo@vger.rutgers.edu</email>.
1004     If you need help on how to use the mail server just send the line
1005     <command>help</command> to the same address.  Due to the
1006     popularity of this server it is likely it takes a bit to time before
1007     you get a reply or even get messages after you send a
1008     <command>subscribe</command> command.
1009    </para>
1010
1011    <para>
1012     There is also a number of other majordomo list servers that can
1013     be of interest such as the EATA driver list
1014     (<email>linux-eata@mail.uni-mainz.de</email>)
1015     and the Intelligent IO list <email>linux-i2o@dpt.com</email>.
1016    </para>
1017
1018    <para>
1019     Mailing lists are in a state of flux but you can find links to a
1020     number of interesting lists from the 
1021     <ulink url="http://www.linuxdoc.org/">Linux Documentation
1022     Homepage</ulink>.
1023    </para>
1024   </sect2>
1025
1026 <!-- Section2: howto -->
1027
1028   <sect2 id="howto">
1029    <title>HOWTO</title>
1030
1031     <indexterm>
1032      <primary>disk!information resources!HOWTOs</primary>
1033     </indexterm>
1034
1035    <para>
1036     These are intended as the primary starting points to get the
1037     background information as well as show you how to solve a
1038     specific problem. Some relevant HOWTOs are
1039     <Literal remap="tt">Bootdisk</Literal>, 
1040     <Literal remap="tt">Installation</Literal>,
1041     <Literal remap="tt">SCSI</Literal> and 
1042     <Literal remap="tt">UMSDOS</Literal>.  The main site for these is the
1043     <ulink url="http://www.linuxdoc.org/">LDP archive</ulink>at
1044     Metalab (formerly known as Sunsite).
1045    </para>
1046
1047    <para>
1048     There is a a new HOWTO out that deals with setting up a DPT RAID
1049     system, check out the
1050     <ulink url="http://www.ram.org/computing/linux/dpt_raid.html">DPT RAID
1051     HOWTO homepage</ulink>.
1052    </para>
1053   </sect2>
1054
1055 <!-- Section2: local-res -->
1056
1057   <sect2 id="local-res">
1058    <title>Local Resources</title>
1059
1060     <indexterm>
1061      <primary>disk!information resources!local</primary>
1062     </indexterm>
1063
1064    <para>
1065     In most distributions of Linux there is a document directory
1066     installed, have a look in the <filename>/usr/doc</filename>
1067     directory. where most packages store their main documentation and
1068     README files etc.  Also you will here find the HOWTO archive 
1069     (<filename>/usr/doc/HOWTO</filename>) of ready formatted HOWTOs
1070     and also the mini-HOWTO archive 
1071     (<filename>/usr/doc/HOWTO/mini</filename>) of plain text
1072     documents.
1073    </para>
1074
1075    <para>
1076     Many of the configuration files mentioned earlier can be found in
1077     the <filename>/etc</filename> directory. In particular you will
1078     want to work with the <filename>/etc/fstab</filename> file that
1079     sets up the mounting of partitions and possibly also
1080     <filename>/etc/raidtab</filename> file that is used for the
1081     <Literal remap="tt">md</Literal> system to set up RAID.
1082    </para>
1083
1084    <para>
1085     The kernel source in <filename>/usr/src/linux</filename> is, of
1086     course, the ultimate documentation. In other words, <quote>use
1087     the source, Luke</quote>. It should also be pointed out that the
1088     kernel comes not only with source code which is even commented
1089     (well, partially at least) but also an informative
1090     <filename>/usr/src/linux/Documentation</filename>. If you are
1091     about to ask any questions about the kernel you should read this
1092     first, it will save you and many others a lot of time and
1093     possibly embarrassment.
1094    </para>
1095
1096    <para>
1097     Also have a look in your system log file
1098     (<filename>/var/log/messages</filename>) to see what is going on
1099     and in particular how the booting went if too much scrolled off
1100     your screen. Using <command>tail -f /var/log/messages</command>
1101     in a separate window or screen will give you a continuous update
1102     of what is going on in your system.
1103    </para>
1104
1105    <para>
1106     You can also take advantage of the  <filename>/proc</filename>
1107     file system that is a window into the inner workings of your
1108     system. Use <command>cat</command> rather than
1109     <command>more</command> to view the files as they are reported as
1110     being zero length. Reports are that <command>less</command> works
1111     well here.
1112    </para>
1113   </sect2>
1114
1115 <!-- Section2: web -->
1116
1117   <sect2 id="web">
1118    <title>Web Sites</title>
1119
1120     <indexterm>
1121      <primary>disk!information resources!WWW</primary>
1122     </indexterm>
1123     <indexterm>
1124      <primary>disk!information resources!web pages</primary>
1125     </indexterm>
1126
1127    <para>
1128     There are a huge number of informative web sites available. By
1129     their very nature they change quickly so do not be surprised
1130     if these links become quickly outdated.
1131    </para>
1132
1133    <para>
1134     A good starting point is of course the 
1135     <ulink url="http://www.linuxdoc.org/">Linux Documentation
1136     Project</ulink> home page, an information central for
1137     documentation, project pages and much more.
1138    </para>
1139
1140    <para>
1141     Please let me know if you have any other leads that can be 
1142     of interest.
1143    </para>
1144   </sect2>
1145
1146  </sect1>
1147
1148 <!-- Section1: moreinfo: END -->
1149
1150
1151 <!-- Section1: help -->
1152
1153  <sect1 id="help">
1154   <title>Getting Help</title>
1155
1156    <indexterm>
1157     <primary>(your index root)!assistance, obtaining</primary>
1158    </indexterm>
1159
1160   <para>
1161    In the end you might find yourself unable to solve your problems
1162    and need help from someone else. The most efficient way is either
1163    to ask someone local or in your nearest Linux user group, search
1164    the web for the nearest one.
1165   </para>
1166
1167   <para>
1168    Another possibility is to ask on Usenet News in one of the many,
1169    many newsgroups available. The problem is that these have such a
1170    high volume and noise (called low signal-to-noise ratio) that your
1171    question can easily fall through unanswered.
1172   </para>
1173
1174   <para>
1175    No matter where you ask it is important to ask well or you will
1176    not be taken seriously. Saying just <emphasis remap="it">my disk
1177    does not work</emphasis> is not going to help you and instead the
1178    noise level is increased even further and if you are lucky someone
1179    will ask you to clarify.
1180   </para>
1181
1182   <para>
1183    Instead describe your problems in some detail that will enable
1184    people to help you. The problem could lie somewhere you did not
1185    expect. Therefore you are advised to list the following information
1186    about your system:
1187   </para>
1188
1189   <para>
1190    <variablelist>
1191
1192     <varlistentry>
1193      <term>Hardware</Term>
1194      <listitem>
1195       <para>
1196        <itemizedlist>
1197         <listitem>
1198          <para>Processor</para>
1199         </listitem>
1200
1201         <listitem>
1202          <para>DMA</para>
1203         </listitem>
1204
1205         <listitem>
1206          <para>IRQ</para>
1207         </listitem>
1208
1209         <listitem>
1210          <para>Chip set (LX, BX etc)</para>
1211         </listitem>
1212
1213         <listitem>
1214          <para>Bus (ISA, VESA, PCI etc)</para>
1215         </listitem>
1216
1217         <listitem>
1218          <para>
1219           Expansion cards used (Disk controllers, video, IO 
1220           etc.)
1221          </para>
1222         </listitem>
1223
1224        </itemizedlist>
1225       </para>
1226      </listitem>
1227     </varlistentry>
1228
1229     <varlistentry>
1230      <term>Software</term>
1231      <listitem>
1232       <para>
1233        <itemizedlist>
1234
1235         <listitem>
1236          <para>BIOS (On motherboard and possibly SCSI host adapters)</para>
1237         </listitem>
1238
1239         <listitem>
1240          <para>LILO, if used</para>
1241         </listitem>
1242
1243         <listitem>
1244          <para>
1245           Linux kernel version as well as possible modifications 
1246           and patches
1247          </para>
1248         </listitem>
1249
1250         <listitem>
1251          <para>Kernel parameters, if any</para>
1252         </listitem>
1253
1254         <listitem>
1255          <para>
1256           Software that shows the error (with version number 
1257           or date)
1258          </para>
1259         </listitem>
1260
1261        </itemizedlist>
1262       </para>
1263
1264      </listitem>
1265     </varlistentry>
1266
1267     <varlistentry>
1268      <term>Peripherals</term>
1269      <listitem>
1270       <para>
1271        <itemizedlist>
1272
1273         <listitem>
1274          <para>
1275           Type of disk drives with manufacturer name, version and type
1276          </para>
1277         </listitem>
1278
1279         <listitem>
1280          <para>Other relevant peripherals</para>
1281         </listitem>
1282
1283        </itemizedlist>
1284       </para>
1285      </listitem>
1286     </varlistentry>
1287
1288    </variablelist>
1289   </para>
1290
1291   <para>
1292    Remember that booting text is logged to
1293    <filename>/var/log/messages</filename> which can answer most of
1294    the questions above. Obviously if the drives fail you might not be
1295    able to get  the log saved to disk but you can at least scroll
1296    back up the screen using the <keycap>SHIFT</keycap> and
1297    <keycap>PAGE UP</keycap> keys. It may also be useful to include
1298    part of this in your request for help but do not go overboard,
1299    keep it <emphasis>brief</emphasis> as a complete log file dumped
1300    to Usenet News is more than a little annoying.
1301   </para>
1302
1303  </sect1>
1304
1305 <!-- Section1: help: END -->
1306
1307
1308 <!-- Section1: remarks -->
1309
1310  <sect1 id="remarks">
1311   <title>Concluding Remarks</title>
1312
1313    <indexterm>
1314     <primary>(your index root)!conclusion</primary>
1315    </indexterm>
1316
1317   <para>
1318    <emphasis>Just summing up... Also a place for general
1319    recommendations.</emphasis>
1320   </para>
1321
1322  </sect1>
1323
1324 <!-- Section1: remarks: END -->
1325
1326
1327 <!-- Section1: faq -->
1328
1329  <sect1 id="faq">
1330   <title>Questions and Answers</title>
1331
1332    <indexterm>
1333     <primary>(your index root)!FAQ</primary>
1334    </indexterm>
1335    <indexterm>
1336     <primary>(your index root)!frequently asked questions</primary>
1337    </indexterm>
1338
1339   <para>
1340    <emphasis>Check the newsgroups and try to determine some frequent
1341    problems and cover them here. Again an example from the Multi Disk
1342    HOWTO.</emphasis>
1343   </para>
1344
1345   <para>
1346    This is just a collection of what I believe are the most common
1347    questions people might have. Give me more feedback and I will turn
1348    this section into a proper FAQ.
1349   </para>
1350
1351   <para>
1352    <itemizedlist>
1353     <listitem>
1354      <para>
1355       Q:How many physical disk drives (spindles) does a Linux system need?
1356      </para>
1357
1358      <para>
1359       A: Linux can run just fine on one drive (spindle).  Having
1360       enough  RAM (around 32 MB, and up to 64 MB) to support swapping
1361       is a  better price/performance choice than getting a second
1362       disk. (E)IDE disk is usually cheaper (but a little slower) than
1363       SCSI.
1364      </para>
1365     </listitem>
1366
1367     <listitem>
1368      <para>
1369       Q: Are there any disadvantages in this scheme?
1370      </para>
1371
1372      <para>
1373       A: There is only a minor snag: if even a single partition
1374       overflows the system might stop working properly. The severity
1375       depends of course on what partition is affected. Still this is
1376       not hard to monitor, the command <command>df</command> gives
1377       you a good overview of the situation. Also check the swap
1378       partition(s) using <command>free</command> to make sure you are
1379       not about to run out of virtual memory.
1380      </para>
1381     </listitem>
1382
1383     <listitem>
1384      <para>
1385       Q: OK, so should I split the system into as many partitions as 
1386       possible for a single drive?
1387      </para>
1388
1389      <para>
1390       A: No, there are several disadvantages to that. First of all
1391       maintenance becomes needlessly complex and you gain very little
1392       in this. In fact if your partitions are too big you will seek
1393       across larger areas than needed. This is a balance and
1394       dependent on the number of physical drives you have.
1395      </para>
1396     </listitem>
1397
1398    </itemizedlist>
1399
1400    <comment>
1401     Greg Leblanc:  Depending on how big this FAQ gets, perhaps it
1402     would be worthwhile to have, say, the 5 most FAQ, and put the
1403     rest into an external FAQ.  Dunno.  Comments?
1404    </comment>
1405
1406    <emphasis>(rest deleted.)</emphasis>
1407   </para>
1408
1409  </sect1>
1410
1411 <!-- Section1: faq: END -->
1412
1413
1414 <!-- Section1: bits-n-pieces -->
1415
1416  <sect1 id="bits-n-pieces">
1417   <title>Bits and Pieces </title>
1418
1419    <indexterm>
1420     <primary>disk!miscellaneous</primary>
1421    </indexterm>
1422
1423   <para>
1424    This is basically a section where I stuff all the bits I have not
1425    yet decided where should go, yet that I feel is worth knowing
1426    about. It is a kind of transient area.
1427   </para>
1428
1429  </sect1>
1430
1431 <!-- Section1: bits-n-pieces: END -->
1432
1433
1434 <!-- Section1: examples -->
1435
1436  <sect1 id="examples">
1437   <title>Examples</title>
1438
1439    <indexterm>
1440     <primary>(your index root)!examples</primary>
1441    </indexterm>
1442
1443   <para>
1444    <emphasis>Example designs and sample configuration files and other
1445    relevant details is always handy</emphasis>
1446   </para>
1447
1448  </sect1>
1449
1450 <!-- Section1: examples: END -->
1451
1452 </article>
1453
1454 <!-- Keep this comment at the end of the file
1455 Local variables:
1456 mode: sgml
1457 sgml-omittag:t
1458 sgml-shorttag:t
1459 sgml-namecase-general:t
1460 sgml-general-insert-case:lower
1461 sgml-minimize-attributes:nil
1462 sgml-always-quote-attributes:t
1463 sgml-indent-step:1
1464 sgml-indent-data:nil
1465 sgml-parent-document:nil
1466 sgml-exposed-tags:nil
1467 sgml-local-catalogs:nil
1468 sgml-local-ecat-files:nil
1469 End:
1470 -->

Benjamin Mako Hill || Want to submit a patch?