<html>
<head>
<title>Proposal for Configuration Package</title>
</head>
<body bgcolor="white">

<div align="center">
<h1>Proposal for <em>Configuration</em> Package</h1>
</div>

<h3>(0) Rationale</h3>

<p>There is currently no configuration package that can work with multiple
sources of data, and provide configuration capabilities for multiple applications.
This package provides a simple to use api for performing configuration.
</p>


<h3>(1) Scope of the Package</h3>

<p>This proposal is to create a package of Java utility classes to read
simplify configuring a java application.</p>


<h3>(1.5) Interaction With Other Packages</h3>

<p><em>Configuration</em> relies on many other commons packages.  It will utilize 
the JUnit unit testing framework for developing and executing unit tests, but 
this is of interest only to developers of the component.</p>



<h3>(2) Initial Source of the Package</h3>

<p>This code originated in JServ, was brought into Turbine,
moved to Velocity and improved, and then moved into the Commons
as Configurations sub-project.</p>

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


<h3>(3)  Required Jakarta-Commons Resources</h3>

<ul>
<li>CVS Repository - New directory <code>configuration</code> in the
    <code>jakarta-commons</code> CVS repository.</li>
<li>Mailing List - Discussions will take place on the general
    <em>dev@commons.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
    [Configuration].</li>
<li>Bugzilla - New component "Configuration" under the "Commons" product
    category, with appropriate version identifiers as needed.</li>
<li>Jyve FAQ - New category "commons-configuration" (when available).</li>
</ul>


<h3>(4) Initial Committers</h3>

<p>The initial committers on the Configuration component shall be as follows:
<ul>
<li>Eric Pugh (epugh)</li>
<li>Henning P. Schmiedehausen (henning)</li>
<li>Martin Poeschl (mpoeschl)</li>

</ul>
</p>

</body>
</html>
