<?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.
-->
<status>
  <developers>
<!-- Add new developers here -->
    <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>
<!-- Add new contexts here -->
    <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.1" date="not-released">
      <action dev="RDG" type="add" context="admin">
        Initial plugin code.
      </action>
    </release>
  </changes>
  <todo>
    <actions priority="high">
      <action context="docs" dev="open">
        Customize this template plugin with your plugin's details.  This
        TODO list is generated from 'status.xml'.
      </action>
      <action context="docs" dev="open">
        Create the documentation with lots of examples and samples.  
        XML content goes in
        <code>src/documentation/content/xdocs</code>.
      </action>
    </actions>
  </todo>
</status>
