<?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.
-->
<document>
<properties>
<title>Proposal</title>
</properties>
<body>


<section name="Proposal for Collections Package">



<subsection name="(0) Rationale">
<p>
   The Java Collections Framework provides a set of abstract data
   type interfaces and implementations that offer both a wealth
   of useful functionality, and a solid foundation for extending
   that functionality.
</p>
<p>
   Many Jakarta projects have needs or design criteria that extend
   beyond the core Collections API, such as introducing new abstract
   data types (e.g., Avalon's BinaryHeap) or changing the behaviour of
   existing abstract data types (e.g., Struts' FastHashMap).
</p>
<p>
   In keeping with the spirit of the Collections API and of abstract
   data types in general, these components can and should be shared
   assets.  A Commons package for abstract data types would
   encourage the development and reuse of a robust set of collections
   classes.
</p>

</subsection>
<subsection name="(1) Scope of the Package">
<p>
   The package will create and maintain a set of collections and
   related classes designed to be compatible with the Java Collections
   Framework, and to be distributed under the ASF license.
</p>

</subsection>
<subsection name="(1.5) Interaction With Other Packages">

<p><em>Collections</em> relies only on standard JDK 1.2 (or later) APIs for
production deployment.  It utilizes the JUnit unit testing framework for
developing and executing unit tests, but this is of interest only to
developers of the component.  Collections will also be a dependency for
several future proposed components for the Apache Commons subproject. </p>

<p>No external configuration files are utilized.</p>

</subsection>
<subsection name="(2) Initial Source of the Package">

<p>
   The initial codebase was harvested from existing and proposed
   Jakarta packages, including the Commons Database Connection Pool,
   Struts, and Avalon.
</p>

<p>The proposed package name for the new component is
<code>org.apache.commons.collections</code>.</p>


</subsection>
<subsection name="(3)  Required Jakarta-Commons Resources">

<ul>
<li>CVS Repository - New directory <code>collections</code> in the
    <code>jakarta-commons</code> CVS repository.  All initial committers
    are already committers on <code>jakarta-commons</code>, so no
    additional user setups are required.</li>
<li>Mailing List - Discussions will take place on the general
    <em>jakarta-commons@jakarta.apache.org</em> mailing list.  To help
    list subscribers identify messages of interest, it is suggested that
    the message subject of messages about this component be prefixed with
    [Collections].</li>
<li>Bugzilla - New component "Collections" under the "Commons" product
    category, with appropriate version identifiers as needed.</li>
<li>Jyve FAQ - New category "commons-collections" (when available). </li>
</ul>


</subsection>
<subsection name="(4) Initial Committers">
<ul>
   <li>Peter Donald</li>
   <li>Craig McClanahan</li>
   <li>Rodney Waldhoff</li>
   <li>James Strachan</li>
</ul>
</subsection>
</section>
</body>
</document>
