<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>1.&nbsp;Preface</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.0"><link rel="start" href="index.html" title="DocBook Framework (DBF)"><link rel="up" href="index.html" title="DocBook Framework (DBF)"><link rel="prev" href="index.html" title="DocBook Framework (DBF)"><link rel="next" href="ch01s02.html" title="1.2&nbsp;License Information"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">1.&nbsp;Preface</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s02.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="chapter-preface"></a>1.&nbsp;Preface</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="section-about-this-project"></a>1.1&nbsp;About this Project</h2></div></div></div><p>This project started out as a framework to render documentation
      for the Apache Velocity project (
      <code class="uri">http://velocity.apache.org/</code>) and ended somehow up to be a
      generic framework to render DocBook documents using Java and driven by
      Apache ant.</p><p>While DocBook format seems to be ubiquitous these days, to our
      surprise there were not many generic frameworks around that could render
      all kinds of formats, are platform independent, do not require lots of
      infrastructure installed and are easily customizable.</p><p>Projects either use heavily customized and hacked style sheets or
      a mix of Java and other applications. Adjusting such a rendering
      framework to the needs of the Apache Velocity project was not easy, so
      at some point, we decided to redo this (almost) from scratch.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">DocBook Framework (DBF)&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;1.2&nbsp;License Information</td></tr></table></div></body></html>