generated
[privoxy.git] / doc / webserver / developer-manual / newrelease.html
index 1a11094..81cad14 100644 (file)
@@ -1,7 +1,7 @@
 <HTML
 ><HEAD
 ><TITLE
->Releasing a new version</TITLE
+>Releasing a New Version</TITLE
 ><META
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.64
@@ -13,8 +13,8 @@ REL="PREVIOUS"
 TITLE="Testing Guidelines"
 HREF="testing.html"><LINK
 REL="NEXT"
-TITLE="Contacting the developers, Bug Reporting and Feature Requests"
-HREF="contact.html"><LINK
+TITLE="Update the Webserver"
+HREF="webserver-update.html"><LINK
 REL="STYLESHEET"
 TYPE="text/css"
 HREF="../p_doc.css"></HEAD
@@ -57,7 +57,7 @@ WIDTH="10%"
 ALIGN="right"
 VALIGN="bottom"
 ><A
-HREF="contact.html"
+HREF="webserver-update.html"
 >Next</A
 ></TD
 ></TR
@@ -71,13 +71,22 @@ CLASS="SECT1"
 CLASS="SECT1"
 ><A
 NAME="NEWRELEASE"
->8. Releasing a new version</A
+>8. Releasing a New Version</A
 ></H1
 ><P
->      To minimize trouble with distribution contents, web-page
-       errors and the like, we strongly encourage you
-       to follow this section if you prepare a new release of
-       code or new pages on the webserver.
+>        When we release versions of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>,
+        our work leaves our cozy secret lab and has to work in the cold
+        RealWorld[tm]. Once it is released, there is no way to call it
+        back, so it is very important that great care is taken to ensure
+        that everything runs fine, and not to introduce problems in the
+        very last minute.
+    </P
+><P
+>        So when releasing a new version, please adhere exactly to the
+        procedure outlined in this chapter.
     </P
 ><P
 >      The following programs are required to follow this process:
@@ -86,23 +95,89 @@ CLASS="FILENAME"
 >ncftpput</TT
 > (ncftp), <TT
 CLASS="FILENAME"
->scp</TT
+>scp, ssh</TT
 > (ssh),
-<TT
+        <TT
 CLASS="FILENAME"
 >gmake</TT
-> (GNU's version of make), autoconf, cvs, ???.
+> (GNU's version of make), autoconf, cvs.
     </P
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="VERSIONNUMBERS"
+>8.1. Version numbers</A
+></H2
+><P
+>      First you need to determine which version number the release will have. 
+      <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> version numbers consist of three numbers,
+      separated by dots, like in X.Y.Z, where:
+        <P
+></P
+><UL
+><LI
+><P
+>              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 
+              <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>, and 3 will be the first stable
+              <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> release.
+            </P
+></LI
+><LI
+><P
+>              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 <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> 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.
+            </P
+></LI
+><LI
 ><P
->        Replace X, Y and Z with the actual version number (X = major, Y = minor, Z = point):
+>              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.
+            </P
+></LI
+></UL
+>
     </P
+></DIV
 ><DIV
 CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
 NAME="BEFORERELEASE"
->8.1. Before the Release</A
+>8.2. Before the Release: Freeze</A
 ></H2
 ><P
 >       The following <I
@@ -122,43 +197,27 @@ CLASS="EMPHASIS"
 CLASS="QUOTE"
 >"no!"</SPAN
 > 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.
         </P
 ></LI
 ><LI
 ><P
->         Increment the version number in <TT
-CLASS="FILENAME"
->configure.in</TT
-> in
-         CVS. Also, increase or reset the RPM release number in
-         <TT
-CLASS="FILENAME"
->configure.in</TT
-> as appropriate. Do <I
-CLASS="EMPHASIS"
->NOT</I
->
-         touch version information after export from CVS.
-         <I
-CLASS="EMPHASIS"
->All packages</I
-> will use the version and release data
-         from <TT
+>         Increment the version number (point from odd to even in development
+         branches!) in <TT
 CLASS="FILENAME"
 >configure.in</TT
 >.
-         Local files should not be changed, except prior to a CVS commit!!!
-         This way we are all on the same page!
        </P
 ></LI
 ><LI
 ><P
->        If the default <TT
+>        If <TT
 CLASS="FILENAME"
->actionsfile</TT
+>default.action</TT
 > has changed since last
-        release, bump up its version info in this line:
+        release (i.e. software release or standalone actions file release),
+        bump up its version info to A.B in this line:
        </P
 ><P
 > 
@@ -170,8 +229,7 @@ WIDTH="90%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  {+add-header{X-Actions-File-Version: A.B} -filter -no-popups}
-        </PRE
+>  {+add-header{X-Actions-File-Version: A.B} -filter -no-popups}</PRE
 ></TD
 ></TR
 ></TABLE
@@ -185,6 +243,14 @@ CLASS="PROGRAMLISTING"
 ></LI
 ><LI
 ><P
+>        If the HTML documentation is not in sync with the SGML sources
+        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.
+       </P
+></LI
+><LI
+><P
 >        <I
 CLASS="EMPHASIS"
 >Commit all files that were changed in the above steps!</I
@@ -206,26 +272,37 @@ CLASS="COMMAND"
 ></LI
 ><LI
 ><P
->        The first package uploaded should be the official
-        <SPAN
-CLASS="QUOTE"
->"tarball"</SPAN
-> release, as required by the GPL. This is built
-        with the <SPAN
-CLASS="QUOTE"
->"<B
-CLASS="COMMAND"
->make tarball-dist</B
->"</SPAN
-> Makefile
-        target, and then can be uploaded with 
-        <SPAN
-CLASS="QUOTE"
->"<B
-CLASS="COMMAND"
->make tarball-upload</B
->"</SPAN
-> (see below).
+>        If the release was in a development branch, increase the point version
+        from even to odd (X.Y.(Z+1)) again in <TT
+CLASS="FILENAME"
+>configure.in</TT
+> and
+        commit your change.
+       </P
+></LI
+><LI
+><P
+>        On the webserver, copy the user manual to a new top-level directory
+        called <TT
+CLASS="FILENAME"
+>X.Y.Z</TT
+>. 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 <TT
+CLASS="FILENAME"
+>X.Y.(Z-1)</TT
+>
+        to <TT
+CLASS="FILENAME"
+>X.Y.Z</TT
+> and <TT
+CLASS="FILENAME"
+>X.Y.(Z+1)</TT
+> to
+        <TT
+CLASS="FILENAME"
+>.</TT
+> (i.e. dot). 
        </P
 ></LI
 ></UL
@@ -237,23 +314,26 @@ CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="NEWRELEASE-WEB"
->8.2. Update the webserver</A
+NAME="THERELEASE"
+>8.3. Building and Releasing the Packages</A
 ></H2
 ><P
->      All files must be group-readable and group-writable (or no one else
-       will be able to change them)! To update the webserver, create any
-       pages locally in the <TT
-CLASS="FILENAME"
->doc/webserver/*</TT
-> directory (or
-       create new directories under <TT
-CLASS="FILENAME"
->doc/webserver</TT
->), then do
-       </P
+>      Now the individual packages can be built and released. Note that for
+      GPL reasons the first package to be released is always the source tarball.
+     </P
 ><P
->      <TABLE
+>      For <I
+CLASS="EMPHASIS"
+>all</I
+> types of packages, including the source tarball,
+      <I
+CLASS="EMPHASIS"
+>you must make sure that you build from clean sources by exporting
+      the right version from CVS into an empty directory:</I
+>.
+     </P
+><P
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -261,93 +341,80 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  make webserver
-       </PRE
+>  mkdir dist # delete or choose different name if it already exists
+  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</PRE
 ></TD
 ></TR
 ></TABLE
 >
-       </P
+    </P
 ><P
->      This will do the upload to the webserver (www.privoxy.org).      
-     </P
+>     <I
+CLASS="EMPHASIS"
+>Do NOT change</I
+> a single bit, including, but not limited to
+     version information after export from CVS. This is to make sure that
+     all release packages, and with them, all future bug reports, are based
+     on exactly the same code.
+    </P
 ><P
->      Note that <SPAN
-CLASS="QUOTE"
->"<B
-CLASS="COMMAND"
->make dok</B
->"</SPAN
-> 
-     (or <SPAN
-CLASS="QUOTE"
->"<B
-CLASS="COMMAND"
->make redhat-dok</B
->"</SPAN
->) creates
-       <TT
-CLASS="FILENAME"
->doc/webserver/user-manual</TT
->,
-       <TT
-CLASS="FILENAME"
->doc/webserver/developer-manual</TT
->,
-       <TT
-CLASS="FILENAME"
->doc/webserver/faq</TT
-> and
-       <TT
-CLASS="FILENAME"
->doc/webserver/index.html</TT
-> automatically.
-     (<TT
-CLASS="FILENAME"
->doc/webserver/man-page/privoxy-man-page.html</TT
+>     Please find additional instructions for the source tarball and the
+     individual platform dependent binary packages below.
+    </P
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="NEWRELEASE-TARBALL"
+>8.3.1. Source Tarball</A
+></H3
+><P
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then run:
+       </P
+><P
+>      <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
+></TD
+></TR
+></TABLE
 >
-     is created by a separate Makefile target, <SPAN
-CLASS="QUOTE"
->"<B
-CLASS="COMMAND"
->make
-     man</B
->"</SPAN
->, due to dependencies on some obscure perl scripts. 
-     See comments in <TT
-CLASS="FILENAME"
->GNUmakefile</TT
->.)
-      </P
+       </P
 ><P
-> 
-      Someone should also commit these to CVS so that packagers without the
-      ability to build docs locally, have access to them. This is a separate
-      step, and should also be done before each official release.
-     </P
+>      Then do:
+       </P
 ><P
->      Please do NOT use any other means of transferring files to the
-      webserver. <SPAN
-CLASS="QUOTE"
->"<B
-CLASS="COMMAND"
->make webserver</B
->"</SPAN
-> not only
-      uploads, but will make sure that the appropriate permissions are 
-      preserved for shared group access.
-      </P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="NEWRELEASE-RPM"
->8.3. SuSE or Red Hat</A
-></H2
+>      <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>  make tarball-dist</PRE
+></TD
+></TR
+></TABLE
+>
+       </P
 ><P
->      Ensure that you have the latest code version. Hence run:
+>      To upload the package to Sourceforge, simply issue
        </P
 ><P
 >      <TABLE
@@ -358,17 +425,86 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
+>  make tarball-upload</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->       first. 
+>      Go to the displayed URL and release the file publicly on Sourceforge.
+        For the change log field, use the relevant section of the
+        <TT
+CLASS="FILENAME"
+>ChangeLog</TT
+> file.
+      </P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="NEWRELEASE-RPM"
+>8.3.2. SuSE or Red Hat RPM</A
+></H3
+><P
+>        In following text, replace <TT
+CLASS="REPLACEABLE"
+><I
+>dist</I
+></TT
+>
+        with either <SPAN
+CLASS="QUOTE"
+>"rh"</SPAN
+> for Red Hat or <SPAN
+CLASS="QUOTE"
+>"suse"</SPAN
+> for SuSE.
+        </P
+><P
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). 
+       </P
+><P
+>        As the only exception to not changing anything after export from CVS,
+        now examine the file <TT
+CLASS="FILENAME"
+>privoxy-</TT
+><TT
+CLASS="REPLACEABLE"
+><I
+>dist</I
+></TT
+><TT
+CLASS="FILENAME"
+>.spec</TT
+>
+        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
+        <TT
+CLASS="REPLACEABLE"
+><I
+>dist</I
+></TT
+> which is built from version
+        X.Y.Z. Check the
+        <A
+HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
+TARGET="_top"
+>file
+        list</A
+> if unsure. Else, it must be set to the highest already available RPM
+        release number for that version plus one.
+       </P
+><P
+>        Then run:
        </P
 ><P
 >      <TABLE
@@ -379,8 +515,8 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
 ></TD
 ></TR
 ></TABLE
@@ -398,8 +534,12 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  make suse-dist or make redhat-dist
-       </PRE
+>  make <TT
+CLASS="REPLACEABLE"
+><I
+>dist</I
+></TT
+>-dist</PRE
 ></TD
 ></TR
 ></TABLE
@@ -417,27 +557,49 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  make suse-upload (or make redhat-upload)
-       </PRE
+>  make <TT
+CLASS="REPLACEABLE"
+><I
+>dist</I
+></TT
+>-upload <TT
+CLASS="REPLACEABLE"
+><I
+>rpm_packagerev</I
+></TT
+></PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      Go to the displayed URL and release the file publicly on Sourceforge.
+>        where <TT
+CLASS="REPLACEABLE"
+><I
+>rpm_packagerev</I
+></TT
+> 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 change log from the source tarball package.
       </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-OS2"
->8.4. OS/2</A
-></H2
+>8.3.3. OS/2</A
+></H3
 ><P
->      Ensure that you have the latest code version. Hence run:
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then get the OS/2 Setup module:
        </P
 ><P
 >      <TABLE
@@ -448,11 +610,7 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd ..
-  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup
-       </PRE
+>  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup</PRE
 ></TD
 ></TR
 ></TABLE
@@ -488,7 +646,9 @@ CLASS="FILENAME"
 > directory.
        Edit the os2build.cmd file to set the final executable filename.
        For example, 
-       <TABLE
+       </P
+><P
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -496,13 +656,14 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  installExeName='privoxyos2_setup_X.Y.Z.exe'
-       </PRE
+>  installExeName='privoxyos2_setup_X.Y.Z.exe'</PRE
 ></TD
 ></TR
 ></TABLE
 >
-       Next, edit the <TT
+       </P
+><P
+>      Next, edit the <TT
 CLASS="FILENAME"
 >IJB.wis</TT
 > file so the release number matches
@@ -510,7 +671,9 @@ CLASS="FILENAME"
 CLASS="FILENAME"
 >PACKAGEID</TT
 > section:
-       <TABLE
+       </P
+><P
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -518,14 +681,17 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"
-       </PRE
+>  PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"</PRE
 ></TD
 ></TR
 ></TABLE
 >
-       You're now ready to build.  Run:
-       <TABLE
+       </P
+><P
+>      You're now ready to build.  Run:
+       </P
+><P
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -533,58 +699,36 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  os2build
-       </PRE
+>  os2build</PRE
 ></TD
 ></TR
 ></TABLE
 >
-     And in the <TT
+       </P
+><P
+>         You will find the  WarpIN-installable executable in the
+        <TT
 CLASS="FILENAME"
 >./files</TT
-> directory you will have the
-     WarpIN-installable executable. 
-     Upload this anonymously to
-     <TT
+> directory. Upload this anonymously to
+         <TT
 CLASS="FILENAME"
 >uploads.sourceforge.net/incoming</TT
 >, create a release
-     for it, and you're done.
+         for it, and you're done. Use the release notes and Change Log from the
+         source tarball package.
        </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-SOLARIS"
->8.5. Solaris</A
-></H2
-><P
->      Login to Sourceforge's compilefarm via ssh
-       </P
-><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  ssh cf.sourceforge.net
-       </PRE
-></TD
-></TR
-></TABLE
->
-       </P
+>8.3.4. Solaris</A
+></H3
 ><P
->      Choose the right operating system (not the Debian one). If you have
-       downloaded <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> before,
+>      Login to Sourceforge's compilefarm via ssh:
        </P
 ><P
 >      <TABLE
@@ -595,22 +739,20 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
+>  ssh cf.sourceforge.net</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      If not, please <A
-HREF="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE"
-TARGET="_top"
->checkout
-       Privoxy via CVS first</A
->. Run:
+>      Choose the right operating system (not the Debian one).
+        When logged in, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then run:
        </P
 ><P
 >      <TABLE
@@ -621,8 +763,8 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
 ></TD
 ></TR
 ></TABLE
@@ -640,8 +782,7 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  gmake solaris-dist
-       </PRE
+>  gmake solaris-dist</PRE
 ></TD
 ></TR
 ></TABLE
@@ -654,22 +795,37 @@ CLASS="COMMAND"
        solaris-upload</B
 > on the Sourceforge machine (no ncftpput). You now have
        to manually upload the archive to Sourceforge's ftp server and release
-       the file publicly.
+       the file publicly. Use the release notes and Change Log from the
+        source tarball package.
        </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-WINDOWS"
->8.6. Windows</A
-></H2
+>8.3.5. Windows</A
+></H3
 ><P
->      Ensure that you have the latest code version. Hence run
-       </P
+>        You should ensure you have the latest version of Cygwin (from
+        <A
+HREF="http://www.cygwin.com/"
+TARGET="_top"
+>http://www.cygwin.com/</A
+>).
+        Run the following commands from within a Cygwin bash shell.
+      </P
 ><P
->      <TABLE
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then get the Windows setup module:
+      </P
+><P
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -677,20 +833,22 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
+>        cvs -z3  -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co winsetup</PRE
 ></TD
 ></TR
 ></TABLE
 >
-       </P
+      </P
 ><P
->       Run:
-       </P
+>        Then you can build the package.  This is fully automated, and is
+        controlled by <TT
+CLASS="FILENAME"
+>winsetup/GNUmakefile</TT
+>.
+        All you need to do is:
+      </P
 ><P
->      <TABLE
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -698,48 +856,41 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
+>        cd winsetup
+        make</PRE
 ></TD
 ></TR
 ></TABLE
 >
-       </P
+      </P
 ><P
->      Then do FIXME.
-       </P
+>        Now you can manually rename <TT
+CLASS="FILENAME"
+>privoxy_setup.exe</TT
+> to
+        <TT
+CLASS="FILENAME"
+>privoxy_setup_X_Y_Z.exe</TT
+>, and upload it to
+        SourceForge. When releasing the package on SourceForge, use the release notes
+        and Change Log from the source tarball package.
+      </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-DEBIAN"
->8.7. Debian</A
-></H2
-><P
->      Ensure that you have the latest code version. Hence run:
-       </P
+>8.3.6. Debian</A
+></H3
 ><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
-></TD
-></TR
-></TABLE
->
-       </P
-><P
->      first. Run:
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then, run:
        </P
 ><P
 >      <TABLE
@@ -750,8 +901,8 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
 ></TD
 ></TR
 ></TABLE
@@ -762,15 +913,20 @@ CLASS="PROGRAMLISTING"
        </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-MACOSX"
->8.8. Mac OSX</A
-></H2
+>8.3.7. Mac OSX</A
+></H3
 ><P
->      Ensure that you have the latest code version. Hence run:
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then get the Mac OSX setup module:
        </P
 ><P
 >      <TABLE
@@ -781,19 +937,17 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd ..
-  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co osxsetup
-       </PRE
+>  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co osxsetup</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      From the osxsetup directory, run:
-       <TABLE
+>      Then run:
+       </P
+><P
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -801,8 +955,8 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  build
-       </PRE
+>  cd osxsetup
+  build</PRE
 ></TD
 ></TR
 ></TABLE
@@ -834,7 +988,9 @@ CLASS="FILENAME"
        name to match the release, and hit the "Create package" button.
        If you specify ./Privoxy.pkg as the output package name, you can then create
        the distributable zip file with the command:
-       <TABLE
+       </P
+><P
+>      <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -842,13 +998,14 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
-       </PRE
+>zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg</PRE
 ></TD
 ></TR
 ></TABLE
 >
-       You can then upload <TT
+       </P
+><P
+>      You can then upload <TT
 CLASS="FILENAME"
 >privoxyosx_setup_x.y.z.zip</TT
 > anonymously to 
@@ -856,39 +1013,18 @@ CLASS="FILENAME"
 CLASS="FILENAME"
 >uploads.sourceforge.net/incoming</TT
 >,
-       create a release for it, and you're done.
+       create a release for it, and you're done. Use the release notes
+        and Change Log from the source tarball package.
        </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-FREEBSD"
->8.9. FreeBSD</A
-></H2
-><P
->      Change the version number of <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> in the
-       configure.in file. Run:
-       <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
-></TD
-></TR
-></TABLE
->
-       Then ...
-      </P
+>8.3.8. FreeBSD</A
+></H3
 ><P
 >      Login to Sourceforge's compilefarm via ssh:
        </P
@@ -901,8 +1037,7 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  ssh cf.sourceforge.net
-       </PRE
+>  ssh cf.sourceforge.net</PRE
 ></TD
 ></TR
 ></TABLE
@@ -910,6 +1045,12 @@ CLASS="PROGRAMLISTING"
        </P
 ><P
 >      Choose the right operating system.
+        When logged in, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then run:
        </P
 ><P
 >      <TABLE
@@ -920,29 +1061,8 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
-></TD
-></TR
-></TABLE
->
-       </P
-><P
->      Run:
-       </P
-><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
 ></TD
 ></TR
 ></TABLE
@@ -960,8 +1080,7 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  gmake freebsd-dist
-       </PRE
+>  gmake freebsd-dist</PRE
 ></TD
 ></TR
 ></TABLE
@@ -974,19 +1093,25 @@ CLASS="COMMAND"
        freebsd-upload</B
 > on the Sourceforge machine (no ncftpput). You now have
        to manually upload the archive to Sourceforge's ftp server and release
-       the file publicly.
+       the file publicly. Use the release notes and Change Log from the
+        source tarball package.
        </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
-NAME="NEWRELEASE-TARBALL"
->8.10. Tarball</A
-></H2
+NAME="NEWRELEASE-HPUX"
+>8.3.9. HP-UX 11</A
+></H3
 ><P
->      Ensure that you have the right code version. Hence run:
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then run:
        </P
 ><P
 >      <TABLE
@@ -997,36 +1122,32 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      first. Run:
-       </P
-><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
-></TD
-></TR
-></TABLE
->
+>      Then do FIXME.
        </P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="NEWRELEASE-AMIGA"
+>8.3.10. Amiga OS</A
+></H3
 ><P
->      Then do:
+>      First, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then run:
        </P
 ><P
 >      <TABLE
@@ -1037,67 +1158,27 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  make tarball-dist
-       </PRE
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      To upload the package to Sourceforge, simply issue
-       </P
-><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  make tarball-upload
-       </PRE
-></TD
-></TR
-></TABLE
->
+>      Then do FIXME.
        </P
-><P
->      Goto the displayed URL and release the file publicly on Sourceforge.
-      </P
 ></DIV
 ><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
 ><A
-NAME="NEWRELEASE-HPUX"
->8.11. HP-UX 11</A
-></H2
-><P
->      Ensure that you have the latest code version. Hence run:
-       </P
-><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
-></TD
-></TR
-></TABLE
->
-       </P
+NAME="NEWRELEASE-AIX"
+>8.3.11. AIX</A
+></H3
 ><P
->      first. Run:
+>      Login to Sourceforge's compilefarm via ssh:
        </P
 ><P
 >      <TABLE
@@ -1108,27 +1189,20 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
+>  ssh cf.sourceforge.net</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      Then do FIXME.
-       </P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="NEWRELEASE-AMIGA"
->8.12. Amiga OS</A
-></H2
-><P
->      Ensure that you have the latest code version. Hence run:
+>      Choose the right operating system.
+        When logged in, <I
+CLASS="EMPHASIS"
+>make sure that you have freshly exported the right
+        version into an empty directory</I
+>. (See "Building and releasing
+        packages" above). Then run:
        </P
 ><P
 >      <TABLE
@@ -1139,17 +1213,15 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
+>  cd current
+  autoheader &#38;&#38; autoconf &#38;&#38; ./configure</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      first. Run:
+>      Then run:
        </P
 ><P
 >      <TABLE
@@ -1160,118 +1232,150 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
+>  make aix-dist</PRE
 ></TD
 ></TR
 ></TABLE
 >
        </P
 ><P
->      Then do FIXME.
+>      which creates a gzip'ed tar archive. Sadly, you cannot use <B
+CLASS="COMMAND"
+>make
+       aix-upload</B
+> on the Sourceforge machine (no ncftpput). You now have
+       to manually upload the archive to Sourceforge's ftp server and release
+       the file publicly. Use the release notes and Change Log from the
+        source tarball package.
        </P
 ></DIV
+></DIV
 ><DIV
 CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="NEWRELEASE-AIX"
->8.13. AIX</A
+NAME="RELEASING"
+>8.4. Uploading and Releasing Your Package</A
 ></H2
 ><P
->      Login to Sourceforge's compilefarm via ssh:
-       </P
+>      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:
+    </P
 ><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  ssh cf.sourceforge.net
-       </PRE
-></TD
-></TR
-></TABLE
+>      <P
+></P
+><UL
+><LI
+><P
+>          Upload to: <A
+HREF="ftp://upload.sourceforge.net/incoming"
+TARGET="_top"
+>ftp://upload.sourceforge.net/incoming</A
 >
-       </P
+        </P
+></LI
+><LI
 ><P
->      Choose the right operating system. If you have downloaded Privoxy
-       before:
-       </P
+>         user: <TT
+CLASS="LITERAL"
+>anonymous</TT
+>
+       </P
+></LI
+><LI
 ><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  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
-  cd current
-       </PRE
-></TD
-></TR
-></TABLE
+>         password: <TT
+CLASS="LITERAL"
+>ijbswa-developers@lists.sourceforge.net</TT
 >
-       </P
+       </P
+></LI
+></UL
+>
+    </P
 ><P
->      If not, please <A
-HREF="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE"
+>     Once this done go to <A
+HREF="http://sourceforge.net/project/admin/editpackages.php?group_id=11118"
 TARGET="_top"
->checkout
-       Privoxy via CVS first</A
->. Run:
-       </P
+>http://sourceforge.net/project/admin/editpackages.php?group_id=11118</A
+>, 
+     making sure you are logged in. Find your target platform in the 
+     second column, and click <TT
+CLASS="LITERAL"
+>Add Release</TT
+>. You will 
+     then need to create a new release for your package, using the format 
+     of <TT
+CLASS="LITERAL"
+>$VERSION ($CODE_STATUS)</TT
+>, e.g. <I
+CLASS="EMPHASIS"
+>2.9.14
+     (beta)</I
+>.
+    </P
 ><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  autoheader &#38;&#38; autoconf &#38;&#38; ./configure
-       </PRE
-></TD
-></TR
-></TABLE
+>     Now just follow the prompts. Be sure to add any appropriate Release
+     notes. You should see your freshly uploaded packages in 
+     <SPAN
+CLASS="QUOTE"
+>"Step 2. Add Files To This Release"</SPAN
+>. Check the 
+     appropriate box(es). Remember at each step to hit the 
+     <SPAN
+CLASS="QUOTE"
+>"Refresh/Submit"</SPAN
+> 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 <SPAN
+CLASS="QUOTE"
+>"Update"</SPAN
 >
-       </P
-><P
->      Then run:
-       </P
+     for each file. If anyone is monitoring your platform, check the 
+     <SPAN
+CLASS="QUOTE"
+>"email"</SPAN
+> box at the very bottom to notify them of 
+     the new package. This should do it!
+    </P
 ><P
->      <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->  make aix-dist
-       </PRE
-></TD
-></TR
-></TABLE
->
-       </P
+>     If you have made errors, or need to make changes, you can go through 
+     essentially the same steps, but select <TT
+CLASS="LITERAL"
+>Edit Release</TT
+>, 
+     instead of <TT
+CLASS="LITERAL"
+>Add Release</TT
+>.
+    </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AFTERRELEASE"
+>8.5. After the Release</A
+></H2
 ><P
->      which creates a gzip'ed tar archive. Sadly, you cannot use <B
-CLASS="COMMAND"
->make
-       aix-upload</B
-> on the Sourceforge machine (no ncftpput). You now have
-       to manually upload the archive to Sourceforge's ftp server and release
-       the file publicly.
-       </P
+>      When all (or: most of the) packages have been uploaded and made available,
+      send an email to the <A
+HREF="mailto:ijbswa-announce@lists.sourceforge.net"
+TARGET="_top"
+>announce
+      mailing list</A
+>, Subject: "Version X.Y.Z available for download". Be sure to
+      include the
+      <A
+HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
+TARGET="_top"
+>download
+      location</A
+>, the release notes and the change log.
+     </P
 ></DIV
 ></DIV
 ><DIV
@@ -1305,7 +1409,7 @@ WIDTH="33%"
 ALIGN="right"
 VALIGN="top"
 ><A
-HREF="contact.html"
+HREF="webserver-update.html"
 >Next</A
 ></TD
 ></TR
@@ -1324,7 +1428,7 @@ VALIGN="top"
 WIDTH="33%"
 ALIGN="right"
 VALIGN="top"
->Contacting the developers, Bug Reporting and Feature Requests</TD
+>Update the Webserver</TD
 ></TR
 ></TABLE
 ></DIV