<?xml version="1.0"?>
<!--
  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 status PUBLIC "-//APACHE//DTD Status V1.3//EN" "status-v13.dtd">
<status>
  <developers>
<!-- FIFO order -->
    <person name="Ross Gardler" email="rgardler@apache.org" id="RDG"/>
    <person name="David Crossley" email="crossley@apache.org" id="DC"/>
    <person name="Cyriaque Dupoirieux" email="Cyriaque.Dupoirieux@apache.org" id="CD"/>
    <person name="Thorsten Scherler" email="thorsten@apache.org" id="TS"/>
    <person name="Juan Jose Pablos"     email="cheche@apache.org"       id="jjp" />
    <person name="Volunteer needed" email="dev@forrest.apache.org" id="open"/>
  </developers>
<!-- Define here the Title of the Context you want to display in the Changes pages.
       id = the context value of actions
       title = Title of the Context
  -->
  <contexts>
    <context id="code" title="Changes to the Code Base"/>
    <context id="docs" title="Changes to Documentation"/>
    <context id="admin" title="Changes to Project Administration"/>
    <context id="design" title="Changes to Design"/>
    <context id="build" title="Changes to Build"/>
  </contexts>
  <changes>
<!-- Add new releases here -->
    <release version="0.2-dev" date="not-released">
      <introduction>
        <p>
          See also the main <link href="ext:forrest/changes">changes</link>
          related to all plugins.
        </p>
      </introduction>
      <notes>
        <section>
          <title>pluginInfo 0.2</title>
          <p>
            This plugin provides various mechanisms for extracting and
            displaying information about one or more projects.
          </p>
        </section>
      </notes>
      <action type="update" context="code" dev="RDG" fixes-bug="FOR-977">
        Fix URLs to issues in the release notes generation.
      </action>
      <action type="update" context="code" dev="TS"> Adding svn support 
        specific properties to the default.plugin.properties.xml. Further 
        activated this new properties (projectInfo.svn.ext and 
        projectInfo.svn.path-prefix) in the svn-log.xsl. This allows to have a 
        more flexible export string. </action>
      <action type="add" context="code" dev="TS" importance="high"> Add support 
        for svn log files. This let you extract changes based on a svn log 
        file. Further this provides some handy ways to find out the first and 
        last commit of a month and the generation of svn cli commands. </action>
      <action type="add" context="code" dev="DC">
        Enable optional release/introduction elements.
      </action>
      <action type="add" context="code" dev="RDG">
        Allow an aggregation of <link href="/docs/developer/useCases/changeLogFeatures.html">all 
        use cases</link> in a project.
      </action>
      <action type="add" context="code" dev="RDG">
        Start off a <link href="/docs/developer/useCases/changeLogFeatures.html">use 
        case document for the changelog features</link> of the plugin.
      </action>
      <action type="add" context="code" dev="DC">
        Add section to output "Introduction and explanation of symbols".
        Show the unique symbols.
      </action>
      <action type="update" context="code" dev="DC">
        List all contributors for each release by showing a list of committers
        and a list of other contributors.
      </action>
      <action type="fix" context="code" dev="TS"> Fixing small issue with the 
        last ',' which should not be displayed on the last entry of the 
        contributors list. </action>
      <action type="fix" fixes-bug="FOR-839" context="code" dev="RDG">
        Using a unique key including the release version.
      </action>
      <action type="update" context="code" dev="DC">
        Make the list of contributors for each release be a compact list.
      </action>
      <action type="update" context="code" dev="DC">
       Changed rendered text for @dev attribute from "(@dev)" to the more
       explicit "Committed by @dev.".
      </action>
      <action type="update" context="code" dev="DC">
       Changed rendered text for @fix-for from "Fixes" to the more general
       "See Issue".
      </action>
      <action type="add" context="code" dev="RDG" importance="high">
        Add support for Use Case documentation. This can be used to generate various different
        types of user an developer documentation, such as step by step user instructions, or
        developer implementation notes. See <link href = "http://localhost:8888/docs/developer/useCases.html">
        http://localhost:8888/docs/developer/useCases.html</link> for more information.
      </action>
      <action type="add" context="code" dev="RDG" importance="high">
        Use locationmap for resolution of resources and files. Resources are exposed via
        {lm:projectInfo.*}
      </action>
      <action context="code" type="update" dev="jjp" due-to="cyriaque dupoirieux" fixes-bug="for-514">
          do not limit status.xml contexts in projectinfo plugin.
       </action>
      <action dev="RDG" type="add" context="code">
        Added RSS changes feeds for individual versions.
      </action>
      <action dev="RDG" type="add" context="code">
        Removed todo items from changes RSS feed.
      </action>
      <action dev="RDG" type="add" context="code">
        Add configuration options to control sorting of changes and
        inclusion of developer and committer lists.
      </action>
      <action dev="RDG" type="add" context="code">
        Add list of committers and developers to changes document.
      </action>
      <action dev="DC" type="add" context="code" importance="high">
        Enable project-level locationmap to define the location of
        the project:status file which contains the change notes.
        Therefore this can even be from a remote location.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add an automated index page that lists all projects
        in a category. Use 
        <code>projectDetails/category/*.xml</code>
        to retrieve it.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add an automated project index page that lists all projects
        grouped by Category. Use <code>projectDetails/category-index.xml</code>
        to retrieve it.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add an automated index page that lists all projects
        using a specific language. Use 
        <code>projectDetails/*-lang.xml</code>
        to retrieve it.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add an automated project index page that lists all projects
        grouped by language. Use <code>projectDetails/lang-index.xml</code>
        to retrieve it.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add an automated index page for all projects using a specified
        programming language. Use <code>projectDetails/*-lang.xml</code>
        to retrieve it.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add an automated site.xml snippet that provides links to an
        index page for all languages in use in all projects. XInclude
        <code>projectDetails/lang_index.siteSnippet.xml</code> in your
        site.xml file.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add an indexing capability for all known project descriptors.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Use locationmap to expose plugin resources.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Add projectDetails page using the DOAP.xml descriptor.
      </action>
    </release>
    <release version="0.1" date="25 May 2005">
      <notes>
        <section>
          <title>PluginInfo 0.1</title>
          <p>
            This plugin encapsulates and extends functionality that was
            originally in Forrest Core. With the advent of plugins in Forrest
            0.7 we extracted the functionality for generating changes.xml and
            todo.xml from the status.xml file. It is intended that this
            functionality be extended further within this plugin.
          </p>
          <p>
            In fact, we have already extended the functionality in a couple of
            important ways. See the changelog for more details.
          </p>
        </section>
      </notes>
      <action dev="RDG" type="add" context="code" importance="high">
        Add projectDetails page using the DOAP.xml descriptor.
      </action>
      <action dev="DC" type="fix" context="code"
       fixes-bug="FOR-564" due-to="Cyriaque Dupoirieux">
        Use the value "current" for the releaseNotes_* URI or specify a version number,
        i.e. show what is new for the latest release.
      </action>
      <action context="docs" type="add" dev="RDG" importance="high">
        Basic documentation on how to create release notes are now included on the
        plugins documentation index page.
      </action>
      <action context="code" type="add" dev="RDG" importance="high">
        Added automatic generation of release notes by requesting  **/releaseNotes_VERSION-NUMBER.xml
      </action>
      <action context="design" type="add" dev="RDG" importance="high">
        Added optional "notes" element to "release" element of status 1.3 DTD. This 
        will be inserted into the release notes for that version.
      </action>
      <action context="code" type="add" dev="RDG" importance="high">
        Enable the generation of changes for a specific version by requesting **/changes_VERSION-NUMBER.xml
      </action>
      <action context="docs" type="fix" dev="DC">
        Use relative location of images directory.
      </action>
      <action dev="DC" type="add" context="design">
       Added better sitemap match using regexp to deal
       with sub-directories too.
      </action>
      <action context="code" type="fix" dev="DC">
        Replace use of document() function in changes2rss.xml with
        sitemap aggregation.
      </action>
      <action dev="DC" type="fix" context="code"
       fixes-bug="FOR-455" due-to="Cyriaque Dupoirieux">
       Use the "title" attribute of "changes" and "todo" tags if it exists,
       otherwise use the hard-coded values.
      </action>
      <action context="code" type="update" dev="RDG" importance="high">
        Move ToDo and Changes pipelines to this plugin, from core.
      </action>
      <action dev="RDG" type="add" context="admin">
        Initial plugin code.
      </action>
    </release>
  </changes>
  <todo>
    <actions priority="high">
      <action context="code" dev="open" type="add">
        Add an attribute to the action element in skinconfig called "announce" 
        with a value of true or false (default to false), and auto generate the 
        announcement of new features.
      </action>
      <action context="code" dev="open" type="add">
        Add an element "upgrade" which contains a textual description of what 
        actions this change require in order to upgrade from the previous 
        version and use this to generate the upgrade document.
      </action>
      <action context="docs" dev="open" type="add">
        Create an icon for and action of type "refactor".
      </action>
    </actions>
    <actions priority="medium">
      <action context="admin" dev="open" type="update">
        Move DTD's to this plugin from core (depends on having a catalog 
        extension mechanism for plugins).
      </action>
    </actions>
    <actions priority="low">
      <action context="admin" dev="open" type="update">
        Look at the make sourcetype actions for changes in sitemap.xmap and
        either remove them or bring them here as appropriate.
      </action>
      <action context="admin" type="update" dev="open">
        Move images from core to this plugin.
      </action>
    </actions>
  </todo>
</status>
