diff --git a/HACKING b/HACKING
deleted file mode 100644
index c674f5d..0000000
--- a/HACKING
+++ /dev/null
@@ -1,406 +0,0 @@
--*- mode: text; -*-
-$QuaggaId: Format:%an, %ai, %h$ $
-
-Contents:
-
-* GUIDELINES FOR HACKING ON QUAGGA
-* COMPILE-TIME CONDITIONAL CODE
-* COMMIT MESSAGE
-* HACKING THE BUILD SYSTEM
-* RELEASE PROCEDURE
-* TOOL VERSIONS
-* SHARED LIBRARY VERSIONING
-* GIT COMMIT SUBSMISSION
-* PATCH SUBMISSION
-* PATCH APPLICATION
-* STABLE PLATFORMS AND DAEMONS
-* IMPORT OR UPDATE VENDOR SPECIFIC ROUTING PROTOCOLS
-
-
-GUIDELINES FOR HACKING ON QUAGGA
-
-[this is a draft in progress]
-
-GNU coding standards apply.  Indentation follows the result of
-invoking GNU indent (as of 2.2.8a) with no arguments.  Note that this
-uses tabs instead of spaces where possible for leading whitespace, and
-assumes that tabs are every 8 columns.  Do not attempt to redefine the
-location of tab stops.  Note also that some indentation does not
-follow GNU style.  This is a historical accident, and we generally
-only clean up whitespace when code is unmaintainable due to whitespace
-issues, to minimise merging conflicts.
-
-For GNU emacs, use indentation style "gnu".
-
-For Vim, use the following lines (note that tabs are at 8, and that
-softtabstop sets the indentation level):
-
-set tabstop=8
-set softtabstop=2
-set shiftwidth=2
-set noexpandtab
-
-Be particularly careful not to break platforms/protocols that you
-cannot test.
-
-New code should have good comments, which explain why the code is correct.
-Changes to existing code should in many cases upgrade the comments when
-necessary for a reviewer to conclude that the change has no unintended
-consequences.
-
-Each file in the Git repository should have a git format-placeholder (like
-an RCS Id keyword), somewhere very near the top, commented out appropriately
-for the file type. The placeholder used for Quagga (replacing <dollar> with
-$) is:
-
-	$QuaggaId: <dollar>Format:%an, %ai, %h<dollar> $
-
-See line 2 of HACKING for an example;
-
-This placeholder string will be expanded out by the 'git archive' commands,
-wihch is used to generate the tar archives for snapshots and releases.
-
-Please document fully the proper use of a new function in the header file
-in which it is declared.  And please consult existing headers for
-documentation on how to use existing functions.  In particular, please consult
-these header files:
-
-  lib/log.h	logging levels and usage guidance
-  [more to be added]
-
-If changing an exported interface, please try to deprecate the interface in
-an orderly manner. If at all possible, try to retain the old deprecated
-interface as is, or functionally equivalent. Make a note of when the
-interface was deprecated and guard the deprecated interface definitions in
-the header file, ie:
-
-/* Deprecated: 20050406 */
-#if !defined(QUAGGA_NO_DEPRECATED_INTERFACES)
-#warning "Using deprecated <libname> (interface(s)|function(s))"
-...
-#endif /* QUAGGA_NO_DEPRECATED_INTERFACES */
-
-To ensure that the core Quagga sources do not use the deprecated interfaces
-(you should update Quagga sources to use new interfaces, if applicable)
-while allowing external sources to continue to build. Deprecated interfaces
-should be excised in the next unstable cycle.
-
-Note: If you wish, you can test for GCC and use a function
-marked with the 'deprecated' attribute. However, you must provide the
-#warning for other compilers.
-
-If changing or removing a command definition, *ensure* that you properly
-deprecate it - use the _DEPRECATED form of the appropriate DEFUN macro. This
-is *critical*. Even if the command can no longer function, you *must* still
-implement it as a do-nothing stub. Failure to follow this causes grief for
-systems administrators. Deprecated commands should be excised in the next
-unstable cycle. A list of deprecated commands should be collated for each
-release.
-
-See also below regarding SHARED LIBRARY VERSIONING.
-
-
-COMPILE-TIME CONDITIONAL CODE
-
-Please think very carefully before making code conditional at compile time,
-as it increases maintenance burdens and user confusion. In particular,
-please avoid gratuitious --enable-.... switches to the configure script -
-typically code should be good enough to be in Quagga, or it shouldn't be
-there at all.
-
-When code must be compile-time conditional, try have the compiler make it
-conditional rather than the C pre-processor - so that it will still be
-checked by the compiler, even if disabled. I.e.  this:
-
-    if (SOME_SYMBOL)
-      frobnicate();
-
-rather than:
-
-  #ifdef SOME_SYMBOL
-  frobnicate ();
-  #endif /* SOME_SYMBOL */
-
-Note that the former approach requires ensuring that SOME_SYMBOL will be
-defined (watch your AC_DEFINEs).
-
-
-COMMIT MESSAGES
-
-The commit message MUST provide:
-
-* A suitable one-line summary followed by a blank line as the very
-  first line of the message, in the form:
-
-  topic: high-level, one line summary
-
-  Where topic would tend to be name of a subdirectory, and/or daemon, unless
-  there's a more suitable topic (e.g. 'build').  This topic is used to
-  organise change summaries in release announcements.
-
-The remainder of the commit message - its "body" - should ideally try to
-address the following areas, so as to help reviewers and future browsers of
-the code-base understand why the change is correct (note also the code
-comment requirements):
-
-* The motivation for the change (does it fix a bug, if so which? 
-  add a feature?)
-* The general approach taken, and trade-offs versus any other approaches.
-* Any testing undertaken or other information affecting the confidence
-  that can be had in the change.
-* Information to allow reviewers to be able to tell which specific changes
-  to the code are intended (and hence be able to spot any accidental
-  unintended changes).
-
-The one-line summary must be limited to 54 characters, and all other
-lines to 72 characters.
-
-Commit message bodies in the Quagga project have typically taken the
-following form:
-
-* An optional introduction, describing the change generally.
-* A short description of each specific change made, preferably:
-  * file by file
-    * function by function (use of "ditto", or globs is allowed)
-
-Contributors are strongly encouraged to follow this form.
-
-This itemised commit messages allows reviewers to have confidence that the
-author has self-reviewed every line of the patch, as well as providing
-reviewers a clear index of which changes are intended, and descriptions for
-them (C-to-english descriptions are not desireable - some discretion is
-useful).  For short patches, a per-function/file break-down may be
-redundant.  For longer patches, such a break-down may be essential.  A
-contrived example (where the general discussion is obviously somewhat
-redundant, given the one-line summary):
-
-zebra: Enhance frob FSM to detect loss of frob
-
-Add a new DOWN state to the frob state machine to allow the barinator to
-detect loss of frob.
-
-* frob.h: (struct frob) Add DOWN state flag.
-* frob.c: (frob_change) set/clear DOWN appropriately on state change.
-* bar.c: (barinate) Check frob for DOWN state.
-
-Please have a look at the git commit logs to get a feel for what the norms
-are.
-
-Note that the commit message format follows git norms, so that "git
-log --oneline" will have useful output.
-
-HACKING THE BUILD SYSTEM
-
-If you change or add to the build system (configure.ac, any Makefile.am,
-etc.), try to check that the following things still work:
-
-	- make dist
-	- resulting dist tarball builds
-	- out-of-tree builds
-
-The quagga.net site relies on make dist to work to generate snapshots. It
-must work. Common problems are to forget to have some additional file
-included in the dist, or to have a make rule refer to a source file without
-using the srcdir variable.
-
-
-RELEASE PROCEDURE
-
-* Tag the apppropriate commit with a release tag (follow existing
-  conventions).
-  [This enables recreating the release, and is just good CM practice.]
-
-* Create a fresh tar archive of the quagga.net repository, and do a test
-  build:
-
-    git-clone git:///code.quagga.net/quagga.git quagga
-    git-archive --remote=git://code.quagga.net/quagga.git \
-        --prefix=quagga-release/ master | tar -xf -
-    cd quagga-release
-
-    autoreconf -i
-    ./configure
-    make
-    make dist
-
-The tarball which 'make dist' creates is the tarball to be released! The
-git-archive step ensures you're working with code corresponding to that in
-the official repository, and also carries out keyword expansion. If any
-errors occur, move tags as needed and start over from the fresh checkouts.
-Do not append to tarballs, as this has produced non-standards-conforming
-tarballs in the past.
-
-See also: http://wiki.quagga.net/index.php/Main/Processes
-
-[TODO: collation of a list of deprecated commands. Possibly can be scripted
-to extract from vtysh/vtysh_cmd.c]
-
-
-TOOL VERSIONS
-
-Require versions of support tools are listed in INSTALL.quagga.txt.
-Required versions should only be done with due deliberation, as it can
-cause environments to no longer be able to compile quagga.
-
-
-SHARED LIBRARY VERSIONING
-
-[this section is at the moment just gdt's opinion]
-
-Quagga builds several shared libaries (lib/libzebra, ospfd/libospf,
-ospfclient/libsopfapiclient).  These may be used by external programs,
-e.g. a new routing protocol that works with the zebra daemon, or
-ospfapi clients.  The libtool info pages (node Versioning) explain
-when major and minor version numbers should be changed.  These values
-are set in Makefile.am near the definition of the library.  If you
-make a change that requires changing the shared library version,
-please update Makefile.am.
-
-libospf exports far more than it should, and is needed by ospfapi
-clients.  Only bump libospf for changes to functions for which it is
-reasonable for a user of ospfapi to call, and please err on the side
-of not bumping.
-
-There is no support intended for installing part of zebra.  The core
-library libzebra and the included daemons should always be built and
-installed together.
-
-
-GIT COMMIT SUBSMISSION
-
-The preferred method for submitting changes is to provide git commits via a
-publically-accessible git repository, which the maintainers can easily pull.
-
-The commits should be in a branch based off the Quagga.net master - a
-"feature branch".  Ideally there should be no commits to this branch other
-than those in master, and those intended to be submitted.  However, merge
-commits to this branch from the Quagga master are permitted, though strongly
-discouraged - use another (potentially local and throw-away) branch to test
-merge with the latest Quagga master.
-
-Recommended practice is to keep different logical sets of changes on
-separate branches - "topic" or "feature" branches.  This allows you to still
-merge them together to one branch (potentially local and/or "throw-away")
-for testing or use, while retaining smaller, independent branches that are
-easier to merge.
-
-All content guidelines in PATCH SUBMISSION apply.
-
-
-PATCH SUBMISSION
-
-* For complex changes, contributors are strongly encouraged to first start a
-  design discussion on the quagga-dev list before starting any coding.
-
-* Send a clean diff against the 'master' branch of the quagga.git
-  repository, in unified diff format, preferably with the '-p' argument to
-  show C function affected by any chunk, and with the -w and -b arguments to
-  minimise changes. E.g:
-
-    git diff -up mybranch..remotes/quagga.net/master
-
-  It is preferable to use git format-patch, and even more preferred to
-  publish a git repository (see GIT COMMIT SUBMISSION).
-
-  If not using git format-patch, Include the commit message in the email.
-
-* After a commit, code should have comments explaining to the reviewer
-  why it is correct, without reference to history.  The commit message
-  should explain why the change is correct.
-
-* Include NEWS entries as appropriate.
-
-* Include only one semantic change or group of changes per patch.
-
-* Do not make gratuitous changes to whitespace. See the w and b arguments
-  to diff.
-
-* Changes should be arranged so that the least contraversial and most
-  trivial are first, and the most complex or more contraversial are last. 
-  This will maximise how many the Quagga maintainers can merge, even if some
-  other commits need further work.
-
-* Providing a unit-test is strongly encouraged. Doing so will make it
-  much easier for maintainers to have confidence that they will be able
-  to support your change.
-
-* New code should be arranged so that it easy to verify and test. E.g. 
-  stateful logic should be separated out from functional logic as much as
-  possible: wherever possible, move complex logic out to smaller helper
-  functions which access no state other than their arguments.
-
-* State on which platforms and with what daemons the patch has been
-  tested.  Understand that if the set of testing locations is small,
-  and the patch might have unforeseen or hard to fix consequences that
-  there may be a call for testers on quagga-dev, and that the patch
-  may be blocked until test results appear.
-
-  If there are no users for a platform on quagga-dev who are able and
-  willing to verify -current occasionally, that platform may be
-  dropped from the "should be checked" list.
-
-
-PATCH APPLICATION
-
-* Only apply patches that meet the submission guidelines.
-
-* If the patch might break something, issue a call for testing on the
-  mailinglist.
-
-* Give an appropriate commit message (see above), and use the --author
-  argument to git-commit, if required, to ensure proper attribution (you
-  should still be listed as committer)
-
-* Immediately after commiting, double-check (with git-log and/or gitk). If
-  there's a small mistake you can easily fix it with 'git commit --amend ..'
-
-* When merging a branch, always use an explicit merge commit. Giving --no-ff
-  ensures a merge commit is created which documents "this human decided to
-  merge this branch at this time".
-
-STABLE PLATFORMS AND DAEMONS
-
-The list of platforms that should be tested follow.  This is a list
-derived from what quagga is thought to run on and for which
-maintainers can test or there are people on quagga-dev who are able
-and willing to verify that -current does or does not work correctly.
-
-  BSD (Free, Net or Open, any platform) # without capabilities
-  GNU/Linux (any distribution, i386)
-  Solaris (strict alignment, any platform)
-  [future: NetBSD/sparc64]
-
-The list of daemons that are thought to be stable and that should be
-tested are:
-
-  zebra
-  bgpd
-  ripd
-  ospfd
-  ripngd
-
-Daemons which are in a testing phase are
-
-  ospf6d
-  isisd
-  watchquagga
-
-
-IMPORT OR UPDATE VENDOR SPECIFIC ROUTING PROTOCOLS
-
-The source code of Quagga is based on two vendors:
-
-   zebra_org (http://www.zebra.org/)
-   isisd_sf (http://isisd.sf.net/)
-
-To import code from further sources, e.g. for archival purposes without
-necessarily having to review and/or fix some changeset, create a branch from
-'master':
-
-	git checkout -b archive/foo master
-	<apply changes>
-	git commit -a "Joe Bar <joe@example.com>"
-	git push quagga archive/foo
-
-presuming 'quagga' corresponds to a file in your .git/remotes with
-configuration for the appropriate Quagga.net repository.
diff --git a/HACKING.tex b/HACKING.tex
new file mode 100644
index 0000000..a49113f
--- /dev/null
+++ b/HACKING.tex
@@ -0,0 +1,462 @@
+%% -*- mode: text; -*-
+%% $QuaggaId: Format:%an, %ai, %h$ $
+
+\documentclass[oneside]{article}
+\usepackage{parskip}
+\usepackage[bookmarks,colorlinks=true]{hyperref}
+
+\title{Conventions for working on Quagga}
+
+\begin{document}
+\maketitle
+
+This is a living document. Suggestions for updates, via the
+\href{http://lists.quagga.net/mailman/listinfo/quagga-dev}{quagga-dev list},
+are welcome.
+
+\tableofcontents
+
+\section{GUIDELINES FOR HACKING ON QUAGGA}
+\label{sec:guidelines}
+
+
+GNU coding standards apply.  Indentation follows the result of
+invoking GNU indent (as of 2.2.8a) with no arguments.  Note that this
+uses tabs instead of spaces where possible for leading whitespace, and
+assumes that tabs are every 8 columns.  Do not attempt to redefine the
+location of tab stops.  Note also that some indentation does not
+follow GNU style.  This is a historical accident, and we generally
+only clean up whitespace when code is unmaintainable due to whitespace
+issues, to minimise merging conflicts.
+
+For GNU emacs, use indentation style ``gnu''.
+
+For Vim, use the following lines (note that tabs are at 8, and that
+softtabstop sets the indentation level):
+
+set tabstop=8
+set softtabstop=2
+set shiftwidth=2
+set noexpandtab
+
+Be particularly careful not to break platforms/protocols that you
+cannot test.
+
+New code should have good comments, which explain why the code is correct.
+Changes to existing code should in many cases upgrade the comments when
+necessary for a reviewer to conclude that the change has no unintended
+consequences.
+
+Each file in the Git repository should have a git format-placeholder (like
+an RCS Id keyword), somewhere very near the top, commented out appropriately
+for the file type. The placeholder used for Quagga (replacing <dollar> with
+\$) is:
+
+	\verb|$QuaggaId: <dollar>Format:%an, %ai, %h<dollar> $|
+
+See line 2 of HACKING.tex, the source for this document, for an example.
+
+This placeholder string will be expanded out by the `git archive' commands,
+wihch is used to generate the tar archives for snapshots and releases.
+
+Please document fully the proper use of a new function in the header file
+in which it is declared.  And please consult existing headers for
+documentation on how to use existing functions.  In particular, please consult
+these header files:
+
+\begin{description}
+  \item{lib/log.h}	logging levels and usage guidance
+  \item{[more to be added]}
+\end{description}
+
+If changing an exported interface, please try to deprecate the interface in
+an orderly manner. If at all possible, try to retain the old deprecated
+interface as is, or functionally equivalent. Make a note of when the
+interface was deprecated and guard the deprecated interface definitions in
+the header file, ie:
+
+\begin{verbatim}
+/* Deprecated: 20050406 */
+#if !defined(QUAGGA_NO_DEPRECATED_INTERFACES)
+#warning "Using deprecated <libname> (interface(s)|function(s))"
+...
+#endif /* QUAGGA_NO_DEPRECATED_INTERFACES */
+\end{verbatim}
+
+This is to ensure that the core Quagga sources do not use the deprecated
+interfaces (you should update Quagga sources to use new interfaces, if
+applicable), while allowing external sources to continue to build. 
+Deprecated interfaces should be excised in the next unstable cycle.
+
+Note: If you wish, you can test for GCC and use a function
+marked with the 'deprecated' attribute. However, you must provide the
+warning for other compilers.
+
+If changing or removing a command definition, \emph{ensure} that you
+properly deprecate it - use the \_DEPRECATED form of the appropriate DEFUN
+macro.  This is \emph{critical}.  Even if the command can no longer
+function, you \emph{MUST} still implement it as a do-nothing stub. 
+
+Failure to follow this causes grief for systems administrators, as an
+upgrade may cause daemons to fail to start because of unrecognised commands. 
+Deprecated commands should be excised in the next unstable cycle.  A list of
+deprecated commands should be collated for each release.
+
+See also section~\ref{sec:dll-versioning} below regarding SHARED LIBRARY
+VERSIONING.
+
+
+\section{COMPILE-TIME CONDITIONAL CODE}
+
+Please think very carefully before making code conditional at compile time,
+as it increases maintenance burdens and user confusion. In particular,
+please avoid gratuitious --enable-\ldots switches to the configure script -
+typically code should be good enough to be in Quagga, or it shouldn't be
+there at all.
+
+When code must be compile-time conditional, try have the compiler make it
+conditional rather than the C pre-processor - so that it will still be
+checked by the compiler, even if disabled. I.e.  this:
+
+\begin{verbatim}
+    if (SOME_SYMBOL)
+      frobnicate();
+\end{verbatim}
+
+rather than:
+
+\begin{verbatim}
+  #ifdef SOME_SYMBOL
+  frobnicate ();
+  #endif /* SOME_SYMBOL */
+\end{verbatim}
+
+Note that the former approach requires ensuring that SOME\_SYMBOL will be
+defined (watch your AC\_DEFINEs).
+
+
+\section{COMMIT MESSAGES}
+
+The commit message requirements are:
+
+\begin{itemize}
+
+\item The message \emph{MUST} provide a suitable one-line summary followed
+      by a blank line as the very first line of the message, in the form:
+
+  \verb|topic: high-level, one line summary|
+
+  Where topic would tend to be name of a subdirectory, and/or daemon, unless
+  there's a more suitable topic (e.g.  'build').  This topic is used to
+  organise change summaries in release announcements.
+
+\item It should have a suitable "body", which tries  to address the
+      following areas, so as to help reviewers and future browsers of the
+      code-base understand why the change is correct (note also the code
+      comment requirements):
+
+  \begin{itemize}
+  
+  \item The motivation for the change (does it fix a bug, if so which? 
+        add a feature?)
+  
+  \item The general approach taken, and trade-offs versus any other
+        approaches.
+  
+  \item Any testing undertaken or other information affecting the confidence
+        that can be had in the change.
+  
+  \item Information to allow reviewers to be able to tell which specific
+        changes to the code are intended (and hence be able to spot any accidental
+        unintended changes).
+
+  \end{itemize}
+\end{itemize}
+
+The one-line summary must be limited to 54 characters, and all other
+lines to 72 characters.
+
+Commit message bodies in the Quagga project have typically taken the
+following form:
+
+\begin{itemize}
+\item An optional introduction, describing the change generally.
+\item A short description of each specific change made, preferably:
+  \begin{itemize} \item file by file
+    \begin{itemize} \item function by function (use of "ditto", or globs is
+                          allowed)
+    \end{itemize}
+  \end{itemize}
+\end{itemize}
+
+Contributors are strongly encouraged to follow this form.
+
+This itemised commit messages allows reviewers to have confidence that the
+author has self-reviewed every line of the patch, as well as providing
+reviewers a clear index of which changes are intended, and descriptions for
+them (C-to-english descriptions are not desireable - some discretion is
+useful).  For short patches, a per-function/file break-down may be
+redundant.  For longer patches, such a break-down may be essential.  A
+contrived example (where the general discussion is obviously somewhat
+redundant, given the one-line summary):
+
+\begin{quote}\begin{verbatim}
+zebra: Enhance frob FSM to detect loss of frob
+
+Add a new DOWN state to the frob state machine to allow the barinator to
+detect loss of frob.
+
+* frob.h: (struct frob) Add DOWN state flag.
+* frob.c: (frob\_change) set/clear DOWN appropriately on state change.
+* bar.c: (barinate) Check frob for DOWN state.
+\end{verbatim}\end{quote}
+
+Please have a look at the git commit logs to get a feel for what the norms
+are.
+
+Note that the commit message format follows git norms, so that ``git
+log --oneline'' will have useful output.
+
+\section{HACKING THE BUILD SYSTEM}
+
+If you change or add to the build system (configure.ac, any Makefile.am,
+etc.), try to check that the following things still work:
+
+\begin{itemize}
+\item make dist
+\item resulting dist tarball builds
+\item out-of-tree builds
+\end{itemize}
+
+The quagga.net site relies on make dist to work to generate snapshots. It
+must work. Common problems are to forget to have some additional file
+included in the dist, or to have a make rule refer to a source file without
+using the srcdir variable.
+
+
+\section{RELEASE PROCEDURE}
+
+\begin{itemize}
+\item Tag the apppropriate commit with a release tag (follow existing
+  conventions).
+  
+  [This enables recreating the release, and is just good CM practice.]
+
+\item Create a fresh tar archive of the quagga.net repository, and do a test
+  build:
+
+  \begin{verbatim}
+    git-clone git:///code.quagga.net/quagga.git quagga
+    git-archive --remote=git://code.quagga.net/quagga.git \
+        --prefix=quagga-release/ master | tar -xf -
+    cd quagga-release
+
+    autoreconf -i
+    ./configure
+    make
+    make dist
+  \end{verbatim}
+\end{itemize}
+
+The tarball which `make dist' creates is the tarball to be released! The
+git-archive step ensures you're working with code corresponding to that in
+the official repository, and also carries out keyword expansion. If any
+errors occur, move tags as needed and start over from the fresh checkouts.
+Do not append to tarballs, as this has produced non-standards-conforming
+tarballs in the past.
+
+See also: \url{http://wiki.quagga.net/index.php/Main/Processes}
+
+[TODO: collation of a list of deprecated commands. Possibly can be scripted
+to extract from vtysh/vtysh\_cmd.c]
+
+
+\section{TOOL VERSIONS}
+
+Require versions of support tools are listed in INSTALL.quagga.txt.
+Required versions should only be done with due deliberation, as it can
+cause environments to no longer be able to compile quagga.
+
+
+\section{SHARED LIBRARY VERSIONING}
+\label{sec:dll-versioning}
+
+[this section is at the moment just gdt's opinion]
+
+Quagga builds several shared libaries (lib/libzebra, ospfd/libospf, 
+ospfclient/libsopfapiclient).  These may be used by external programs,
+e.g. a new routing protocol that works with the zebra daemon, or
+ospfapi clients.  The libtool info pages (node Versioning) explain
+when major and minor version numbers should be changed.  These values
+are set in Makefile.am near the definition of the library.  If you
+make a change that requires changing the shared library version,
+please update Makefile.am.
+
+libospf exports far more than it should, and is needed by ospfapi
+clients.  Only bump libospf for changes to functions for which it is
+reasonable for a user of ospfapi to call, and please err on the side
+of not bumping.
+
+There is no support intended for installing part of zebra.  The core
+library libzebra and the included daemons should always be built and
+installed together.
+
+
+\section{GIT COMMIT SUBMISSION}
+\label{sec:git-submission}
+
+The preferred method for submitting changes is to provide git commits via a
+publically-accessible git repository, which the maintainers can easily pull.
+
+The commits should be in a branch based off the Quagga.net master - a
+"feature branch".  Ideally there should be no commits to this branch other
+than those in master, and those intended to be submitted.  However, merge
+commits to this branch from the Quagga master are permitted, though strongly
+discouraged - use another (potentially local and throw-away) branch to test
+merge with the latest Quagga master.
+
+Recommended practice is to keep different logical sets of changes on
+separate branches - "topic" or "feature" branches.  This allows you to still
+merge them together to one branch (potentially local and/or "throw-away")
+for testing or use, while retaining smaller, independent branches that are
+easier to merge.
+
+All content guidelines in section \ref{sec:patch-submission}, PATCH
+SUBMISSION apply.
+
+
+\section{PATCH SUBMISSION}
+\label{sec:patch-submission}
+
+\begin{itemize}
+
+\item For complex changes, contributors are strongly encouraged to first
+      start a design discussion on the quagga-dev list \emph{before}
+      starting any coding.
+
+\item Send a clean diff against the 'master' branch of the quagga.git
+      repository, in unified diff format, preferably with the '-p' argument to
+      show C function affected by any chunk, and with the -w and -b arguments to
+      minimise changes. E.g:
+
+     git diff -up mybranch..remotes/quagga.net/master
+
+     It is preferable to use git format-patch, and even more preferred to
+     publish a git repository (see GIT COMMIT SUBMISSION, section
+     \ref{sec:git-submission}).
+
+     If not using git format-patch, Include the commit message in the email.
+
+\item After a commit, code should have comments explaining to the reviewer
+      why it is correct, without reference to history.  The commit message
+      should explain why the change is correct.
+
+\item Include NEWS entries as appropriate.
+
+\item Include only one semantic change or group of changes per patch.
+
+\item Do not make gratuitous changes to whitespace. See the w and b arguments
+      to diff.
+
+\item Changes should be arranged so that the least contraversial and most
+      trivial are first, and the most complex or more contraversial are
+      last.  This will maximise how many the Quagga maintainers can merge,
+      even if some other commits need further work.
+
+\item Providing a unit-test is strongly encouraged. Doing so will make it
+      much easier for maintainers to have confidence that they will be able
+      to support your change.
+
+\item New code should be arranged so that it easy to verify and test. E.g. 
+      stateful logic should be separated out from functional logic as much as
+      possible: wherever possible, move complex logic out to smaller helper
+      functions which access no state other than their arguments.
+
+\item State on which platforms and with what daemons the patch has been
+      tested.  Understand that if the set of testing locations is small,
+      and the patch might have unforeseen or hard to fix consequences that
+      there may be a call for testers on quagga-dev, and that the patch
+      may be blocked until test results appear.
+
+      If there are no users for a platform on quagga-dev who are able and
+      willing to verify -current occasionally, that platform may be
+      dropped from the "should be checked" list.
+
+\end{itemize}
+
+\section{PATCH APPLICATION}
+
+\begin{itemize}
+
+\item Only apply patches that meet the submission guidelines.
+
+\item If the patch might break something, issue a call for testing on the
+      mailinglist.
+
+\item Give an appropriate commit message (see above), and use the --author
+      argument to git-commit, if required, to ensure proper attribution (you
+      should still be listed as committer)
+
+\item Immediately after commiting, double-check (with git-log and/or gitk).
+      If there's a small mistake you can easily fix it with `git commit
+      --amend ..'
+
+\item When merging a branch, always use an explicit merge commit. Giving
+      --no-ff ensures a merge commit is created which documents ``this human
+      decided to merge this branch at this time''.
+\end{itemize}
+
+\section{STABLE PLATFORMS AND DAEMONS}
+
+The list of platforms that should be tested follow.  This is a list
+derived from what quagga is thought to run on and for which
+maintainers can test or there are people on quagga-dev who are able
+and willing to verify that -current does or does not work correctly.
+
+\begin{itemize}
+  \item BSD (Free, Net or Open, any platform)
+  \item GNU/Linux (any distribution, i386)
+  \item Solaris (strict alignment, any platform)
+  \item future: NetBSD/sparc64
+\end{itemize}
+
+The list of daemons that are thought to be stable and that should be
+tested are:
+
+\begin{itemize}
+  \item zebra
+  \item bgpd
+  \item ripd
+  \item ospfd
+  \item ripngd
+\end{itemize}
+Daemons which are in a testing phase are
+
+\begin{itemize}
+  \item ospf6d
+  \item isisd
+  \item watchquagga
+\end{itemize}
+
+\section{IMPORT OR UPDATE VENDOR SPECIFIC ROUTING PROTOCOLS}
+
+The source code of Quagga is based on two vendors:
+
+   \verb|zebra_org| (\url{http://www.zebra.org/})
+   \verb|isisd_sf| (\url{http://isisd.sf.net/})
+
+To import code from further sources, e.g. for archival purposes without
+necessarily having to review and/or fix some changeset, create a branch from
+`master':
+
+\begin{verbatim}
+	git checkout -b archive/foo master
+	<apply changes>
+	git commit -a "Joe Bar <joe@example.com>"
+	git push quagga archive/foo
+\end{verbatim}
+
+presuming `quagga' corresponds to a file in your .git/remotes with
+configuration for the appropriate Quagga.net repository.
+
+\end{document}
diff --git a/Makefile.am b/Makefile.am
index 007758f..ff4c354 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,4 +14,14 @@
 	tools/mrlg.cgi tools/rrcheck.pl tools/rrlookup.pl tools/zc.pl \
 	tools/zebra.el tools/multiple-bgpd.sh
 
+if HAVE_LATEX
+
+HACKING.pdf: HACKING.tex
+	$(LATEXMK) -pdf $<
+
+clean-local:
+	-$(LATEXMK) -C HACKING.tex
+
+endif
+
 ACLOCAL_AMFLAGS = -I m4
diff --git a/configure.ac b/configure.ac
index 4e5b535..61c4466 100755
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,16 @@
 dnl AC_PROG_SED
 AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
 
+dnl pdflatex and latexmk are needed to build HACKING.pdf
+AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
+AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
+if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
+	AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
+else
+	HAVE_LATEX=true
+fi
+AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
+
 dnl ------------------------------------------------------------------
 dnl Intel compiler check. Although Intel tries really hard to make icc
 dnl look like gcc, there are some differences. It's very verbose with
