Added debian-dist and debian-upload targets. Also documented usage.
[privoxy.git] / doc / source / developer-manual.sgml
index 0920b76..01fe1da 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[
-<!entity % dummy "INCLUDE"> 
+<!entity % dummy "IGNORE"> 
 <!entity supported SYSTEM "supported.sgml">
 <!entity newfeatures SYSTEM "newfeatures.sgml">
 <!entity p-intro SYSTEM "privoxy.sgml">
@@ -7,12 +7,14 @@
 <!entity seealso SYSTEM "seealso.sgml">
 <!entity contacting SYSTEM "contacting.sgml">
 <!entity copyright SYSTEM "copyright.sgml">
-<!entity p-version "2.9.14">
-<!entity p-status "beta">
+<!entity license SYSTEM "license.sgml">
+<!entity p-version "3.1.1">
+<!entity p-status "alpha">
 <!entity % p-not-stable "INCLUDE">
 <!entity % p-stable "IGNORE">
 <!entity % p-text "IGNORE">        <!-- define we are not a text only doc -->
 <!entity % p-doc "INCLUDE">        <!-- and we are a formal doc           -->
+<!entity  my-copy "&copy;">        <!-- kludge for docbook2man            -->
 ]>
 <!--
  File        :  $Source: /cvsroot/ijbswa/current/doc/source/developer-manual.sgml,v $
                 This file belongs into
                 ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
                 
- $Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $
-
- Written by and Copyright (C) 2001 the SourceForge
- Privoxy team. http://www.privoxy.org/
-
- Based on the Internet Junkbuster originally written
- by and Copyright (C) 1997 Anonymous Coders and 
- Junkbusters Corporation.  http://www.junkbusters.com
+ $Id: developer-manual.sgml,v 1.46 2002/05/22 17:15:00 oes Exp $
 
+ Copyright (C) 2001, 2002 Privoxy Developers <developers@privoxy.org>
+ See LICENSE.
 
  ========================================================================
  NOTE: Please read developer-manual/documentation.html before touching 
 <article id="index">
   <artheader>
     <title>Privoxy Developer Manual</title>
+    <pubdate>
+     <subscript>
+    <!-- Completely the wrong markup, but very little is allowed  -->
+    <!-- in this part of an article. FIXME -->
+      <link linkend="copyright">Copyright</link> &my-copy; 2001, 2002 by 
+      <ulink url="http://www.privoxy.org">Privoxy Developers</ulink>
+     </subscript>
+    </pubdate>
+
+
+    <pubdate>$Id: developer-manual.sgml,v 1.46 2002/05/22 17:15:00 oes Exp $</pubdate>
+
+<!--
 
-    <pubdate>$Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $</pubdate>
+Note: this should generate a separate page, and a live link to it. 
+But it doesn't for some mysterious reason. Please leave commented
+unless it can be fixed proper. For the time being, the copyright 
+statement will be in copyright.smgl.
 
-    <authorgroup>
-      <author>
-        <affiliation>
-          <orgname>By: Privoxy Developers</orgname>
-        </affiliation>
-      </author>
-    </authorgroup>
+Hal.
+
+<legalnotice id="legalnotice"> 
+ <para>
+  text goes here ........
+ </para>
+</legalnotice>
+
+-->
 
     <abstract>
+
 <![%dummy;[
  <para>
  <comment>
  </para>
  ]]>
 <para>
- The developer manual gives the users information on how to help the developer
- team. It provides guidance on coding, testing, documentation and other
- issues. 
- </para>
+ The developer manual provides guidance on coding, testing, packaging, documentation
+ and other issues of importance to those involved with
+ <application>Privoxy</application> development. It is mandatory (and helpful!) reading
+ for anyone who wants to join the team.
+</para>
 
 <!-- Include privoxy.sgml boilerplate text: -->
 
 <para>
  You can find the latest version of the this manual at <ulink
  url="http://www.privoxy.org/developer-manual/">http://www.privoxy.org/developer-manual/</ulink>.
- Please see <ulink url="contact.html">the Contact section</ulink> 
+ Please see <link linkend="contact">the Contact section</link> 
  on how to contact the developers.
 </para>
-
 <!--        <para> -->
 <!--    Feel free to send a note to the developers at <email>ijbswa-developers@lists.sourceforge.net</email>. -->
 <!--   </para> -->
     </abstract>
   </artheader>
 
-<!--   ~~~~~       New section      ~~~~~     -->
-<sect1 id="intro" label=""><title></title>
-<!-- dummy section to force TOC on page by itself -->
-<!-- DO NOT REMOVE! please ;) -->
-<para> </para>
-</sect1>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-
-
-<!--   ~~~~~       New section      ~~~~~     -->
-  <sect1 label="1" id="introduction"><title>Introduction</title>
+  <sect1 id="introduction"><title>Introduction</title>
 <!--
 
  I don't like seeing blank space :) So added *something* here.
      One does not have to be a programmer to contribute. Packaging, testing,
      and porting, are all important jobs as well.
     </para>
-  </sect1>
 
   <!--   ~~~~~       New section      ~~~~~     -->
-  <sect1 id="quickstart"><title>Quickstart to Privoxy Development</title>
+  <sect2 id="quickstart"><title>Quickstart to Privoxy Development</title>
     <para>
       You'll need an account on <ulink
       url="http://sourceforge.net/">Sourceforge</ulink> to support our
       For the time being (read, this section is under construction), please
       refer to the extensive comments in the source code.
     </para>
+   </sect2>
   </sect1>
 
   <!--   ~~~~~       New section      ~~~~~     -->
  Look at any of the existing docs for examples of all these and more.
 </para>
 
+<para>
+ You might also find <quote><ulink
+ url="http://www.bureau-cornavin.com/opensource/crash-course/">Writing Documentation
+ Using DocBook - A Crash Course</ulink></quote> useful.
+</para>
 </sect2>
 
 <!--   ~~~~~       New section      ~~~~~     -->
@@ -1715,7 +1727,7 @@ static void unload_re_filterfile( void *f ) { ... }</programlisting>
 
     <para><emphasis>Example for file comments:</emphasis></para>
 <programlisting>
-const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $";
+const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.46 2002/05/22 17:15:00 oes Exp $";
 /*********************************************************************
  *
  * File        :  $S<!-- Break CVS Substitution -->ource$
@@ -1775,7 +1787,7 @@ const char FILENAME_h_rcs[] = FILENAME_H_VERSION;
 <programlisting>
 #ifndef _FILENAME_H
 #define _FILENAME_H
-#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $"
+#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.46 2002/05/22 17:15:00 oes Exp $"
 /*********************************************************************
  *
  * File        :  $S<!-- Break CVS Substitution -->ource$
@@ -1947,13 +1959,59 @@ at sourceforge. Three simple steps:
         <filename>gmake</filename> (GNU's version of make), autoconf, cvs.
     </para>
 
+    <sect2 id="versionnumbers">
+    <title>Version numbers</title>
+
     <para>
-        In the following text, replace X, Y and Z with the actual version number
-        (X = major, Y = minor, Z = point):
+      First you need to determine which version number the release will have. 
+      <application>Privoxy</application> version numbers consist of three numbers,
+      separated by dots, like in X.Y.Z, where:
+        <itemizedlist>
+          <listitem>
+            <para>
+              X, the version major, is rarely ever changed. It is increased by one if
+              turning a development branch into stable substantially changes the functionality,
+              user interface or configuration syntax. Majors 1 and 2 were 
+              <application>Junkbuster</application>, and 3 will be the first stable
+              <application>Privoxy</application> release.
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              Y, the version minor, represents the branch within the major version.
+              At any point in time, there are two branches being maintained:
+              The stable branch, with an even minor, say, 2N, in which no functionality is
+              being added and only bugfixes are made, and 2N+1, the development branch, in
+              which the further development of <application>Privoxy</application> takes
+              place.
+              This enables us to turn the code upside down and inside out, while at the same time
+              providing and maintaining a stable version.
+              The minor is reset to zero (and one) when the major is inrcemented. When a development
+              branch has matured to the point where it can be turned into stable, the old stable branch
+              2N is given up (i.e. no longer maintained), the former development branch 2N+1 becomes the
+              new stable branch 2N+2, and a new development branch 2N+3 is opened.
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              Z, the point or sub version, represents a release of the software within a branch.
+              It is therefore incremented immediately before each code freeze. 
+              In development branches, only the even point versions correspond to actual releases,
+              while the odd ones denote the evolving state of the sources on CVS in between.
+              It follows that Z is odd on CVS in development branches most of the time. There, it gets
+              increased to an even number immediately before a code freeze, and is increased to an odd
+              number again immediately thereafter.
+              This ensures that builds from CVS snapshots are easily distinguished from released versions.
+              The point version is reset to zero when the minor changes.
+            </para>
+          </listitem>
+        </itemizedlist>
     </para>
+
+    </sect2>
      
     <sect2 id="beforerelease">
-    <title>Before the Release</title>
+    <title>Before the Release: Freeze</title>
      <para>
        The following <emphasis>must be done by one of the
        developers</emphasis> prior to each new release.
@@ -1964,24 +2022,26 @@ at sourceforge. Three simple steps:
         <para>
          Make sure that everybody who has worked on the code in the last
          couple of days has had a chance to yell <quote>no!</quote> in case
-         they have pending changes/fixes in their pipelines.
+         they have pending changes/fixes in their pipelines. Announce the
+         freeze so that nobody will interfere with last minute changes.
         </para>
       </listitem> 
       <listitem>
        <para>
-         Increment the version number and increase or reset the RPM release number
-         in <filename>configure.in</filename> as appropriate. 
+         Increment the version number (point from odd to even in development
+         branches!) in <filename>configure.in</filename>.
        </para>
       </listitem> 
       <listitem>
        <para>
-        If the default <filename>actionsfile</filename> has changed since last
-        release, bump up its version info in this line:
+        If <filename>default.action</filename> has changed since last
+        release (i.e. software release or standalone actions file release),
+        bump up its version info to A.B in this line:
        </para>
        <para> 
         <programlisting>
   {+add-header{X-Actions-File-Version: A.B} -filter -no-popups}
-        </programlisting>
+</programlisting>
        </para>
        <para> 
         Then change the version info in doc/webserver/actions/index.php,
@@ -1991,15 +2051,16 @@ at sourceforge. Three simple steps:
       <listitem>
        <para>
         If the HTML documentation is not in sync with the SGML sources
-        you need to regenerate it. (If in doubt, just do it.) See the
-        Section "Updating the webserver" in this manual for details.
+        you need to regenerate and upload it to the webserver. (If in
+        doubt, just do it.) See the Section "Updating the webserver" in
+        this manual for details.
        </para>
       </listitem> 
       <listitem>
        <para>
         <emphasis>Commit all files that were changed in the above steps!</emphasis>
        </para>
-      </listitem> 
+      </listitem>
       <listitem>
        <para>
         Tag all files in CVS with the version number with
@@ -2007,6 +2068,23 @@ at sourceforge. Three simple steps:
         Don't use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc.
        </para>
       </listitem> 
+     <listitem>
+       <para>
+        If the release was in a development branch, increase the point version
+        from even to odd (X.Y.(Z+1)) again in <filename>configure.in</filename> and
+        commit your change.
+       </para>
+      </listitem> 
+     <listitem>
+       <para>
+        On the webserver, copy the user manual to a new top-level directory
+        called <filename>X.Y.Z</filename>. This ensures that help links from the CGI
+        pages, which have the version as a prefix, will go into the right version of the manual.
+        If this is a development branch release, also symlink <filename>X.Y.(Z-1)</filename>
+        to <filename>X.Y.Z</filename> and <filename>X.Y.(Z+1)</filename> to
+        <filename>.</filename> (i.e. dot). 
+       </para>
+      </listitem> 
       </itemizedlist>
      </para> 
     </sect2>
@@ -2030,7 +2108,7 @@ at sourceforge. Three simple steps:
   cd dist
   cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
   cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
-     </programlisting>
+</programlisting>
     </para>
   
     <para>
@@ -2042,9 +2120,110 @@ at sourceforge. Three simple steps:
   
     <para>
      Please find additional instructions for the source tarball and the
-     individual platform dependent binary packages below.
+     individual platform dependent binary packages below. And details 
+     on the Sourceforge release process below that.
     </para>
 
+    <sect3 id="pack-guidelines">
+    <title>Note on Privoxy Packaging</title>
+     <para>
+      Please keep these general guidelines in mind when putting together 
+      your package. These apply to <emphasis>all</emphasis> platforms!
+     </para>
+     <para>
+      <itemizedlist>
+       <listitem>
+        <para>
+          <application>Privoxy</application> <emphasis>requires</emphasis>
+          write access to: all <filename>*.action</filename> files, all 
+          logfiles, and the <filename>trust</filename> file. You will 
+          need to determine the best way to do this for your platform.
+        </para>
+       </listitem> 
+       <listitem>
+        <para>
+          Please include up to date documentation. At a bare minimum:
+        </para>
+        <simplelist>
+         <member>
+          <filename>LICENSE</filename> (toplevel directory)
+         </member>
+        </simplelist>
+        <simplelist>
+         <member>
+          <filename>README</filename> (toplevel directory)
+         </member>
+        </simplelist>
+        <simplelist>
+         <member>
+          <filename>AUTHORS</filename> (toplevel directory)
+         </member>
+        </simplelist>
+        <simplelist>
+         <member>
+          <filename>man page</filename> (toplevel directory, Unix-like
+          platforms only)
+         </member>
+        </simplelist>
+        <simplelist>
+         <member>
+          <filename>The User Manual</filename> (doc/webserver/user-manual/)
+         </member>
+        </simplelist>
+        <simplelist>
+         <member>
+          <filename>FAQ</filename> (doc/webserver/faq/)
+         </member>
+        </simplelist>
+        <para>
+          Also suggested: <filename>Developer Manual</filename>
+          (doc/webserver/devel-manual) and <filename>ChangeLog</filename>
+          (toplevel directory). <filename>FAQ</filename> and the manuals are
+          HTML docs. There are also text versions in
+          <filename>doc/text/</filename> which could conceivably also be
+          included.
+        </para>
+        <para>
+         The documentation has been designed such that the manuals are linked
+         to each other from parallel directories, and should be packaged 
+         that way. <filename>index.html</filename> can also be included and 
+         can serve as a focal point for docs and other links of interest.
+         This should be one level up from the manuals. There are two 
+         css stylesheets that can be included for better presentation:
+         <filename>p_doc.css</filename> and <filename>p_web.css</filename>.
+         These should be in the same directory with
+         <filename>index.html</filename>, (i.e. one level up from the manual 
+         directories).
+        </para>
+      </listitem> 
+      <listitem>
+       <para>
+        <filename>user.action</filename> is designed for local preferences. 
+        Make sure this does not get overwritten!
+       </para>
+      </listitem> 
+      <listitem>
+       <para>
+        Other configuration files should be installed as the new defaults, 
+        but all previously installed configuration files should be preserved
+        as backups. This is just good manners :-)
+       </para>
+     </listitem> 
+     <listitem>
+      <para>
+       Please check platform specific notes in this doc, if you haven't 
+       done <quote>Privoxy</quote> packaging before for other platform 
+       specific issues. Conversely, please add any notes that you know 
+       are important for your platform (or contact one of the doc 
+       maintainers to do this if you can't).
+      </para>
+    </listitem> 
+
+      </itemizedlist>
+     </para> 
+    
+    </sect3>
+
     <sect3 id="newrelease-tarball"><title>Source Tarball</title>
         <para>
        First, <emphasis>make sure that you have freshly exported the right
@@ -2055,7 +2234,7 @@ at sourceforge. Three simple steps:
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then do:
@@ -2063,7 +2242,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   make tarball-dist
-       </programlisting>
+</programlisting>
        </para>
        <para>
        To upload the package to Sourceforge, simply issue
@@ -2071,7 +2250,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   make tarball-upload
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Go to the displayed URL and release the file publicly on Sourceforge.
@@ -2080,37 +2259,58 @@ at sourceforge. Three simple steps:
       </para>
     </sect3>
 
-    <sect3 id="newrelease-rpm"><title>SuSE or Red Hat</title>
+    <sect3 id="newrelease-rpm"><title>SuSE, Conectiva or Red Hat RPM</title>
+        <para>
+        In following text, replace <replaceable class="parameter">dist</replaceable>
+        with either <quote>rh</quote> for Red Hat or <quote>suse</quote> for SuSE.
+        </para>
         <para>
        First, <emphasis>make sure that you have freshly exported the right
         version into an empty directory</emphasis>. (See "Building and releasing
-        packages" above). Then run:
+        packages" above). 
+       </para>
+       <para>
+        As the only exception to not changing anything after export from CVS,
+        now examine the file <filename>privoxy-</filename><replaceable class="parameter">dist</replaceable><filename>.spec</filename>
+        and make sure that the version information and the RPM release number are
+        correct. The RPM release numbers for each version start at one. Hence it must
+        be reset to one if this is the first RPM for
+        <replaceable class="parameter">dist</replaceable> which is built from version
+        X.Y.Z. Check the
+        <ulink url="http://sourceforge.net/project/showfiles.php?group_id=11118">file
+        list</ulink> if unsure. Else, it must be set to the highest already available RPM
+        release number for that version plus one.
+       </para>
+       <para>
+        Then run:
        </para>
        <para>
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then do
        </para>
        <para>
        <programlisting>
-  make suse-dist (or make redhat-dist)
-       </programlisting>
+  make <replaceable class="parameter">dist</replaceable>-dist
+</programlisting>
        </para>
        <para>
        To upload the package to Sourceforge, simply issue
        </para>
        <para>
        <programlisting>
-  make suse-upload (or make redhat-upload)
-       </programlisting>
+  make <replaceable class="parameter">dist</replaceable>-upload <replaceable class="parameter">rpm_packagerev</replaceable>
+</programlisting>
        </para>
        <para>
+        where <replaceable class="parameter">rpm_packagerev</replaceable> is the
+        RPM release number as determined above.
        Go to the displayed URL and release the file publicly on Sourceforge.
-        Use the release notes and รงhange log from the source tarball package.
+        Use the release notes and change log from the source tarball package.
       </para>
     </sect3>
 
@@ -2123,7 +2323,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup
-       </programlisting>
+</programlisting>
        </para>
        <para>
        You will need a mix of development tools.
@@ -2143,7 +2343,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   installExeName='privoxyos2_setup_X.Y.Z.exe'
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Next, edit the <filename>IJB.wis</filename> file so the release number matches
@@ -2152,7 +2352,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"
-       </programlisting>
+</programlisting>
        </para>
        <para>
        You're now ready to build.  Run:
@@ -2160,7 +2360,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   os2build
-       </programlisting>
+</programlisting>
        </para>
        <para>
          You will find the  WarpIN-installable executable in the
@@ -2178,7 +2378,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   ssh cf.sourceforge.net
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Choose the right operating system (not the Debian one).
@@ -2190,7 +2390,7 @@ at sourceforge. Three simple steps:
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then run
@@ -2198,7 +2398,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   gmake solaris-dist
-       </programlisting>
+</programlisting>
        </para>
        <para>
        which creates a gzip'ed tar archive. Sadly, you cannot use <command>make
@@ -2223,7 +2423,7 @@ at sourceforge. Three simple steps:
       <para>
       <programlisting>
         cvs -z3  -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co winsetup
-      </programlisting>
+</programlisting>
       </para>
       <para>
         Then you can build the package.  This is fully automated, and is
@@ -2234,7 +2434,7 @@ at sourceforge. Three simple steps:
       <programlisting>
         cd winsetup
         make
-      </programlisting>
+</programlisting>
       </para>
       <para>
         Now you can manually rename <filename>privoxy_setup.exe</filename> to
@@ -2249,16 +2449,29 @@ at sourceforge. Three simple steps:
        First, <emphasis>make sure that you have freshly exported the right
         version into an empty directory</emphasis>. (See "Building and releasing
         packages" above). Then, run:
-       </para>
-       <para>
+      </para>
+      <para>
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
-       </para>
-       <para>
-       Then do FIXME.
-       </para>
+</programlisting>
+      </para>
+      <para>
+        Then, run:
+      </para>
+      <para>
+       <programlisting>
+  make debian-dist
+</programlisting>
+      </para>
+      <para>
+        To upload the package to Sourceforge, simply issue
+      </para>
+      <para>
+        <programlisting>
+  make debian-upload
+</programlisting>
+      </para>
     </sect3>
 
     <sect3 id="newrelease-macosx"><title>Mac OSX</title>
@@ -2270,7 +2483,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
   cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co osxsetup
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then run:
@@ -2279,7 +2492,7 @@ at sourceforge. Three simple steps:
        <programlisting>
   cd osxsetup
   build
-       </programlisting>
+</programlisting>
        </para>
        <para>
        This will run <filename>autoheader</filename>, <filename>autoconf</filename> and
@@ -2296,7 +2509,7 @@ at sourceforge. Three simple steps:
        <para>
        <programlisting>
 zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
-       </programlisting>
+</programlisting>
        </para>
        <para>
        You can then upload <filename>privoxyosx_setup_x.y.z.zip</filename> anonymously to 
@@ -2313,7 +2526,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <para>
        <programlisting>
   ssh cf.sourceforge.net
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Choose the right operating system.
@@ -2325,7 +2538,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then run:
@@ -2333,7 +2546,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <para>
        <programlisting>
   gmake freebsd-dist
-       </programlisting>
+</programlisting>
        </para>
        <para>
        which creates a gzip'ed tar archive. Sadly, you cannot use <command>make
@@ -2354,7 +2567,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then do FIXME.
@@ -2371,7 +2584,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then do FIXME.
@@ -2385,7 +2598,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <para>
        <programlisting>
   ssh cf.sourceforge.net
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Choose the right operating system.
@@ -2397,7 +2610,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <programlisting>
   cd current
   autoheader && autoconf && ./configure
-       </programlisting>
+</programlisting>
        </para>
        <para>
        Then run:
@@ -2405,7 +2618,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
        <para>
        <programlisting>
   make aix-dist
-       </programlisting>
+</programlisting>
        </para>
        <para>
        which creates a gzip'ed tar archive. Sadly, you cannot use <command>make
@@ -2417,6 +2630,62 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
     </sect3>
    </sect2>
 
+   <sect2 id="releasing">
+   <title>Uploading and Releasing Your Package</title>
+    <para>
+      After the package is ready, it is time to upload it 
+      to SourceForge, and go through the release steps. The upload
+      is done via FTP:
+    </para>
+     <para>
+      <itemizedlist>
+       <listitem>
+        <para>
+          Upload to: <ulink url="ftp://upload.sourceforge.net/incoming">ftp://upload.sourceforge.net/incoming</ulink>
+        </para>
+      </listitem> 
+      <listitem>
+       <para>
+         user: <literal>anonymous</literal>
+       </para>
+      </listitem> 
+      <listitem>
+       <para>
+         password: <literal>ijbswa-developers@lists.sourceforge.net</literal>
+       </para>
+      </listitem> 
+     </itemizedlist>
+    </para> 
+    <para>
+     Or use the <command>make</command> targets as described above.
+    </para>
+    <para>
+     Once this done go to <ulink url="http://sourceforge.net/project/admin/editpackages.php?group_id=11118">http://sourceforge.net/project/admin/editpackages.php?group_id=11118</ulink>, 
+     making sure you are logged in. Find your target platform in the 
+     second column, and click <literal>Add Release</literal>. You will 
+     then need to create a new release for your package, using the format 
+     of <literal>$VERSION ($CODE_STATUS)</literal>, e.g. <emphasis>&p-version;
+     (beta)</emphasis>.
+    </para>
+    <para>
+     Now just follow the prompts. Be sure to add any appropriate Release
+     notes. You should see your freshly uploaded packages in 
+     <quote>Step 2. Add Files To This Release</quote>. Check the 
+     appropriate box(es). Remember at each step to hit the 
+     <quote>Refresh/Submit</quote> buttons! You should now see your 
+     file(s) listed in Step 3. Fill out the forms with the appropriate 
+     information for your platform, being sure to hit <quote>Update</quote>
+     for each file. If anyone is monitoring your platform, check the 
+     <quote>email</quote> box at the very bottom to notify them of 
+     the new package. This should do it!
+    </para>
+    <para>
+     If you have made errors, or need to make changes, you can go through 
+     essentially the same steps, but select <literal>Edit Release</literal>, 
+     instead of <literal>Add Release</literal>.
+    </para>
+   </sect2>
+
     <sect2 id="afterrelease">
     <title>After the Release</title>
      <para>
@@ -2445,7 +2714,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
    <para>
     <programlisting>
   make dok # (or make redkat-dok if make dok doesn't work for you)
-    </programlisting>
+</programlisting>
    </para>
    <para>
     That will generate <filename>doc/webserver/user-manual</filename>,
@@ -2471,7 +2740,7 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
    <para>
     <programlisting>
   make webserver
-    </programlisting>
+</programlisting>
    </para>
    <para>
     This will do the upload to <ulink url="http://www.privoxy.org/">the
@@ -2491,22 +2760,30 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
 <!-- end contacting -->
   </sect1>
   
-  <!--   ~~~~~       New section      ~~~~~     -->
-  <sect1 id="copyright"><title>Copyright and History</title>
 
-<sect2><title>Copyright</title>
+<!--   ~~~~~~~~       New section Header    ~~~~~~~~~     -->
+<sect1 id="copyright"><title>Privoxy Copyright, License and History</title>
+
 <!-- Include copyright.sgml -->
  &copyright;
 <!-- end -->
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2><title>License</title>
+<!-- Include copyright.sgml: -->
+ &license;
+<!-- end copyright -->
 </sect2>
+<!--  ~  End section  ~  -->
 
+<!--   ~~~~~       New section      ~~~~~     -->
 <sect2><title>History</title>
 <!-- Include history.sgml -->
  &history;
 <!-- end -->
 </sect2>
 
-  </sect1>
+</sect1>
   
   <!--   ~~~~~       New section      ~~~~~     -->
   <sect1 id="seealso"><title>See also</title>
@@ -2537,6 +2814,55 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
   Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
   $Log: developer-manual.sgml,v $
+  Revision 1.46  2002/05/22 17:15:00  oes
+  Updated intro
+
+  Revision 1.45  2002/05/19 23:01:54  hal9
+  Add small section on general packaging guidelines (e.g. actions files must
+  be writable).
+
+  Revision 1.44  2002/05/15 03:55:17  hal9
+  Fix ulink -> link, and minor modification to release process section for
+  clarification.
+
+  Revision 1.43  2002/05/10 01:48:19  hal9
+  This is mostly proposed copyright/licensing additions and changes. Docs
+  are still GPL, but licensing and copyright are more visible. Also, copyright
+  changed in doc header comments (eliminate references to JB except FAQ).
+
+  Revision 1.42  2002/05/05 20:26:02  hal9
+  Sorting out license vs copyright in these docs.
+
+  Revision 1.41  2002/05/04 08:44:44  swa
+  bumped version
+
+  Revision 1.40  2002/05/04 00:43:43  hal9
+  -Remove TOC/first page kludge with proper stylesheet fix.
+  -Combined the two very brief sections: Intro and Quickstart.
+
+  Revision 1.39  2002/05/02 15:08:25  oes
+  Added explanation about version numbers and RPM package revisions
+
+  Revision 1.38  2002/04/29 02:20:31  hal9
+  Add info on steps for uploading and the release process on SF.
+
+  Revision 1.37  2002/04/26 17:23:29  swa
+  bookmarks cleaned, changed structure of user manual, screen and programlisting cleanups, and numerous other changes that I forgot
+
+  Revision 1.36  2002/04/26 05:25:23  hal9
+  Mass commit to catch a few scattered fixes.
+
+  Revision 1.35  2002/04/17 15:16:15  oes
+  Added link to docbook crash course
+
+  Revision 1.34  2002/04/15 23:39:32  oes
+   - Extended & fixed the release section
+   - Added CVS guideline sections
+   - Separated webserver section from release section
+   - Commented out boilerplate inclusion (If you don't know yet what it is,
+     you shouldn't mess with its code ;-)
+   - Nits & fixes
+
   Revision 1.33  2002/04/12 03:49:53  hal9
   Spell checked. Clarification on where docs are kept.