<?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>The Pluto Project Mission</title>
  </properties>
  
  <body>
    <section name="The Pluto Project Mission">
      <p>
        The Pluto Portlet Container is the Reference Implementation of the Java
        Portlet Specification. As such, Pluto offers the development community
        a reference for interpretation of the specification, portlet developers
        a container with which compliant portlets can be tested, and portal
        developers a compliant container with which they can integrate.
      </p>
      <p>
        The following document attempts to clarify the development priorities 
        of the Apache Pluto project.
      </p>
      <p>
        The primary concern of the pluto community is to ensure that the Pluto
        Container maintains compatibility with the most current Java Portlet
        Specification. Enhancements and bug fixes should be completed in a
        manner in which compatibility is maintained.
      </p>
      <p>
        It is the responsibility of the pluto development team to ensure that
        no ambiguity is introduced into the reference implementation. No
        enhancements should be implemented which introduce questions about the
        specification.
      </p>
      <p>
        It is desirable for Pluto to become a robust and easy to use portlet
        container. This will facilitate its wider acceptance and usage in the
        community. In order to accomplish these goals, it is assumed that
        enhancements which are above and beyond the specification will be
        introduced. These enhancements may be integrated with Pluto as long as
        they do not compromise the integrity of the reference implementation as
        described above.
      </p>
      <p>
        Furthermore, functionality which is clearly beyond the scope of the
        specification should be documented as such and placed into a package
        which helps to distinguish it as such. The Pluto container should
        always remain fully specification compliant and in working state when
        these enhancements are removed. In most cases, this removal should be
        supported through configuration parameters.
      </p>
      <p>
        Finally, while the pluto project contains several subprojects, it is
        important to realize that the container itself is the most important
        aspect of the project. It, in an of itself, is the Java Portlet
        reference implementation. The portal driver (Pluto Test Portal),
        testsuite, and deployer exist to simplfy the use and testing of the
        container. As such, any significant enhancements to these components
        (most especially the portal driver) should be scrutinized before
        implementation, as most likely, it is outside the scope of the pluto
        project and belong in a portal full implementation.
      </p>
    </section>
  </body>
  
</document>

