]> projects.mako.cc - fspm_howto/blob - FreeSoftwareDevelopmentHOWTO.sgml
0e629ff652cff9511a89ffc440a143520b7e02b1
[fspm_howto] / FreeSoftwareDevelopmentHOWTO.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      <surnamen>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/</unlink> 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/fswd-howto.html">HTML</ulink>.
226      </para>
227     </listitem>
228
229     <listitem>
230      <para>
231        <ulink URL="http://people.debian.org/fswd-howto.txt">plain text</ulink>.
232      </para>
233     </listitem>
234
235     <listitem>
236      <para>
237       <ulink url="http://people.debian.org/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/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/fswd-howto.sgml">SGML source</ulink>.
252      </para>
253     </listitem>
254    </itemizedlist>
255    </para>
256
257 <!-- Section2: credits -->
258
259   <sect2 id="credits">
260    <title>Credits</title>
261
262    <para>
263     <emphasis>It is always nice to acknowledge people who help you
264     with input; it is also regarded by many as important in the
265     Linux world new economy.</emphasis>
266    </para>
267
268    <para>
269     In this version I have the pleasure of acknowledging:
270    </para>
271
272    <para>
273     <email>name (at) site.org</email>
274    </para>
275
276    <para>
277     <emphasis>Please scramble the addresses so email harvesters
278     cannot get addresses from your HOWTO and then spam people. That
279     has happened in the past.</emphasis>
280    </para>
281
282    <para>
283     <emphasis>Somecompany</emphasis> is acknowledged for sending me
284     documentation on their gizmos as well as permission to quote from
285     the material.  These quotes have been approved before appearing
286     here and will be clearly labeled.
287    </para>
288   </sect2>
289
290 <!-- Section2: feedback -->
291
292   <sect2 id="feedback">
293    <title>Feedback</title>
294
295    <para>
296     Feedback is most certainly welcome for this document. Without
297     your submissions and input, this document wouldn't exist. Please
298     send your additions, comments and criticisms to the following
299     email address : <email>sgjoen@nyx.net</email>.
300    </para>
301    </sect2>
302
303 <!-- Section2: translations -->
304
305   <sect2 id="translations">
306    <title>Translations</title>
307
308    <para>
309     Not everyone speaks English, pointers to translations are nice.
310     Also your translators tend to give very important inputs.
311    </para>
312
313    <para>
314     <itemizedlist>
315
316      <listitem>
317       <para>
318         <ulink url="http://linuxdoc.org/">German Translation</ulink>
319         by <email>someone (at) somewhere.de</email>
320       </para>
321      </listitem>
322
323      <listitem>
324       <para>
325         <ulink url="http://linuxdoc.org/">French Translation</ulink>
326         by <email>someone (at) somewhere.fr</email>
327       </para>
328      </listitem>
329
330      <listitem>
331       <para>
332         <ulink url="http://linuxdoc.org/">Italian Translation</ulink>
333         by <email>someone (at) somewhere.it</email>
334       </para>
335      </listitem>
336     </itemizedlist>
337    </para>
338    </sect2>
339
340  </sect1>
341
342 <!-- Section1: intro: END -->
343
344 <!-- Section1: starting -->
345
346  <sect1 id="starting">
347   <title>Starting a Project</title>
348
349 <!-- Section2: chooseproject-->
350
351   <sect2 id="chooseproject">
352    <title>Choosing a Project</title>
353   </sect2>
354
355 <!-- Section2: chooselicense-->
356
357   <sect2 id="chooselicense">
358    <title>Deciding on a License</title>
359   </sect2>
360
361 <!-- Section2: chooseversioning-->
362
363   <sect2 id="chooseversioning">
364    <title>Choosing a Method of Version Numbering</title>
365   </sect2>
366
367 <!-- Section2: documentation-->
368
369   <sect2 id="documentation">
370    <title>Documentation</title>
371   </sect2>
372
373 <!-- Section2: presentation -->
374
375   <sect2 id="presentation">
376    <title>Other Presentation Issues</title>
377   </sect2>
378
379 <!-- Section2: futuredev -->
380
381   <sect2 id="futuredev">
382    <title>Nuturing Future Development</title>
383   </sect2>
384
385  </sect1>
386
387 <!-- Section1: starting: END -->
388
389 <!-- Section1: developers -->
390
391  <sect1 id="developers">
392   <title>Maintaining a Project: Interacting with Developers</title>
393
394 <!-- Section2: delegation  -->
395
396   <sect2 id="delegation">
397    <title>Delegating Work</title>
398   </sect2>
399
400 <!-- Section2: branches  -->
401
402   <sect2 id="branches">
403    <title>Stable and Development Branches</title>
404   </sect2>
405
406 <!-- Section2: freezing -->
407
408   <sect2 id="freezing">
409    <title>Freezing</title>
410   </sect2>
411
412 <!-- Section2: codecram -->
413
414   <sect2 id="codecram">
415    <title>Avoiding the Code Cram Effect</title>
416   </sect2>
417
418 <!-- Section2: patching -->
419
420   <sect2 id="patching">
421    <title>Accepting and Rejecting Patches</title>
422   </sect2>
423  </sect1>
424
425 <!-- Section1: users -->
426
427  <sect1 id="users">
428   <title>Maintaining a Project: Interacting with Users</title>
429
430 <!-- Section2: announcing  -->
431
432   <sect2 id="announcing">
433    <title>Announcing Your Project</title>
434   </sect2>
435
436 <!-- Section2: testing -->
437
438   <sect2 id="testing">
439    <title>Testing and Testers</title>
440   </sect2>
441 </sect1>
442
443 <!-- Section1: samples  -->
444
445  <sect1 id="samples">
446   <title>Samples</title>
447
448   <para>
449    <emphasis>This section gives some simple SGML examples you could
450    use. Read the SGML source to see how it was done.</emphasis>
451   </para>
452
453   <para>
454    Further information and examples can be obtained from the publication
455    <ulink url="http://docbook.org/tdg/html/">DocBook: The Definitive 
456    Guide</ulink>. Written by <emphasis>Norman Walsh</emphasis>
457    and <emphasis>Leonard Muellner</emphasis>; 1st Edition, October 1999.
458   </para>
459   
460 <!-- Section2: lists -->
461
462   <sect2 id="lists">
463    <title>Lists</title>
464
465    <para>
466     <emphasis>Lists are used frequently, and are available in a number
467     of formats shown below.</emphasis>
468    </para>
469
470    <para>
471     A list in which each entry is marked with a bullet or other dingbat:
472    </para>
473
474    <para>
475     <itemizedlist>
476
477      <listitem>
478       <para>Apples</para>
479      </listitem>
480
481      <listitem>
482       <para>Oranges</para>
483      </listitem>
484
485      <listitem>
486       <para>Bananas</para>
487      </listitem>
488
489     </itemizedlist>
490    </para>
491
492    <para>
493     A list in which each entry is composed of a set of one or more
494     terms and an associated description:
495    </para>
496
497    <para>
498     <variablelist>
499
500      <varlistentry>
501       <term>Fruits</term>
502       <listitem>
503        <para>such as apples, oranges, and more.</para>
504       </listitem>
505      </varlistentry>
506
507      <varlistentry>
508       <term>Nuts</term>
509       <listitem>
510        <para>Don't eat too many; you are what you eat.</para>
511       </listitem>
512      </varlistentry>
513
514      <varlistentry>
515       <term>Vegetables</term>
516       <listitem>
517        <para>Potatos are spelled with care.</para>
518       </listitem>
519      </varlistentry>
520
521     </variablelist>
522    </para>
523
524    <para>
525     A list in which each entry is marked with a sequentially 
526     incremented label:
527    </para>
528
529    <para>
530      <orderedlist>
531
532       <listitem>
533        <para>Step one</para>
534       </listitem>
535
536       <listitem>
537        <para>Step two</para>
538       </listitem>
539
540      </orderedlist>
541    </para>
542   </sect2>
543
544 <!-- Section2: links -->
545
546   <sect2 id="links">
547    <title>Links</title>
548
549    <para>
550     <emphasis>Links can be used within your documents to refer to
551     different sections and chapters or to refer to documents external
552     to yours.</emphasis>
553    </para>
554
555    <sect3 id="int-links">
556     <title>Internal links</title>
557
558     <para>
559      Click on the <xref LinkEnd="samples"> link to jump to the top of
560      this chapter. Note the anchor at the section tag.
561     </para>
562    </sect3>
563
564    <sect3 id="ext-links">
565     <title>External links</title>
566
567     <para>
568      Click on <ulink url="http://www.linuxdoc.org/">this</ulink> link
569      to jump to the LDP site. Note you can use http, ftp, news and
570      other protocols in the locator if required.
571     </para>
572    </sect3>
573
574   </sect2>
575
576 <!-- Section2: images -->
577
578   <sect2 id="images">
579    <title>Images</title>
580
581    <para>
582     <emphasis>Avoid diagrams if possible as this cannot be rendered
583     in the ASCII outputs which are still needed by many around the
584     world.</emphasis>
585    </para>
586
587    <para>
588      <figure>
589       <title>Graphics Test Image</title>
590       <graphic FileRef="red.gif"></graphic>
591      </figure>
592    </para>
593
594    <para>
595     Here is another variation which allows for ALT text:
596    </para>
597
598    <para>
599      <mediaobject>
600
601       <imageobject>
602        <imagedata fileref="green.gif" format="gif">
603       </imageobject>
604
605       <textobject>
606        <phrase>
607         ALT text to be used: Green Ball
608        </phrase>
609       </textobject>
610
611       <caption>
612        <para>
613         Caption for the graphic goes here: This is a Green Ball.
614        </para>
615       </caption>
616      </mediaobject>
617    </para>
618   </sect2>
619
620  </sect1>
621
622 <!-- Section1: samples: END -->
623
624
625 <!-- Section1: structure -->
626
627  <sect1 id="structure">
628   <title>Structure</title>
629
630   <para>
631    <emphasis>A quick overview on how all parts fit together in the overall
632    structure. An example from the Multi Disk HOWTO is used.</emphasis>
633  </para>
634
635   <para>
636    As this type of document is supposed to be as much for learning as
637    a technical reference document I have rearranged the structure to
638    this end. For the designer of a system it is more useful to have
639    the information presented in terms of the goals of this exercise
640    than from the point of view of the logical layer structure of the
641    devices themselves. Nevertheless this document would not be
642    complete without such a layer structure the computer field is so
643    full of, so I will include it here as an introduction to how it
644    works.
645   </para>
646
647 <!-- Section2: logical-struct -->
648
649   <sect2 id="logical-struct">
650    <title>Logical structure</title>
651
652     <indexterm>
653      <primary>disk!structure, I/O subsystem</primary>
654     </indexterm>
655
656    <para>
657     This is based on how each layer access each other, traditionally
658     with the application on top and the physical layer on the bottom.
659     It is quite useful to show the interrelationship between each of
660     the layers used in controlling drives.
661
662     <screen>
663         ___________________________________________________________
664         |__     File structure          ( /usr /tmp etc)        __|
665         |__     File system             (ext2fs, vfat etc)      __|
666         |__     Volume management       (AFS)                   __|
667         |__     RAID, concatenation     (md)                    __|
668         |__     Device driver           (SCSI, IDE etc)         __|
669         |__     Controller              (chip, card)            __|
670         |__     Connection              (cable, network)        __|
671         |__     Drive                   (magnetic, optical etc) __|
672         -----------------------------------------------------------
673     </screen>
674    </para>
675
676    <para>
677     In the above diagram both volume management and RAID and
678     concatenation are optional layers. The 3 lower layers are in
679     hardware. All parts are discussed at length later on in this
680     document.
681    </para>
682   </sect2>
683
684 <!-- Section2: doc-struct -->
685
686   <sect2 id="doc-struct">
687    <title>Document structure</title>
688
689    <para>
690     Most users start out with a given set of hardware and some plans
691     on what they wish to achieve and how big the system should be.
692     This is the point of view I will adopt in this document in
693     presenting the material, starting out with hardware, continuing
694     with design constraints before detailing the design strategy that
695     I have found to work well. I have used this both for my own
696     personal computer at home, a multi purpose server at work and
697     found it worked quite well. In addition my Japanese co-worker in
698     this project have applied the same strategy on a server in an
699     academic setting with similar success.
700    </para>
701
702    <para>
703     Finally at the end I have detailed some configuration tables for
704     use in your own design. If you have any comments regarding this
705     or notes from your own design work I would like to hear from you
706     so this document can be upgraded.
707    </para>
708   </sect2>
709
710 <!-- Section2: reading-plan -->
711
712   <sect2 id="reading-plan">
713    <title>Reading plan</title>
714
715    <para>
716     <emphasis>As you go beyond 50 pages or so there will be a lot of
717     text that experts and even the experienced do not need to read.
718     Keeping in mind that we wish to care for all kinds of people in
719     the Linux world we might have to make a reading plan. Again,
720     an example follows from the Multi Disk HOWTO.</emphasis>
721    </para>
722
723    <para>
724     Although not the biggest HOWTO it is nevertheless rather big
725     already and I have been requested to make a reading plan to make
726     it possible to cut down on the volume.
727    </para>
728
729    <para>
730     <variablelist>
731
732      <varlistentry>
733       <term>Expert</term>
734       <listitem>
735        <para>
736         (aka the elite). If you are familiar with Linux as well as
737         disk drive technologies you will find most of what you need in
738         the appendices. Additionally you are recommended to read the
739         FAQ and the <XRef LinkEnd="bits-n-pieces">chapter.
740        </para>
741       </listitem>
742      </varlistentry>
743
744      <varlistentry>
745       <term>Experienced</term>
746       <listitem>
747        <para>
748         (aka Competent). If you are familiar with computers in
749         general you can go straight to the chapters on 
750         <XRef LinkEnd="technologies"> and continue from there on.
751        </para>
752       </listitem>
753      </varlistentry>
754
755      <varlistentry>
756       <term>Newbie</term>
757       <listitem>
758        <para>
759         (mostly harmless). You just have to read the whole thing.
760         Sorry. In addition you are also recommended to read all the
761         other disk related HOWTOs.
762        </para>
763       </listitem>
764      </varlistentry>
765
766     </variablelist>
767    </para>
768   </sect2>
769
770  </sect1>
771
772 <!-- Section1: structure: END -->
773
774
775 <!-- Section1: technologies -->
776
777  <sect1 id="technologies">
778   <title>Technologies</title>
779
780    <indexterm>
781     <primary>(your index root)!technologies</primary>
782    </indexterm>
783
784   <para>
785    <emphasis>Introduction of technology for the newbie with a few
786    references to detailed works. Remember that not everyone has
787    Internet access so you have to explain in sufficient details so
788    even the newbie can get by.</emphasis>
789   </para>
790
791  </sect1>
792
793 <!-- Section1: technologies: END -->
794
795
796 <!-- Section1: implement -->
797
798  <sect1 id="implement">
799   <title>Implementation</title>
800
801    <indexterm>
802     <primary>(your index root)!implementation</primary>
803    </indexterm>
804
805   <para>
806    <emphasis>Now your readers should have a sufficient knowledge of
807    what this is about and now we come to the hands on of implementing
808    your clever scheme.</emphasis>
809   </para>
810
811  </sect1>
812
813 <!-- Section1: implement: END -->
814
815
816 <!-- Section1: maint -->
817
818  <sect1 id="maint">
819   <title>Maintenance</title>
820
821    <indexterm>
822     <primary>(your index root)!maintenance</primary>
823    </indexterm>
824
825   <para>
826    <emphasis>Few systems and designs are maintenance free, here you
827    explain how to keep the system running.</emphasis>
828   </para>
829
830  </sect1>
831
832 <!-- Section1: maint: END -->
833
834
835 <!-- Section1: adv-issues -->
836
837  <sect1 id="adv-issues">
838   <title>Advanced Issues</title>
839
840    <indexterm>
841     <primary>(your index root)!advanced topics</primary>
842    </indexterm>
843
844   <para>
845    <emphasis>You can get most things up and running in a quick and
846    dirty fashion, useful for testing and getting used to how things
847    work. For more serious use you would need to be a little more
848    advanced. This is the place to explain it all, if applicable.</emphasis>
849   </para>
850
851  </sect1>
852
853 <!-- Section1: adv-issues: END -->
854
855
856 <!-- Section1: moreinfo -->
857
858  <sect1 id="moreinfo">
859   <title>Further Information</title>
860
861    <indexterm>
862     <primary>(your index root)!information resources</primary>
863    </indexterm>
864
865   <para>
866    <emphasis>A HOWTO cannot describe everything, some times the user
867    has to venture out on th enet to get more information or just
868    updates. Here is the place to tell where and how. Again examples
869    from the Multi Disk HOWTO, replace as needed.</emphasis> There is wealth
870    of information one should go through when setting up a major system,
871    for instance for a news or general Internet service provider.  The
872    FAQs in the following groups are useful:
873   </para>
874
875 <!-- Section2: newsgroups -->
876
877   <sect2 id="newsgroups">
878    <title>News groups</title>
879
880     <indexterm>
881      <primary>disk!information resources!news groups</primary>
882     </indexterm>
883
884    <para>Some of the most interesting news groups are:
885
886     <itemizedlist>
887
888      <listitem>
889       <para>
890        <ulink url="news:comp.arch.storage">Storage</ulink>.
891       </para>
892      </listitem>
893
894      <listitem>
895       <para>
896        <ulink url="news:comp.sys.ibm.pc.hardware.storage">PC storage</ulink>.
897       </para>
898      </listitem>
899
900      <listitem>
901       <para>
902        <ulink url="news:alt.filesystems.afs">AFS</ulink>.
903       </para>
904      </listitem>
905
906      <listitem>
907       <para>
908        <ulink url="news:comp.periphs.scsi">SCSI</ulink>.
909       </para>
910      </listitem>
911
912      <listitem>
913       <para>
914        <ulink url="news:comp.os.linux.setup">Linux setup</ulink>.
915       </para>
916      </listitem>
917
918     </itemizedlist>
919    </para>
920
921    <para>
922     Most newsgroups have their own FAQ that are designed to answer most
923     of your questions, as the name Frequently Asked Questions indicate.
924     Fresh versions should be posted regularly to the relevant newsgroups.
925     If you cannot find it in your news spool you could go directly to the
926     <ulink url="ftp://rtfm.mit.edu/">FAQ main archive FTP site</ulink>.
927     The WWW versions can be browsed at the 
928     <ulink url="http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html">FAQ
929     main archive WWW site</ulink>.
930    </para>
931
932    <para>
933     Some FAQs have their own home site, of particular interest:
934
935     <itemizedlist>
936
937      <listitem>
938       <para>
939        <ulink url="http://www.paranoia.com/~filipg/HTML/LINK/F_SCSI.html">SCSI FAQ</ulink> 
940        and
941       </para>
942      </listitem>
943
944      <listitem>
945       <para>
946        <ulink url="http://alumni.caltech.edu/~rdv/comp_arch_storage/FAQ-1.html">comp.arch.storage FAQ</ulink>.
947       </para>
948      </listitem>
949
950     </itemizedlist>
951    </para>
952   </sect2>
953
954 <!-- Section2: maillists -->
955
956   <sect2 id="maillists">
957    <title>Mailing Lists</title>
958
959     <indexterm>
960      <primary>disk!information resources!mailing lists</primary>
961     </indexterm>
962
963    <para>
964     These are low-noise channels mainly for developers. Think twice
965     before asking questions there as noise delays the development.
966     Some relevant lists are <email>linux-raid</email>,
967     <email>linux-scsi</email> and <email>linux-ext2fs</email>.  Many
968     of the most useful mailing lists run on the <Literal
969     remap="tt">vger.rutgers.edu</Literal> server but this is
970     notoriously overloaded, so try to find a mirror. There are some
971     lists mirrored at <ulink url="http://www.redhat.com">The Redhat
972     Home Page</ulink>. Many lists are also accessible at <ulink
973     url="http://www.linuxhq.com/lnxlists">linuxhq</ulink>, and the
974     rest of the web site contains useful information as well.
975    </para>
976
977    <para>
978     If you want to find out more about the lists available you can send
979     a message with the line <command>lists</command> to the list server
980     at <email>majordomo@vger.rutgers.edu</email>.
981     If you need help on how to use the mail server just send the line
982     <command>help</command> to the same address.  Due to the
983     popularity of this server it is likely it takes a bit to time before
984     you get a reply or even get messages after you send a
985     <command>subscribe</command> command.
986    </para>
987
988    <para>
989     There is also a number of other majordomo list servers that can
990     be of interest such as the EATA driver list
991     (<email>linux-eata@mail.uni-mainz.de</email>)
992     and the Intelligent IO list <email>linux-i2o@dpt.com</email>.
993    </para>
994
995    <para>
996     Mailing lists are in a state of flux but you can find links to a
997     number of interesting lists from the 
998     <ulink url="http://www.linuxdoc.org/">Linux Documentation
999     Homepage</ulink>.
1000    </para>
1001   </sect2>
1002
1003 <!-- Section2: howto -->
1004
1005   <sect2 id="howto">
1006    <title>HOWTO</title>
1007
1008     <indexterm>
1009      <primary>disk!information resources!HOWTOs</primary>
1010     </indexterm>
1011
1012    <para>
1013     These are intended as the primary starting points to get the
1014     background information as well as show you how to solve a
1015     specific problem. Some relevant HOWTOs are
1016     <Literal remap="tt">Bootdisk</Literal>, 
1017     <Literal remap="tt">Installation</Literal>,
1018     <Literal remap="tt">SCSI</Literal> and 
1019     <Literal remap="tt">UMSDOS</Literal>.  The main site for these is the
1020     <ulink url="http://www.linuxdoc.org/">LDP archive</ulink>at
1021     Metalab (formerly known as Sunsite).
1022    </para>
1023
1024    <para>
1025     There is a a new HOWTO out that deals with setting up a DPT RAID
1026     system, check out the
1027     <ulink url="http://www.ram.org/computing/linux/dpt_raid.html">DPT RAID
1028     HOWTO homepage</ulink>.
1029    </para>
1030   </sect2>
1031
1032 <!-- Section2: local-res -->
1033
1034   <sect2 id="local-res">
1035    <title>Local Resources</title>
1036
1037     <indexterm>
1038      <primary>disk!information resources!local</primary>
1039     </indexterm>
1040
1041    <para>
1042     In most distributions of Linux there is a document directory
1043     installed, have a look in the <filename>/usr/doc</filename>
1044     directory. where most packages store their main documentation and
1045     README files etc.  Also you will here find the HOWTO archive 
1046     (<filename>/usr/doc/HOWTO</filename>) of ready formatted HOWTOs
1047     and also the mini-HOWTO archive 
1048     (<filename>/usr/doc/HOWTO/mini</filename>) of plain text
1049     documents.
1050    </para>
1051
1052    <para>
1053     Many of the configuration files mentioned earlier can be found in
1054     the <filename>/etc</filename> directory. In particular you will
1055     want to work with the <filename>/etc/fstab</filename> file that
1056     sets up the mounting of partitions and possibly also
1057     <filename>/etc/raidtab</filename> file that is used for the
1058     <Literal remap="tt">md</Literal> system to set up RAID.
1059    </para>
1060
1061    <para>
1062     The kernel source in <filename>/usr/src/linux</filename> is, of
1063     course, the ultimate documentation. In other words, <quote>use
1064     the source, Luke</quote>. It should also be pointed out that the
1065     kernel comes not only with source code which is even commented
1066     (well, partially at least) but also an informative
1067     <filename>/usr/src/linux/Documentation</filename>. If you are
1068     about to ask any questions about the kernel you should read this
1069     first, it will save you and many others a lot of time and
1070     possibly embarrassment.
1071    </para>
1072
1073    <para>
1074     Also have a look in your system log file
1075     (<filename>/var/log/messages</filename>) to see what is going on
1076     and in particular how the booting went if too much scrolled off
1077     your screen. Using <command>tail -f /var/log/messages</command>
1078     in a separate window or screen will give you a continuous update
1079     of what is going on in your system.
1080    </para>
1081
1082    <para>
1083     You can also take advantage of the  <filename>/proc</filename>
1084     file system that is a window into the inner workings of your
1085     system. Use <command>cat</command> rather than
1086     <command>more</command> to view the files as they are reported as
1087     being zero length. Reports are that <command>less</command> works
1088     well here.
1089    </para>
1090   </sect2>
1091
1092 <!-- Section2: web -->
1093
1094   <sect2 id="web">
1095    <title>Web Sites</title>
1096
1097     <indexterm>
1098      <primary>disk!information resources!WWW</primary>
1099     </indexterm>
1100     <indexterm>
1101      <primary>disk!information resources!web pages</primary>
1102     </indexterm>
1103
1104    <para>
1105     There are a huge number of informative web sites available. By
1106     their very nature they change quickly so do not be surprised
1107     if these links become quickly outdated.
1108    </para>
1109
1110    <para>
1111     A good starting point is of course the 
1112     <ulink url="http://www.linuxdoc.org/">Linux Documentation
1113     Project</ulink> home page, an information central for
1114     documentation, project pages and much more.
1115    </para>
1116
1117    <para>
1118     Please let me know if you have any other leads that can be 
1119     of interest.
1120    </para>
1121   </sect2>
1122
1123  </sect1>
1124
1125 <!-- Section1: moreinfo: END -->
1126
1127
1128 <!-- Section1: help -->
1129
1130  <sect1 id="help">
1131   <title>Getting Help</title>
1132
1133    <indexterm>
1134     <primary>(your index root)!assistance, obtaining</primary>
1135    </indexterm>
1136
1137   <para>
1138    In the end you might find yourself unable to solve your problems
1139    and need help from someone else. The most efficient way is either
1140    to ask someone local or in your nearest Linux user group, search
1141    the web for the nearest one.
1142   </para>
1143
1144   <para>
1145    Another possibility is to ask on Usenet News in one of the many,
1146    many newsgroups available. The problem is that these have such a
1147    high volume and noise (called low signal-to-noise ratio) that your
1148    question can easily fall through unanswered.
1149   </para>
1150
1151   <para>
1152    No matter where you ask it is important to ask well or you will
1153    not be taken seriously. Saying just <emphasis remap="it">my disk
1154    does not work</emphasis> is not going to help you and instead the
1155    noise level is increased even further and if you are lucky someone
1156    will ask you to clarify.
1157   </para>
1158
1159   <para>
1160    Instead describe your problems in some detail that will enable
1161    people to help you. The problem could lie somewhere you did not
1162    expect. Therefore you are advised to list the following information
1163    about your system:
1164   </para>
1165
1166   <para>
1167    <variablelist>
1168
1169     <varlistentry>
1170      <term>Hardware</Term>
1171      <listitem>
1172       <para>
1173        <itemizedlist>
1174         <listitem>
1175          <para>Processor</para>
1176         </listitem>
1177
1178         <listitem>
1179          <para>DMA</para>
1180         </listitem>
1181
1182         <listitem>
1183          <para>IRQ</para>
1184         </listitem>
1185
1186         <listitem>
1187          <para>Chip set (LX, BX etc)</para>
1188         </listitem>
1189
1190         <listitem>
1191          <para>Bus (ISA, VESA, PCI etc)</para>
1192         </listitem>
1193
1194         <listitem>
1195          <para>
1196           Expansion cards used (Disk controllers, video, IO 
1197           etc.)
1198          </para>
1199         </listitem>
1200
1201        </itemizedlist>
1202       </para>
1203      </listitem>
1204     </varlistentry>
1205
1206     <varlistentry>
1207      <term>Software</term>
1208      <listitem>
1209       <para>
1210        <itemizedlist>
1211
1212         <listitem>
1213          <para>BIOS (On motherboard and possibly SCSI host adapters)</para>
1214         </listitem>
1215
1216         <listitem>
1217          <para>LILO, if used</para>
1218         </listitem>
1219
1220         <listitem>
1221          <para>
1222           Linux kernel version as well as possible modifications 
1223           and patches
1224          </para>
1225         </listitem>
1226
1227         <listitem>
1228          <para>Kernel parameters, if any</para>
1229         </listitem>
1230
1231         <listitem>
1232          <para>
1233           Software that shows the error (with version number 
1234           or date)
1235          </para>
1236         </listitem>
1237
1238        </itemizedlist>
1239       </para>
1240
1241      </listitem>
1242     </varlistentry>
1243
1244     <varlistentry>
1245      <term>Peripherals</term>
1246      <listitem>
1247       <para>
1248        <itemizedlist>
1249
1250         <listitem>
1251          <para>
1252           Type of disk drives with manufacturer name, version and type
1253          </para>
1254         </listitem>
1255
1256         <listitem>
1257          <para>Other relevant peripherals</para>
1258         </listitem>
1259
1260        </itemizedlist>
1261       </para>
1262      </listitem>
1263     </varlistentry>
1264
1265    </variablelist>
1266   </para>
1267
1268   <para>
1269    Remember that booting text is logged to
1270    <filename>/var/log/messages</filename> which can answer most of
1271    the questions above. Obviously if the drives fail you might not be
1272    able to get  the log saved to disk but you can at least scroll
1273    back up the screen using the <keycap>SHIFT</keycap> and
1274    <keycap>PAGE UP</keycap> keys. It may also be useful to include
1275    part of this in your request for help but do not go overboard,
1276    keep it <emphasis>brief</emphasis> as a complete log file dumped
1277    to Usenet News is more than a little annoying.
1278   </para>
1279
1280  </sect1>
1281
1282 <!-- Section1: help: END -->
1283
1284
1285 <!-- Section1: remarks -->
1286
1287  <sect1 id="remarks">
1288   <title>Concluding Remarks</title>
1289
1290    <indexterm>
1291     <primary>(your index root)!conclusion</primary>
1292    </indexterm>
1293
1294   <para>
1295    <emphasis>Just summing up... Also a place for general
1296    recommendations.</emphasis>
1297   </para>
1298
1299  </sect1>
1300
1301 <!-- Section1: remarks: END -->
1302
1303
1304 <!-- Section1: faq -->
1305
1306  <sect1 id="faq">
1307   <title>Questions and Answers</title>
1308
1309    <indexterm>
1310     <primary>(your index root)!FAQ</primary>
1311    </indexterm>
1312    <indexterm>
1313     <primary>(your index root)!frequently asked questions</primary>
1314    </indexterm>
1315
1316   <para>
1317    <emphasis>Check the newsgroups and try to determine some frequent
1318    problems and cover them here. Again an example from the Multi Disk
1319    HOWTO.</emphasis>
1320   </para>
1321
1322   <para>
1323    This is just a collection of what I believe are the most common
1324    questions people might have. Give me more feedback and I will turn
1325    this section into a proper FAQ.
1326   </para>
1327
1328   <para>
1329    <itemizedlist>
1330     <listitem>
1331      <para>
1332       Q:How many physical disk drives (spindles) does a Linux system need?
1333      </para>
1334
1335      <para>
1336       A: Linux can run just fine on one drive (spindle).  Having
1337       enough  RAM (around 32 MB, and up to 64 MB) to support swapping
1338       is a  better price/performance choice than getting a second
1339       disk. (E)IDE disk is usually cheaper (but a little slower) than
1340       SCSI.
1341      </para>
1342     </listitem>
1343
1344     <listitem>
1345      <para>
1346       Q: Are there any disadvantages in this scheme?
1347      </para>
1348
1349      <para>
1350       A: There is only a minor snag: if even a single partition
1351       overflows the system might stop working properly. The severity
1352       depends of course on what partition is affected. Still this is
1353       not hard to monitor, the command <command>df</command> gives
1354       you a good overview of the situation. Also check the swap
1355       partition(s) using <command>free</command> to make sure you are
1356       not about to run out of virtual memory.
1357      </para>
1358     </listitem>
1359
1360     <listitem>
1361      <para>
1362       Q: OK, so should I split the system into as many partitions as 
1363       possible for a single drive?
1364      </para>
1365
1366      <para>
1367       A: No, there are several disadvantages to that. First of all
1368       maintenance becomes needlessly complex and you gain very little
1369       in this. In fact if your partitions are too big you will seek
1370       across larger areas than needed. This is a balance and
1371       dependent on the number of physical drives you have.
1372      </para>
1373     </listitem>
1374
1375    </itemizedlist>
1376
1377    <comment>
1378     Greg Leblanc:  Depending on how big this FAQ gets, perhaps it
1379     would be worthwhile to have, say, the 5 most FAQ, and put the
1380     rest into an external FAQ.  Dunno.  Comments?
1381    </comment>
1382
1383    <emphasis>(rest deleted.)</emphasis>
1384   </para>
1385
1386  </sect1>
1387
1388 <!-- Section1: faq: END -->
1389
1390
1391 <!-- Section1: bits-n-pieces -->
1392
1393  <sect1 id="bits-n-pieces">
1394   <title>Bits and Pieces </title>
1395
1396    <indexterm>
1397     <primary>disk!miscellaneous</primary>
1398    </indexterm>
1399
1400   <para>
1401    This is basically a section where I stuff all the bits I have not
1402    yet decided where should go, yet that I feel is worth knowing
1403    about. It is a kind of transient area.
1404   </para>
1405
1406  </sect1>
1407
1408 <!-- Section1: bits-n-pieces: END -->
1409
1410
1411 <!-- Section1: examples -->
1412
1413  <sect1 id="examples">
1414   <title>Examples</title>
1415
1416    <indexterm>
1417     <primary>(your index root)!examples</primary>
1418    </indexterm>
1419
1420   <para>
1421    <emphasis>Example designs and sample configuration files and other
1422    relevant details is always handy</emphasis>
1423   </para>
1424
1425  </sect1>
1426
1427 <!-- Section1: examples: END -->
1428
1429 </article>
1430
1431 <!-- Keep this comment at the end of the file
1432 Local variables:
1433 mode: sgml
1434 sgml-omittag:t
1435 sgml-shorttag:t
1436 sgml-namecase-general:t
1437 sgml-general-insert-case:lower
1438 sgml-minimize-attributes:nil
1439 sgml-always-quote-attributes:t
1440 sgml-indent-step:1
1441 sgml-indent-data:nil
1442 sgml-parent-document:nil
1443 sgml-exposed-tags:nil
1444 sgml-local-catalogs:nil
1445 sgml-local-ecat-files:nil
1446 End:
1447 -->

Benjamin Mako Hill || Want to submit a patch?