<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
<document>
  <header>
    <title>Apache Gump integration</title>
  </header>
  <body>
    <section id="introduction">
      <title>Introduction</title>
      <p>
        <a href="http://gump.apache.org/">Apache Gump</a> builds Apache Forrest
        trunk and the latest development versions of each of our dependencies.
        This enables early detection of issues. Part of Gump's aim is to 
        draw people beyond the project boundaries and assist with community
        integration and collaboration.
      </p>
      <p>
        Because Forrest has many dependencies, we happen towards the end of
        the run.
        If dependencies (e.g. Apache Cocoon and certain blocks, Apache Xalan, etc.)
        fail, then of course the build of Forrest will fail.
      </p>
      <p>
        The successful use of Forrest via Gump, indicates that we could update
        our supporting products to more recent versions.
      </p>
      <note>
        2013-09: Gump is using our own packaged version of Cocoon-2.1 and many of our supported products, as gump is now not building those projects.
      </note>
      <note>
        The set of projects that gump does handle for us:<br/>
        ant, ant-contrib, xml-apis, xml-xerces, xalan, xml-resolver,
        xml-batik, xmlgraphics-commons,
        commons-cli, commons-collections, commons-jxpath, commons-io,
        commons-lang, commons-logging,
        concurrent, oro, logging-log4j-12, rat
      </note>
    </section>
    <section id="configuration">
      <title>Configuration</title>
      <p>
        The
        <a href="http://svn.apache.org/repos/asf/gump/metadata/project/forrest.xml">Gump
        metadata descriptor</a> for Forrest defines a number of different
        projects.
        All ASF committers have access. Do
        '<code>svn co https://svn.apache.org/repos/asf/gump/metadata gump-metadata</code>'
      </p>
      <p>
        See the <a href="http://gump.apache.org/metadata/">Gump Object Model</a>
        documentation.
      </p>
      <p>
         Notifications are sent to the forrest-dev mailing list.
      </p>
      <p>
        The top-level module for Forrest is at
        <a href="http://vmgump.apache.org/forrest/"><code>http://vmgump.apache.org/forrest/</code></a>
      </p>
    </section>
    <section id="results">
      <title>Results</title>
      <p>
        The results at separate Gump installations:<br/>
        <code>vmgump.a.o</code> (Ubuntu Linux) |
        <code>gump.zones.a.o</code> (FreeBSD) |
        <code>adam.a.o</code> (Mac OS X Server)
      </p>
      <p>
        See <a href="http://gump.apache.org/#When+does+Gump+run?">notes</a>
        about when Gump operates, what platform, and what JVM version.
      </p>
      <section id="forrest-core">
        <title>forrest-core</title>
        <p><strong>Status:</strong> Active</p>
        <p>
          This is the core of forrest.
        </p>
        <p>
          <a href="http://vmgump.apache.org/forrest/forrest-core/">vmgump.a.o</a>
<!--
         | 
          <a href="http://gump.zones.apache.org/forrest/forrest-core/">gump.zones.a.o</a> |
          <a href="http://adam.apache.org/gump/forrest/forrest-core/">adam.a.o</a>
-->
        </p>
      </section>
      <section id="forrest-test-basic">
        <title>forrest-test-basic</title>
        <p><strong>Status:</strong> Active</p>
        <p>
          This does 'forrest test-basic' to build our "seed-basic" site.
        </p>
        <p>
          <a href="http://vmgump.apache.org/forrest/forrest-test-basic/">vmgump.a.o</a>
<!--
          | 
          <a href="http://gump.zones.apache.org/forrest/forrest-test-basic/">gump.zones.a.o</a> |
          <a href="http://adam.apache.org/gump/forrest/forrest-test-basic/">adam.a.o</a>
-->
        </p>
      </section>
      <section id="forrest-test-deploy-plugins">
        <title>forrest-test-deploy-plugins</title>
        <p><strong>Status:</strong> Active</p>
        <p>
          This does 'forrest gump-plugins' to deploy each of the plugins that is
          required by the 'forrest-test' gump project.
          The need for this step is explained at
          <a href="https://issues.apache.org/jira/browse/FOR-1235">FOR-1235</a>.
        </p>
        <p>
          <a href="http://vmgump.apache.org/forrest/forrest-test-deploy-plugins/">vmgump.a.o</a>
<!--
          | 
          <a href="http://gump.zones.apache.org/forrest/forrest-test-deploy-plugins/">gump.zones.a.o</a> |
          <a href="http://adam.apache.org/gump/forrest/forrest-test-deploy-plugins/">adam.a.o</a>
-->
        </p>
      </section>
      <section id="forrest-test">
        <title>forrest-test</title>
        <p><strong>Status:</strong> Active</p>
        <p>
          This does 'forrest test' to build our "seed-sample" site.
        </p>
        <p>
          <a href="http://vmgump.apache.org/forrest/forrest-test/">vmgump.a.o</a>
<!--
          | 
          <a href="http://gump.zones.apache.org/forrest/forrest-test/">gump.zones.a.o</a> |
          <a href="http://adam.apache.org/gump/forrest/forrest-test/">adam.a.o</a>
-->
        </p>
      </section>
      <section id="forrest-forrestbar">
        <title>forrest-forrestbar</title>
        <p><strong>Status:</strong> Active</p>
        <p>
          The ForrestBar tool.
        </p>
        <p>
          <a href="http://vmgump.apache.org/forrest/forrest-forrestbar/">vmgump.a.o</a>
<!--
          | 
          <a href="http://gump.zones.apache.org/forrest/forrest-forrestbar/">gump.zones.a.o</a> |
          <a href="http://adam.apache.org/gump/forrest/forrest-forrestbar/">adam.a.o</a>
-->
        </p>
      </section>
      <section id="forrest-rat">
        <title>forrest-rat</title>
        <p><strong>Status:</strong> Active</p>
        <p>
          Using Apache RAT (Release Audit Tool) to give some indication of the
          the state of our source code headers and some other license aspects.
        </p>
        <p>
          <a href="http://vmgump.apache.org/forrest/forrest-rat/">vmgump.a.o</a>
<!--
          | 
          <a href="http://gump.zones.apache.org/forrest/forrest-rat/">gump.zones.a.o</a> |
          <a href="http://adam.apache.org/gump/forrest/forrest-rat/">adam.a.o</a>
-->
        </p>
      </section>
    </section>
  </body>
</document>
