1 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
8 <title>Free Software Development HOWTO</title>
11 <firstname>Benjamin</firstname>
12 <othername>Mako</othername>
13 <surname>Hill</surname>
16 <email>mako@debian.org</email>
24 <revnumber>v0.01</revnumber>
25 <date>25 March 2001</date>
26 <authorinitials>bch</authorinitials>
35 <primary>fswd</primary>
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
51 <!-- Section1: intro -->
54 <title>Introduction</title>
57 <primary>fswd!introduction</primary>
61 For various reasons, this realease has been codenamed the
62 <emphasis>homade yogurt</emphasis> release.
66 New code names will appear as per industry standard
67 guidelines to emphasize the state-of-the-art-ness of this
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
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>.
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
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.
115 <!-- Section2: copyright -->
117 <sect2 id="copyright">
118 <title>Copyright Information</title>
121 This document is copyrighted (c) 2000 Benjamin (Mako) Hill and is
122 distributed under the terms of the Linux Documentation Project
123 (LDP) license, stated below.
127 Unless otherwise stated, Linux HOWTO documents are
128 copyrighted by their respective authors. Linux HOWTO documents may
129 be reproduced and distributed in whole or in part, in any medium
130 physical or electronic, as long as this copyright notice is
131 retained on all copies. Commercial redistribution is allowed and
132 encouraged; however, the author would like to be notified of any
137 All translations, derivative works, or aggregate works
138 incorporating any Linux HOWTO documents must be covered under this
139 copyright notice. That is, you may not produce a derivative work
140 from a HOWTO and impose additional restrictions on its
141 distribution. Exceptions to these rules may be granted under
142 certain conditions; please contact the Linux HOWTO coordinator at
143 the address given below.
147 In short, we wish to promote dissemination of this
148 information through as many channels as possible. However, we do
149 wish to retain copyright on the HOWTO documents, and would like to
150 be notified of any plans to redistribute the HOWTOs.
154 If you have any questions, please contact
155 <email>linux-howto@metalab.unc.edu</email>
159 <!-- Section2: disclaimer -->
161 <sect2 id="disclaimer">
162 <title>Disclaimer</title>
165 No liability for the contents of this documents can be accepted.
166 Use the concepts, examples and other content at your own risk.
167 As this is a new edition of this document, there may be errors
168 and inaccuracies, that may of course be damaging to your system.
169 Proceed with caution, and although this is highly unlikely,
170 the author(s) do not take any responsibility for that.
174 All copyrights are held by their by their respective owners, unless
175 specifically noted otherwise. Use of a term in this document
176 should not be regarded as affecting the validity of any trademark
181 Naming of particular products or brands should not be seen
186 You are strongly recommended to take a backup of your system
187 before major installation and backups at regular intervals.
191 <!-- Section2: newversions-->
193 <sect2 id="newversions">
194 <title>New Versions</title>
197 <primary>(your index root)!news on</primary>
201 This is the initial release. It is written to be released to
202 developers for critique and brainstorming and submitted to
203 Hampshire College for academic credit. Please keep in mind that
204 this version of the HOWTO is still in an infant stage and will be
205 revised extensively before it hits the LDP.
209 The latest version number of this document should always be listed
210 at my webpage at<ulink url="http://people.debian.org/~mako/">
211 http://people.debian.org/~mako/</ulink> Debian.
215 The newest version of this HOWTO will always be made available at
216 the same website, in a variety of formats:
223 <ulink url="http://people.debian.org/~mako/howto/fswd-howto.html">HTML</ulink>.
229 <ulink URL="http://people.debian.org/~mako/howto/fswd-howto.txt">plain text</ulink>.
235 <ulink url="http://people.debian.org/~mako/howto/fswd-howto.US.ps.gz">compressed
236 postscript (US letter format)</ulink>.
242 <ulink url="http://people.debian.org/~mako/howto/fswd-howto.UF.ps.gz">compressed
243 postscript (Universal format / 8.27x11in; 210x279mm)</ulink>.
249 <ulink url="http://people.debian.org/~mako/howto/fswd-howto.sgml">SGML source</ulink>.
256 <!-- Section2: credits -->
259 <title>Credits</title>
262 In this version I have the pleasure of acknowledging:
266 <emphasis>Karl Fogel</emphasis>, the author of <emphasis>Open
267 Source Development with CVS</emphasis> published by the Coriolis
268 Open Press. Larges parts of the book are available <ulink
269 url="http://cvsbook.red-bean.com">on the web</ulink>. 225 pages of
270 the book are available under the GPL and constitute the best
271 tutorial on CVS I have ever seen. The rest of the book covers,
272 "the challenges and philosophical issues inherent in running an
273 Open Source project using CVS." The book does a good job of
274 covering some of the subjects brought up in this HOWTO and much
275 more. <ulink url="http://cvsbook.red-bean.com">The book's
276 website</ulink> has information on ordering the book and provides
277 several translations of the chapters on CVS. I you are seriously
278 interested in running a Free Software project, you want this book.
282 Karl Fogel can be reached at <email>kfogel (at) red-bean (dot)
286 Also providing support and material, and inspiration for this
287 HOWTO is Eric S. Raymond for his prolific, consitent, and
288 carefully crafted arguments, to Lawrence Lessig for reminding me
289 of the importance of Free Software and to every user and developer
290 involved with the <ulink url="http://www.debian.org">Debian
291 Project</ulink>. The project has provided me with a home, a place
292 to practice Free Software advocacy and to make a difference, a
293 place to learn from those how have been involved with the movement
294 much longer than I, and an proof of a Free Software project that
295 <emphasis>definately, definately works</emphasis>.
299 Above all, I want to thank <emphasis>Richard Stallman</emphasis>
300 for his work at the Free Software Foundation and for never giving
301 up. Stallman provided the philosphical basis that attracts me to
302 Free Software and that drives me towards writing a document to
303 make sure it succeeds. RMS can always be emailed at <email>rms
304 (at) gnu (dot) org</email>.
309 <!-- Section2: feedback -->
311 <sect2 id="feedback">
312 <title>Feedback</title>
315 Feedback is most certainly welcome for this document. Without your
316 submissions and input, this document wouldn't exist. Something
317 missing? Don't hesitate to contact me and to write a chapter. I
318 want this document to be as much a product of the Free Software
319 development process that it heralds and I think its ultimate
320 success will be rooted in this fact. Please send your additions,
321 comments and criticisms to the following email address :
322 <email>mako (at) debian (dot) org</email>.
326 <!-- Section2: translations -->
328 <sect2 id="translations">
329 <title>Translations</title>
332 I know that not everyone speaks English. Translations are nice and
333 I'd love for this HOWTO to gain the kind of international reach
334 afforded by a translated version.
337 However, this HOWTO is still young and I have to yet to be
338 contacted about a translation so English is all that is
339 available. If you would like to help with or do a translation, you
340 will gain my utmost respect and admiration and you'll get to be
341 part of a cool process. If you are at all interested, please don't
342 hesitate to contact me at: <email>mako (at) debian (dot)
348 <!-- Section1: intro: END -->
350 <!-- Section1: starting -->
352 <sect1 id="starting">
353 <title>Starting a Project</title>
356 <primary>fswd!starting</primary>
359 With very little argument, starting a project is most difficult
360 part of successful free software development. Laying a firm
361 foundation for your project will determine whether your project
362 flourishes or withers away and dies. It is also the subject that is
363 of most immediate interest to anyone reading this document as a
368 Starting a project also involves a dilemna that you as a developer
369 must try and deal with. No potential user for your program will be
370 interested by a program that doesn't work. Simultaneously, the
371 development process that you want to employ holds involvement of
372 users as essential to the process of the development that will
373 realize this working software.
377 It is in these dangerous initial moments that anyone working to
378 start a free software project must strike a balance. One of the
379 most important ways that omeone trying to start a project can work
380 towards this balance is by establishing a framework for the
381 development process through some of the ways mentioned in this
386 <!-- Section2: chooseproject-->
388 <sect2 id="chooseproject">
389 <title>Choosing a Project</title>
392 If you are reading this document, there's a good chance you
393 already have an idea for a project in mind. Chances are pretty
394 good, it fills a gap by doing something that no other free
395 software process does or or does it in a way that is unique
396 enought to necessitate a seperate project.
399 <sect3 id=identifyidea>
400 <title>Indentify and Articulate Your Idea</title>
402 Eric S. Raymond writes about how free software projects start in
403 his paper, "The Cathedral and the Bazaar" which comes as required
404 reading for any free softare development. You can find it <ulink
405 url="http://www.tuxedo.org/!esr/writings/cathedral-bazaar/">online
410 In "The Cathedral and Bazaar," Raymond tells us that:
411 <emphasis>Every good work of software starts by scratching a
412 developers itch.</emphasis> Raymond now widely accepted
413 hypothesis is that new free software programs are written, first
414 and foremost, to solve a specific problem facing the developer.
418 If you have an idea for a program in mind, chances are good that
419 it it is targetting a specific problem or itch you want to see
420 scratched. <emphasis>This idea is the project. Articulate it
421 clearly. Write it out. Describe the problem you will attack in
422 detail. The success of your project in tackling a particular
423 problem will be tied to your ability to identify that problem
424 early on. Find out exactly what it is that you want your project
429 <sect3 id=evalulateidea>
430 <title>Evaluate Your Idea</title>
433 In evaluating your idea, you need to ask yourself questions.
434 Before you move any further into this HOWTO, you need to
435 determine if the free software development model really is the
436 right one for your project. Obviously, since the program
437 scratches your itch, you are definately interested in seeing it
438 implemented in code. But, because one hacker coding alone fails
439 to qualify as a free software development effort, you need to ask
440 yourself the question: <emphasis>Is anybody else
441 interested?</emphasis>
445 Sometimes the answer is <emphasis>no</emphasis>. If you want to
446 write a set of scripts to sort <emphasis>your</emphasis> MP3
447 collection on your machine, maybe the free software development
448 model is not the best one to choose. However, if you want to
449 write a set of scripts to sort <emphasis>anyone's</emphasis>
450 MP3s, a free software project might fill a useful gap.
454 Luckily, The Internet is a place so big and diverse that, chances
455 are, there is someone, somewhere, who shares your interests and
456 how feels the same itch. It is the fact that there are so many
457 people with so many similar needs and desires that introduces the
458 second major question: <emphasis>Has somebody already had your
459 idea or a reasonably similar one?</emphasis>
463 <title>Finding Similar Projects</title>
466 There are places you can go on the web to try and answer this
467 question. If you have experience with the free software
468 community, you are probably already familiar with all of these
469 sites. All of the resources listed bellow offer searching of
476 <term>freshmeat.net</term>
478 <para><ulink url="http://freshmeat.net">freshmeat</ulink>
479 describes itself as, <quote>the Web's largest index of Linux
480 and Open Source software</quote> and its reputation along
481 these lines remains unquestioned. If you can't find it on
482 freshmeat, its doubtful that you'll find it indexed anywhere
488 <term>Slashdot</term>
490 <para><ulink url="http://slashdot.org">Slashdot</ulink>
491 provides <quote>News for Nerds: Stuff that Matters,</quote>
492 which usually includes discussion of free software, open
493 source, technology, and geek culture new and events. It is
494 not unusual for an particularly sexy develpment effort to be
495 announced here so it definately worth checking.</para>
500 <term>SourceForge</term>
502 <para><ulink url="http://sourceforge.net">SourceForge</ulink>
503 houses and facilitates a growning number of open source and
504 free software projects, SourceForge is quickly becoming a
505 nexus and an necessary stop for free software
506 developers. SourceForge's <ulink
507 url="http://sourceforge.net/softwaremap/trove_list.php">software
508 map</ulink> and <ulink url="http://sourceforge.net/new/"> new
509 releases</ulink> pages. should be necessary stops before
510 embarking on a new free software project. SourceForge also
512 url="http://sourceforge.net/snippet/">Code Snippet
513 Library</ulink> which contains useful reusuable chunks of
514 code in an array of langauges which can come in useful in any
520 <term>Google and Google's Linux Search</term>
522 <para><ulink url="http://www.google.com">Google</ulink> and
523 <ulink url="http://www.google.com/linux"> Google's Linux
524 Search</ulink>, provide powwerful web searches that may
525 reveal people working on similar projects. It is not a
526 catalog of software or news like freshmeat or Slashdot, but
527 it is worth checking before you begin pouring your effort
528 into a redundant project.</para>
537 <title>Deciding to Proceed</title>
539 Once you have successfull charted the terrain and have an idea
540 bout what kinds of similar free software projects exist, every
541 developer needs to decide whether to proceed with their own
542 project. It is rare that a new project seeks to accomplish a
543 goal that is not similar to related to the goal of another
544 project. Anyone starting a new project needs to ask themselves:
545 <emphasis>Will the new project be duplicating work done by
546 another project? Will the new project be competing for
547 developers with an existing project? Can the goals of the new
548 project be accomplished by adding functionality to an existing
553 If the answer to any of these questions is yes, try to contact
554 the developer of the existing project in question and see if he
555 or she might be willing to collaborate with you.
559 This may be the single most difficult aspect of free software
560 development for many developers but it is essential. It is easy
561 to become fired up by and idea and be caught up in the momentum
562 and excitement of a new project. It is often extremely difficult
563 but it is important that any free software developer rememeber
564 that the best interests of the of the free software community
565 and the quickest way to accomplish ones own project's goals and
566 the goals of similar project can often be accomplished by
567 <emphasis>not</emphasis> starting a new project.
574 <!-- Section2: licensing-->
576 <sect2 id="licensing">
577 <title>Licensing your Software</title>
580 On one level, the difference between a piece of free software and
581 a piece of propriety software is the license. A license helps both
582 you as the developer by protecting your legal rights to your
583 software and helps demonstrate to those who wish to help you or
584 your project that they are encouraged to join.
587 <sect3 id="chooselicense">
588 <title>Choosing a License</title>
591 Any discussion of licenses is also sure to generate at least a
592 small flamewar as there are strong feelings that some free
593 software licenses are better than other free software
594 licenses. This discussion also brings up the question of
595 <quote>Open Source Software</quote> and the debate around
596 <quote>Open Source Software</quote> and <quote>Free
597 Software</quote>. However, because I've written the Free Software
598 Development HOWTO and not the Open Source Development HOWTO, my
599 own allegiences in this argument are out in the open.
603 In attempting to reach a middle ground, I recommend picking any
604 license that conforms to the <ulink
605 url="http://www.debian.org/social_contract">Debian Free Software
606 Guidlines</ulink>. Examples of these licenses are the
607 <acronym>GPL</acronym>, the <acronym>BSD</acronym>, and the
608 Artistic License. Conforming to the definition of Free Software
609 offered by Richard Stallman in <ulink
610 url="http://www.gnu.org/philosophy/free-sw.html">The Free
611 Software Definition</ulink>, any of these licenses will
612 uphold,<quote> users' freedom to run, copy, distribute, study,
613 change and improve the software.</quote> There are other licenses
614 as well but sticking with a more common license will offer the
615 advantage of immediate recognition and undestanding.
619 In attempting a more in-depth analysis, I agree with Karl Fogel's
620 description of licenses as falling into two groups: those that
621 are the <acronym>GPL</acronym> and those that are not the
622 <acronym>GPL</acronym>.
626 Personally, I license all my software under the
627 <acronym>GPL</acronym>. Created and protected by the Free
628 Software Foundation and the GNU Project, the
629 <acronym>GPL</acronym> is the license for the Linux kernel,
630 GNOME, Emacs, and the majority of Linux software. Its an easy
631 choice but I believe it is a good one. <emphasis>However, there
632 is a viral aspect to the <acronym>GPL</acronym>that prevents the
633 mixture of <acronym>GPL</acronym>'ed code with
634 non-<acronym>GPL</acronym>'ed code. To many people (myself
635 included), this is a benefit, but to some, it is a major
640 The three major license can be found at the following locations:
646 <para><ulink url="http://www.gnu.org/copyleft/gpl.html">The GNU
647 General Public License</ulink></para>
650 <para><ulink url="http://www.debian.org/misc/bsd.license">The
651 BSD License</ulink></para>
655 url="http://language.perl.com/misc/Artistic.html">The Artistic
656 License</ulink></para>
662 <emphasis>In all cases, please read through any license before
663 your release your software. As the developer, you can't afford
664 any license surprises.</emphasis>
668 <sect3 id="licensechoose">
669 <title>The Mechanics of Licensing</title>
672 The text of the <acronym>GPL</acronym> offers <ulink
673 url="http://www.gnu.org/copyleft/gpl.html#SEC4">a good
674 description</ulink> of mechanics of applying a license to a piece
675 of software. A checklist for applying a license would include:
682 <para>If at all possible, attach and distribute a full copy of
683 the license with the source and binary in a seperate
689 <para>At the top of each source file in your program, attach a
690 notice of copyright and information on where the full license
691 can be found. The <acronym>GPL</acronym> recommends that each
692 file begin with:</para>
695 <emphasis>one line to give the program's name and an idea of what it does.</emphasis>
696 Copyright (C) yyyy name of author
698 This program is free software; you can redistribute it and/or
699 modify it under the terms of the GNU General Public License
700 as published by the Free Software Foundation; either version 2
701 of the License, or (at your option) any later version.
703 This program is distributed in the hope that it will be useful,
704 but WITHOUT ANY WARRANTY; without even the implied warranty of
705 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
706 GNU General Public License for more details.
708 You should have received a copy of the GNU General Public License
709 along with this program; if not, write to the Free Software
710 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
714 The <acronym>GPL</acronym> goes on to recommend attaching
715 information on contacting you (the author) via email or
723 The <acronym>GPL</acronym> continues and suggests that if your
724 program runs in an interactive mode, you should have the
725 program output a notice each time it enters interactive mode
726 that includes a message like this one that points to more
727 information about the programs licensing:
731 Gnomovision version 69, Copyright (C) year name of author
732 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
733 type `show w'. This is free software, and you are welcome
734 to redistribute it under certain conditions; type `show c'
740 <para>Finally, it might be helpful to include a
741 <quote>copyright disclaimer</quote> with the program from an
742 employer or a school if you work as a programmer or if it seems
743 like your employer or school might be able to make an argument
744 for ownership of your code.</para>
751 <sect3 id="licensewarning">
752 <title>Final License Warning</title>
755 Please, please, please, place your software under some
756 license. It may not seem important, and to you, it may not be,
757 but licenses are important. For a piece of software to be
758 included in the Debian GNU/Linux distrobution, it must have a
759 license that fits the <ulink
760 url="http://www.debian.org/social_contract">Debian Free Software
761 Guidelines</ulink>. If you have no license, your program can be
762 distributed in part of Debian until you rerelease it under a free
763 license. Please save yourself and others trouble by releasing the
764 first version of your software with a clear license.
771 <!-- Section2: chooseversioning-->
773 <sect2 id="chooseversioning">
774 <title>Choosing a Method of Version Numbering</title>
776 <emphasis>The most important thing about a system of numbering is
777 that there is one.</emphasis> It may seem pedantic to emphasize
778 this point but you'd be surprised at the number of scripts and
779 small programs that pop up without any version number.
783 <emphasis>The second most important thing about a system of
784 numbering is that the numbers always go up.</emphasis> Automatic
785 versioning systems and people's sense of order in the universe
786 will fall apart if version numbers don't rise. It doesn't
787 <emphasis>really</emphasis> matter if 2.1 is a big jump and
788 2.0.005 is a small jump but it does matter that 2.1 is more recent
793 Follow these two rules and you will not go wrong. Still there are
794 several versioning system that are well known, useful, and that
795 might be worth looking into before you release your first version.
800 <term>Linux kernel version numbering:</term>
802 <para>The Linux kernel uses a versioning system where the any
803 minor odd minor version number refers to an development or
804 testing release and any even minor version number refers to a
805 stable version. Under this system, 2.1 and 2.3 kernels were and
806 always will be development and testing kernels and 2.0, 2.2. and
807 2.4 kernels are all production code with a higher degree of
812 Whether you plan on having a split development model<xref
813 linkend="branches"> or only one version released at a time, my
814 experience with several free software projects and with the
815 Debian project has taught me taht use of Linux's version
816 numbering system is worth taking into consideration. In Debian,
817 all minor versions are stable distributions (2.0, 2.1,
818 etc). However, many people assume that 2.1 is an unstable or
819 development version and continue to use an older version until
820 they get so frusterated with the lack of development and
821 progress that they complain. If you never release an odd minor
822 version but only release even ones, nobody is hurt, and less
829 <term>Wine version numbering:</term>
831 <para>Because of the unusual nature of wine's development where
832 it constantly improving but not working towards any immediately
833 achievable goal, wine is released every three weeks. Wine does
834 this by versioning their releases in Year Month Day format where
835 each release might be labeled <quote>wine-XXXXXXXX</quote> where
836 the version from Janurary 04, 2000 would be
837 <quote>wine-20000104</quote>. For certain projects, Year Month
838 Day format can make a lot of sense.
844 <term>Mozilla milestones:</term>
846 <para>When one considers Netscape 6 and verdor versions, the
847 mozilla's project development structure is one of the most
848 complex free software model available. Their version numbering
849 has reflected the unique situation in which it is
854 Mozilla's development structure has historically been made up
855 of milestones. From teh beginning of the mozilla project, the
856 goals of the project in the order and degree to which they were
857 to be achieved were charted out on a series of <ulink
858 url="http://www.mozilla.org/roadmap.html">road
859 maps</ulink>. Major points and achievements along this roadmaps
860 were marked as milestones. Therefore, mozilla was built and
861 distributed nightly as "nightly builds" but on a day when the
862 goals of a milestone on the roadmap had been reached, that
863 particular build was marked as a milstone release.
867 While I haven't seen this method employed in any other projects
868 to date, I like the idea and think that it might have value in
869 any testing or development branch of a large free application
870 under heavy development.
878 <!-- Section2: documentation-->
880 <sect2 id="documentation">
881 <title>Documentation</title>
885 <!-- Section2: presentation -->
887 <sect2 id="presentation">
888 <title>Other Presentation Issues</title>
894 <!-- Section1: starting: END -->
896 <!-- Section1: developers -->
898 <sect1 id="developers">
899 <title>Maintaining a Project: Interacting with Developers</title>
901 <primary>fswd!developers</primary>
904 <!-- Section2: delegation -->
906 <sect2 id="delegation">
907 <title>Delegating Work</title>
911 <!-- Section2: branches -->
913 <sect2 id="branches">
914 <title>Stable and Development Branches</title>
918 <!-- Section2: freezing -->
920 <sect2 id="freezing">
921 <title>Freezing</title>
925 <!-- Section2: codecram -->
927 <sect2 id="codecram">
928 <title>Avoiding the Code Cram Effect</title>
932 <!-- Section2: patching -->
934 <sect2 id="patching">
935 <title>Accepting and Rejecting Patches</title>
940 <!-- Section1: users -->
943 <title>Maintaining a Project: Interacting with Users</title>
946 <primary>fswd!users</primary>
950 <!-- Section2: announcing -->
952 <sect2 id="announcing">
953 <title>Announcing Your Project</title>
957 <!-- Section2: testing -->
960 <title>Testing and Testers</title>
967 <!-- Keep this comment at the end of the file
972 sgml-namecase-general:t
973 sgml-general-insert-case:lower
974 sgml-minimize-attributes:nil
975 sgml-always-quote-attributes:t
978 sgml-parent-document:nil
979 sgml-exposed-tags:nil
980 sgml-local-catalogs:nil
981 sgml-local-ecat-files:nil