<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed  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.
-->

<document>
  
  <properties>
    <title>Get Involved</title>
    <author email="zheng.aT.apache.D0T.org">ZHENG Zhong</author>
  </properties>
  
  <body>
    
    <section name="Get Involved in Apache Pluto!">
      
      <p>
        Welcome to the Apache Pluto community! We invite you to participate as
        a user or as a contributor -- or both!
      </p>
      
      <subsection name="Provide Feedback">
        <p>
          The Pluto project will grow and thrive from those who use it, so send
          the community your feedback:
          <ul>
            <li>
              <a href="download.html">Download</a> Pluto or
              <a href="source-repository.html">check out the current source code
              from Subversion</a>, and start using it.
            </li>
            <li>
              Subscribe to the <a href="mail-lists.html">Pluto mailing lists</a>
              and participate in the discussion.
            </li>
            <li>
              Participate in the <a href="http://wiki.apache.org/portals/Pluto">
              Pluto Wiki</a>.
            </li>
            <li>
              Pluto uses <a href="http://issues.apache.org/jira/browse/PLUTO">
              Apache's Jira issue tracker</a> to log bugs and enhancement
              requests. Anyone can browse the Jira database and create issues.
            </li>
          </ul>
        </p>
      </subsection>
      
    </section>
    
  </body>
  
</document>
