<?xml version="1.0"?>
<!--
Copyright 2002-2005 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>Jakarta Commons-Codec: Proposal</title>
 </properties>

 <body>
  
   <section name="Proposal for Codec Package"><br/>
   <h4>January 24, 2002</h4>
  

  
<subsection name="(0) Rationale">
  <p>
   Many software projects have a need to use various formats of data, 
   and to be able to switch between various formats.  The codec package 
   seeks to encapsulate some of the most popular encode/decode 
   algorithms in one easy to use, well tested package.  A base64 codec 
   is the first candidate, with others to follow soon.
  </p>

  </subsection>
<subsection name="(1) Scope of the Package">
  <p>
   This proposal is to create a package of Java utility classes for the
   encoding/decoding of various types of data. A base64 codec will be the
   first implementation.
  </p>

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

  <p>
   <em>Codec</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.  Codec will be a dependency for
   several existing components in the open source world.
  </p>

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

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

  <p>
   The original Java classes (<code>Base64</code>, etc.) are splashed around
   various Apache subprojects.  We intend to seek them out and integrate them.
  </p>

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

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

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

  </subsection>
<subsection name="(4) Initial Committers">

  <p>
   The initial committers on the Codec component shall be as follows:
   <ul>
    <li><a href="mailto:sanders@apache.org">Scott Sanders</a></li>
    <li><a href="mailto:bayard@apache.org">Henri Yandell</a></li>
    <li><a href="mailto:rwaldhoff@apache.org">Rodney Waldhoff</a></li>
    <li><a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a></li>
    <li><a href="mailto:jon@collab.net">Jon S. Stevens</a></li>
    <li><a href="mailto:tobrien@apache.org">Tim O'Brien</a></li>
   </ul>
  </p>

 </subsection>
</section>
</body>
</document>
