old-www/HOWTO/Software-Release-Practice-H.../index.html

669 lines
10 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Software Release Practice HOWTO</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="NEXT"
TITLE="Introduction"
HREF="introduction.html"></HEAD
><BODY
CLASS="article"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="ARTICLE"
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="title"
><A
NAME="AEN2"
></A
>Software Release Practice HOWTO</H1
><H3
CLASS="author"
><A
NAME="AEN4"
>Eric Steven Raymond</A
></H3
><DIV
CLASS="affiliation"
><SPAN
CLASS="orgname"
><A
HREF="http://www.catb.org/~esr/"
TARGET="_top"
>&#13; Thyrsus Enterprises</A
><BR></SPAN
><DIV
CLASS="address"
><P
CLASS="address"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;<TT
CLASS="email"
>&#60;<A
HREF="mailto:esr@thyrsus.com"
>esr@thyrsus.com</A
>&#62;</TT
><br>
&nbsp;&nbsp;&nbsp;&nbsp;</P
></DIV
></DIV
><P
CLASS="copyright"
>Copyright &copy; 2000 Eric S. Raymond</P
><DIV
CLASS="revhistory"
><TABLE
WIDTH="100%"
BORDER="0"
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
COLSPAN="3"
><B
>Revision History</B
></TH
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 4.1</TD
><TD
ALIGN="LEFT"
>2013-01-14</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Check out from a repo to be sure of making patches against fresh code.
Freshmeat changed its name. USENET topic groups aren't very visible
any more.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 4.0</TD
><TD
ALIGN="LEFT"
>2010-04-11</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>It's no longer necessary to provide RPMS or debs at project
level. The packaging infrastructure has gotten good at that.
New caveats about configuration and autotools. AsciiDOC
is now a viable alternative for documentation masters.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.9</TD
><TD
ALIGN="LEFT"
>2004-11-28</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>New material on good patching practice. Recommend Electric Fence
and valgrind rather than proprietary tools.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.8</TD
><TD
ALIGN="LEFT"
>2003-02-17</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>URL fixups after site move.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.7</TD
><TD
ALIGN="LEFT"
>2002-09-25</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Point at the DocBook Demystification HOWTO.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.6</TD
><TD
ALIGN="LEFT"
>2002-09-12</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Incorporated material on portability by Keith Bostic.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.6</TD
><TD
ALIGN="LEFT"
>2002-08-14</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Rewrote section on documentation practice, since XML-Docbook is
mature now.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.5</TD
><TD
ALIGN="LEFT"
>2002-07-04</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added section on providing checksums. Cited doclifter.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.4</TD
><TD
ALIGN="LEFT"
>2002-01-04</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>More about good patching practice.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.3</TD
><TD
ALIGN="LEFT"
>2001-08-16</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>New section about how to send good patches.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.2</TD
><TD
ALIGN="LEFT"
>2001-07-11</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Note about not relying on proprietary components.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.1</TD
><TD
ALIGN="LEFT"
>2001-02-22</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>LDP Styleguide fixes.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 3.0</TD
><TD
ALIGN="LEFT"
>2000-08-12</TD
><TD
ALIGN="LEFT"
>Revised by: esr</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>First DocBook version. Advice on SourceForge and a major section
on documentation practice added.</TD
></TR
></TABLE
></DIV
><DIV
><DIV
CLASS="abstract"
><A
NAME="AEN82"
></A
><P
></P
><P
>This HOWTO describes good release practices for Linux and other
open-source projects. By following these practices, you will make it
as easy as possible for users to build your code and use it, and for
other developers to understand your code and cooperate with you to
improve it.</P
><P
>This document is a must-read for novice developers. Experienced
developers should review it when they are about to release a new
project. It will be revised periodically to reflect the evolution of
good-practice standards.</P
><P
></P
></DIV
></DIV
><HR></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1. <A
HREF="introduction.html"
>Introduction</A
></DT
><DD
><DL
><DT
>1.1. <A
HREF="introduction.html#purpose"
>Why this document?</A
></DT
><DT
>1.2. <A
HREF="introduction.html#newversions"
>New versions of this document</A
></DT
></DL
></DD
><DT
>2. <A
HREF="patching.html"
>Good patching practice</A
></DT
><DD
><DL
><DT
>2.1. <A
HREF="patching.html#AEN107"
>Do send patches, don't send whole archives or files</A
></DT
><DT
>2.2. <A
HREF="patching.html#AEN117"
>Send patches against the current version of the code.</A
></DT
><DT
>2.3. <A
HREF="patching.html#AEN123"
>Don't include patches for generated files.</A
></DT
><DT
>2.4. <A
HREF="patching.html#AEN133"
>Don't send patch bands that just tweak version-control $-symbols.</A
></DT
><DT
>2.5. <A
HREF="patching.html#AEN140"
>Do use -c or -u format, don't use the default (-e) format</A
></DT
><DT
>2.6. <A
HREF="patching.html#AEN147"
>Do include documentation with your patch</A
></DT
><DT
>2.7. <A
HREF="patching.html#AEN154"
>Do include an explanation with your patch</A
></DT
><DT
>2.8. <A
HREF="patching.html#AEN169"
>Do include useful comments in your code</A
></DT
><DT
>2.9. <A
HREF="patching.html#AEN182"
>Just one bugfix or new feature per patch.</A
></DT
></DL
></DD
><DT
>3. <A
HREF="naming.html"
>Good project- and archive- naming practice</A
></DT
><DD
><DL
><DT
>3.1. <A
HREF="naming.html#AEN192"
>Use GNU-style names with a stem and major.minor.patch numbering.</A
></DT
><DT
>3.2. <A
HREF="naming.html#local"
>But respect local conventions where appropriate</A
></DT
><DT
>3.3. <A
HREF="naming.html#prefix"
>Try hard to choose a name prefix that is unique and easy to type</A
></DT
></DL
></DD
><DT
>4. <A
HREF="licensetheory.html"
>Good licensing and copyright practice: the theory</A
></DT
><DD
><DL
><DT
>4.1. <A
HREF="licensetheory.html#copyrights"
>Open source and copyrights</A
></DT
><DT
>4.2. <A
HREF="licensetheory.html#opensource"
>What qualifies as open source</A
></DT
></DL
></DD
><DT
>5. <A
HREF="licensepractice.html"
>Good licensing and copyright practice: the practice</A
></DT
><DD
><DL
><DT
>5.1. <A
HREF="licensepractice.html#holder"
>Make yourself or the FSF the copyright holder</A
></DT
><DT
>5.2. <A
HREF="licensepractice.html#osd"
>Use a license conformant to the Open Source Definition</A
></DT
><DT
>5.3. <A
HREF="licensepractice.html#unoriginal"
>Don't write your own license if you can possibly avoid it.</A
></DT
><DT
>5.4. <A
HREF="licensepractice.html#visible"
>Make your license visible in a standard place.</A
></DT
></DL
></DD
><DT
>6. <A
HREF="develpractice.html"
>Good development practice</A
></DT
><DD
><DL
><DT
>6.1. <A
HREF="develpractice.html#language"
>Choose the most portable language you can</A
></DT
><DT
>6.2. <A
HREF="develpractice.html#proprietary"
>Don't rely on proprietary code</A
></DT
><DT
>6.3. <A
HREF="develpractice.html#build_systems"
>Build systems</A
></DT
><DT
>6.4. <A
HREF="develpractice.html#testcode"
>Test your code before release</A
></DT
><DT
>6.5. <A
HREF="develpractice.html#sanitycode"
>Sanity-check your code before release</A
></DT
><DT
>6.6. <A
HREF="develpractice.html#sanitydocs"
>Sanity-check your documentation and READMEs before release</A
></DT
><DT
>6.7. <A
HREF="develpractice.html#cport"
>Recommended C/C++ portability practices</A
></DT
></DL
></DD
><DT
>7. <A
HREF="distpractice.html"
>Good distribution-making practice</A
></DT
><DD
><DL
><DT
>7.1. <A
HREF="distpractice.html#tarballs"
>Make sure tarballs always unpack into a single new directory</A
></DT
><DT
>7.2. <A
HREF="distpractice.html#readme"
>Have a README</A
></DT
><DT
>7.3. <A
HREF="distpractice.html#filenames"
>Respect and follow standard file naming practices</A
></DT
><DT
>7.4. <A
HREF="distpractice.html#upgradeability"
>Design for Upgradability</A
></DT
><DT
>7.5. <A
HREF="distpractice.html#checksums"
>Provide checksums</A
></DT
></DL
></DD
><DT
>8. <A
HREF="documentation.html"
>Good documentation practice</A
></DT
><DD
><DL
><DT
>8.1. <A
HREF="documentation.html#docpractice"
>Documentation formats</A
></DT
><DT
>8.2. <A
HREF="documentation.html#AEN547"
>Good practice recommendations</A
></DT
></DL
></DD
><DT
>9. <A
HREF="communication.html"
>Good communication practice</A
></DT
><DD
><DL
><DT
>9.1. <A
HREF="communication.html#announce"
>Announce to Freecode</A
></DT
><DT
>9.2. <A
HREF="communication.html#website"
>Have a website</A
></DT
><DT
>9.3. <A
HREF="communication.html#lists"
>Host project mailing lists</A
></DT
><DT
>9.4. <A
HREF="communication.html#archives"
>Release to major archives</A
></DT
></DL
></DD
><DT
>10. <A
HREF="management.html"
>Good project-management practice</A
></DT
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="introduction.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Introduction</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>