More on dealing with BLOCKED.
[privoxy.git] / doc / source / developer-manual.sgml
index f851625..b723edd 100644 (file)
@@ -6,7 +6,7 @@
                 This file belongs into
                 ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
                 
- $Id: developer-manual.sgml,v 1.12 2002/03/27 01:02:51 hal9 Exp $
+ $Id: developer-manual.sgml,v 1.15 2002/03/30 22:29:47 swa Exp $
 
  Written by and Copyright (C) 2001 the SourceForge
  Privoxy team. http://www.privoxy.org/
@@ -20,7 +20,7 @@
   <artheader>
     <title>Privoxy Developer Manual</title>
 
-    <pubdate>$Id: developer-manual.sgml,v 1.12 2002/03/27 01:02:51 hal9 Exp $</pubdate>
+    <pubdate>$Id: developer-manual.sgml,v 1.15 2002/03/30 22:29:47 swa Exp $</pubdate>
 
     <authorgroup>
       <author>
 
   <!--   ~~~~~       New section      ~~~~~     -->
   <sect1 id="introduction"><title>Introduction</title>
-    <para>To be filled.
-</para>
+<!--
+
+ I don't like seeing blank space :) So added *something* here.
+
+ --> 
+    <para>
+     <application>Privoxy</application>, as an heir to
+     <application>Junkbuster</application>, is an Open Source project 
+     and licensed under the GPL. As such, <application>Privoxy</application>
+     development is potentially open to anyone who has the time, knowledge,
+     and desire to contribute in any capacity. Our goals are simply to
+     continue the mission, to improve <application>Privoxy</application>, and
+     to make it available to as wide an audience as possible. 
+    </para>
+    <para>
+     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>
     <para>
-You'll need an account on Sourceforge to support our development. Mail you ID
+You'll need an account on Sourceforge to support our development. Mail your ID
 to the list and wait until a project manager has added you.
 
 For the time beeing (read, this section is under construction), please note the
@@ -107,15 +123,47 @@ following guidelines for changing stuff in the code. If it is
   <!--   ~~~~~       New section      ~~~~~     -->
   <sect1 id="documentation"><title>Documentation Guidelines</title>
     <para>
-        All docs are in SGML format and located in the <computeroutput>doc/source</computeroutput> directory.
+        All formal documents are maintained in docbook SGML and located
+        in the <computeroutput>doc/source</computeroutput> directory. You will
+        need <ulink url="http://www.docbook.org">docbook</ulink> and the
+        docbook stylesheets (or comparable alternatives), and either 
+        <application>jade</application> or <application>openjade</application> 
+        installed in order to build docs from source. Currently there is 
+        <ulink
+        url="../user-manual/index.html"><citetitle>user-manual</citetitle></ulink>,
+        <ulink
+        url="../faq/index.html"><citetitle>FAQ</citetitle></ulink>,
+        and, of course this, the <citetitle>developer-manual</citetitle> in
+        this format.
         </para>
         <para>
-        How do you update the webserver (i.e. the pages on sourceforge)?
+         Packagers are encouraged to include this documentation. For those
+         without the ability to build the docs locally, text versions of 
+         each are kept in CVS. Or HTML versions can be downloaded from the <ulink
+         url="http://www.privoxy.org">www.privoxy.org</ulink> website, which
+         should be fairly current.
+        </para>
+        <para>
+          Documents are built with the Makefile targets of 
+          <computeroutput>make dok</computeroutput>, or alternately
+          <computeroutput>make redhat-dok</computeroutput>. If you 
+          have problems, try both. The build process uses the document 
+          SGML sources in <computeroutput>doc/source</computeroutput> to
+          update all text files in <computeroutput>doc/text</computeroutput>
+          and to update all HTML documents in
+          <computeroutput>doc/webserver</computeroutput>.
+        </para>
+        <para>
+         Documentation writers should please make sure documents build 
+         successfully before committing to CVS.
+        </para>
+        <para>
+        How do you update the webserver (i.e. the pages on privoxy.org)?
         <orderedlist numeration="arabic">
                 <listitem><para>
-        Run <computeroutput>make dok</computeroutput> (which uses the documents in <computeroutput>doc/source</computeroutput> to update all
-        text files in <computeroutput>doc/text</computeroutput> and to update
-all web documents in <computeroutput>doc/webserver</computeroutput>.
+        First, build the docs by running <computeroutput>make
+        dok</computeroutput> (or alternately <computeroutput>make
+        redhat-dok</computeroutput>).                 
                 </para></listitem>
                 <listitem><para>
         Run <computeroutput>make webserver</computeroutput> which copies all files from
@@ -1256,7 +1304,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.12 2002/03/27 01:02:51 hal9 Exp $";
+const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.15 2002/03/30 22:29:47 swa Exp $";
 /*********************************************************************
  *
  * File        :  $S<!-- Break CVS Substitution -->ource$
@@ -1316,7 +1364,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.12 2002/03/27 01:02:51 hal9 Exp $"
+#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.15 2002/03/30 22:29:47 swa Exp $"
 /*********************************************************************
  *
  * File        :  $S<!-- Break CVS Substitution -->ource$
@@ -1473,22 +1521,466 @@ at sourceforge. Three simple steps:
     </sect2>
     
   </sect1>
+
+  <!--   ~~~~~       New section      ~~~~~     -->
+  <sect1 id="newrelease"><title>Releasing a new version</title>
+    <para>
+       To minimize trouble with distribution contents, webpage
+       errors and the like, I (Stefan) strongly encourage you
+       to follow this section if you prepare a new release of
+       code or new pages on the webserver.
+    </para>
+    <para>
+       The following programs are required to follow this process:
+       <filename>ncftpput</filename> (ncftp), <filename>scp</filename> (ssh),
+<filename>gmake</filename> (GNU's version of make), ???.
+    </para>
+    <sect2 id="newrelease-web"><title>Update the webserver</title>
+      <para>
+       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 <filename>doc/webserver</filename> directory (or
+       create new directories under <filename>doc/webserver</filename>), then do
+       </para>
+       <para>
+       <programlisting>
+       make webserver
+       </programlisting>
+       </para>
+       <para>
+       Note that <filename>make dok</filename> creates
+       <filename>doc/webserver/user-manual</filename>,
+       <filename>doc/webserver/developer-manual</filename>,
+       <filename>doc/webserver/faq</filename> and
+       <filename>doc/webserver/man-page</filename> automatically.
+      </para>
+      <para>
+        Verify on the webserver that the permissions are set correctly.  Do
+        NOT use any other means of transferring files to the webserver.
+      </para>
+    </sect2>
+
+    <sect2 id="newrelease-rpm"><title>SuSE or RedHat</title>
+      <para>
+       Ensure that you have the latest code version. Hence run
+       </para>
+       <para>
+       <programlisting>
+       cvs update .
+       </programlisting>
+       </para>
+       <para>
+       first. If necessary, change the version number of
+       <application>Privoxy</application> in the
+       <filename>configure.in</filename> file. Update the release number
+       directly in the specific spec file (particularly, set the release
+       number to <filename>1</filename> if you have increased the version
+       number before). Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then do
+       </para>
+       <para>
+       <programlisting>
+       make suse-dist or make redhat-dist
+       </programlisting>
+       </para>
+       <para>
+       To upload the package to Sourceforge, simply issue
+       </para>
+       <para>
+       <programlisting>
+       make suse-upload or make redhat-upload
+       </programlisting>
+       </para>
+       <para>
+       Goto the displayed URL and release the file publically on Sourceforge.
+      </para>
+    </sect2>
+
+    <sect2 id="newrelease-os2"><title>OS/2</title>
+      <para>
+       Ensure that you have the latest code version. Hence run
+       </para>
+       <para>
+       <programlisting>
+       cvs update .
+       </programlisting>
+       </para>
+       <para>
+       first. If necessary, change the version number of
+       <application>Privoxy</application> in the
+       <filename>configure.in</filename> file. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then do FIXME.
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-solaris"><title>Solaris</title>
+      <para>
+       Login to Sourceforge's compilefarm via ssh
+       </para>
+       <para>
+       <programlisting>
+       ssh cf.sourceforge.net
+       </programlisting>
+       </para>
+       <para>
+       Choose the right operating system (not the Debian one). If you have
+       downloaded Privoxy before,
+       </para>
+       <para>
+       <programlisting>
+       cd current && cvs update .
+       </programlisting>
+       </para>
+       <para>
+       If not, please <ulink
+       url="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE">checkout
+       Privoxy via CVS first</ulink>. Verify the version number in
+       <filename>configure.in</filename>. If necessary, change the version
+       number. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then run
+       </para>
+       <para>
+       <programlisting>
+       gmake solaris-dist
+       </programlisting>
+       </para>
+       <para>
+       which creates a gzip'ed tar archive. Sadly, you cannot use <filename>make
+       solaris-upload</filename> on the Sourceforge machine (no ncftpput). You now have
+       to manually upload the archive to Sourceforge's ftp server and release
+       the file publically
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-windows"><title>Windows</title>
+      <para>
+       Ensure that you have the latest code version. Hence run
+       </para>
+       <para>
+       <programlisting>
+       cvs update .
+       </programlisting>
+       </para>
+       <para>
+       first. If necessary, change the version number of
+       <application>Privoxy</application> in the
+       <filename>configure.in</filename> file. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then do FIXME.
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-debian"><title>Debian</title>
+      <para>
+       Ensure that you have the latest code version. Hence run
+       </para>
+       <para>
+       <programlisting>
+       cvs update .
+       </programlisting>
+       </para>
+       <para>
+       first. If necessary, change the version number of
+       <application>Privoxy</application> in the
+       <filename>configure.in</filename> file. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then do FIXME.
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-macosx"><title>Mac OSX</title>
+      <para>
+       Login to Sourceforge's compilefarm via ssh
+       </para>
+       <para>
+       <programlisting>
+       ssh cf.sourceforge.net
+       </programlisting>
+       </para>
+       <para>
+       Choose the right operating system. If you have downloaded Privoxy
+       before,
+       </para>
+       <para>
+       <programlisting>
+       cd current && cvs update .
+       </programlisting>
+       </para>
+       <para>
+       If not, please <ulink
+       url="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE">checkout
+       Privoxy via CVS first</ulink>. Verify the version number in
+       <filename>configure.in</filename>. If necessary, change the version
+       number. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then run
+       </para>
+       <para>
+       <programlisting>
+       make macosx-dist
+       </programlisting>
+       </para>
+       <para>
+       which creates a gzip'ed tar archive. Sadly, you cannot use <filename>make
+       macosx-upload</filename> on the Sourceforge machine (no ncftpput). You now have
+       to manually upload the archive to Sourceforge's ftp server and release
+       the file publically
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-freebsd"><title>FreeBSD</title>
+      <para>
+       Change the version number of <application>Privoxy</application> in the
+       configure.in file. Run
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       Then ...
+      </para>
+      <para>
+       Login to Sourceforge's compilefarm via ssh
+       </para>
+       <para>
+       <programlisting>
+       ssh cf.sourceforge.net
+       </programlisting>
+       </para>
+       <para>
+       Choose the right operating system. If you have downloaded Privoxy
+       before,
+       </para>
+       <para>
+       <programlisting>
+       cd current && cvs update .
+       </programlisting>
+       </para>
+       <para>
+       If not, please <ulink
+       url="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE">checkout
+       Privoxy via CVS first</ulink>. Verify the version number in
+       <filename>configure.in</filename>. If necessary, change the version
+       number. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then run
+       </para>
+       <para>
+       <programlisting>
+       gmake freebsd-dist
+       </programlisting>
+       </para>
+       <para>
+       which creates a gzip'ed tar archive. Sadly, you cannot use <filename>make
+       freebsd-upload</filename> on the Sourceforge machine (no ncftpput). You now have
+       to manually upload the archive to Sourceforge's ftp server and release
+       the file publically
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-tarball"><title>Tarball</title>
+      <para>
+       Ensure that you have the latest code version. Hence run
+       </para>
+       <para>
+       <programlisting>
+       cvs update .
+       </programlisting>
+       </para>
+       <para>
+       first. If necessary, change the version number of
+       <application>Privoxy</application> in the
+       <filename>configure.in</filename> file. Run
+       </para>
+       <para>
+       <programlisting>
+       make clobber
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then do
+       </para>
+       <para>
+       <programlisting>
+       make tarball-dist
+       </programlisting>
+       </para>
+       <para>
+       To upload the package to Sourceforge, simply issue
+       </para>
+       <para>
+       <programlisting>
+       make tarball-upload
+       </programlisting>
+       </para>
+       <para>
+       Goto the displayed URL and release the file publically on Sourceforge.
+      </para>
+    </sect2>
+
+    <sect2 id="newrelease-hpux"><title>HP-UX 11</title>
+      <para>
+       Ensure that you have the latest code version. Hence run
+       </para>
+       <para>
+       <programlisting>
+       cvs update .
+       </programlisting>
+       </para>
+       <para>
+       first. If necessary, change the version number of
+       <application>Privoxy</application> in the
+       <filename>configure.in</filename> file. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then do FIXME.
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-amiga"><title>Amiga OS</title>
+      <para>
+       Ensure that you have the latest code version. Hence run
+       </para>
+       <para>
+       <programlisting>
+       cvs update .
+       </programlisting>
+       </para>
+       <para>
+       first. If necessary, change the version number of
+       <application>Privoxy</application> in the
+       <filename>configure.in</filename> file. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then do FIXME.
+       </para>
+    </sect2>
+
+    <sect2 id="newrelease-aix"><title>AIX</title>
+      <para>
+       Login to Sourceforge's compilefarm via ssh
+       </para>
+       <para>
+       <programlisting>
+       ssh cf.sourceforge.net
+       </programlisting>
+       </para>
+       <para>
+       Choose the right operating system. If you have downloaded Privoxy
+       before,
+       </para>
+       <para>
+       <programlisting>
+       cd current && cvs update .
+       </programlisting>
+       </para>
+       <para>
+       If not, please <ulink
+       url="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE">checkout
+       Privoxy via CVS first</ulink>. Verify the version number in
+       <filename>configure.in</filename>. If necessary, change the version
+       number. Run
+       </para>
+       <para>
+       <programlisting>
+       autoheader && autoconf && ./configure
+       </programlisting>
+       </para>
+       <para>
+       Then run
+       </para>
+       <para>
+       <programlisting>
+       make aix-dist
+       </programlisting>
+       </para>
+       <para>
+       which creates a gzip'ed tar archive. Sadly, you cannot use <filename>make
+       aix-upload</filename> on the Sourceforge machine (no ncftpput). You now have
+       to manually upload the archive to Sourceforge's ftp server and release
+       the file publically
+       </para>
+    </sect2>
+
+  </sect1>
   
   <!--   ~~~~~       New section      ~~~~~     -->
   <sect1 id="contact"><title>Contact the developers</title>
-    <para>Please see the user manual for information on how to contact the developers.
+    <para>
+     Please see the contact page in the <ulink
+     url="../user-manual/contact.html">user-manual</ulink> for details.
     </para>
   </sect1>
   
   <!--   ~~~~~       New section      ~~~~~     -->
   <sect1 id="copyright"><title>Copyright and History</title>
-    <para>Please see the user manual for information on Copyright and History.
-    </para>
+    <para>
+     Please see the <ulink
+     url="../user-manual/copyright.html#HISTORY">user-manual</ulink> for
+     information on Copyright and History.
+  </para>
   </sect1>
   
   <!--   ~~~~~       New section      ~~~~~     -->
   <sect1 id="seealso"><title>See also</title>
-    <para>Please see the user manual for information on references.
+    <para>
+      Please see the <ulink
+      url="../user-manual/seealso.html">user-manual</ulink> for others
+      references.
     </para>
   </sect1>
 
@@ -1513,6 +2005,16 @@ at sourceforge. Three simple steps:
   Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
   $Log: developer-manual.sgml,v $
+  Revision 1.15  2002/03/30 22:29:47  swa
+  wrong make flavour
+
+  Revision 1.14  2002/03/30 19:04:08  swa
+  people release differently. no good.
+  I want to make parts of the docs only.
+
+  Revision 1.13  2002/03/27 01:16:41  hal9
+  ditto
+
   Revision 1.12  2002/03/27 01:02:51  hal9
   Touch up on name change...