<?xml version="1.0"?>

<html>
 <head>
  <title>Jakarta Commons-Codec: Proposal</title>
 </head>

 <body bgcolor="white">
  <div align="center">
   <h1>Proposal for <em>Codec</em> Package</h1><br/>
   <h4>January 24, 2002</h4>
  </div>

  <h3>(0) Rationale</h3>
  <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>

  <h3>(1) Scope of the Package</h3>
  <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>

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

  <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>

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

  <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>

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

  <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>

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

  <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>

 </body>
</html>
