<?xml version="1.0" encoding="ISO-8859-1"?>

<document>

  <properties>
    <title>Proposal</title>
    <author email="dev@hc.apache.org">Commons Documentation Team</author>
    <author email="remy@apache.org">Remy Maucherat</author>
    <author email="jsdever@apache.org">Jeff Dever</author>
    <revision>$Id$</revision>
  </properties>

  <body>

    <section name="Rationale">
      <p>HTTP is the main protocol used today on the internet. Although the JDK
        includes basic support for building HTTP-aware client applications, it
        doesn't provide the flexibility or ease of use needed for many projects.
      </p>

      <p>A Commons package would give committers an opportunity to coordinate
        their efforts to create and maintain a efficient, feature-rich package
        under the ASF license.</p>
    </section>

    <section name="Scope of the Package">
      <p>The package shall create and maintain a Java library implementing the client
        side of the HTTP/1.1 protocol, as defined in RFC 2616 and RFC 2617.
      </p>

      <p>
        The package should :
        <ul>
          <li>Have an API which should be as simple to use as possible</li>
          <li>Be as easy to extend as possible</li>
          <li>Provide unconditional support for HTTP/1.1</li>
        </ul>
        The package is quite different from the HTTP client provided as part of the JDK
        (java.net.HttpURLConnection), as it focuses on the HTTP methods being sent
        (instead of making that transparent to the user), and generally allows more
        interaction with the lower level connection. The JDK client is also not very
        intuitive to use.
      </p>

      <p>
        The package is used by the Slide project to build a WebDAV client
        library supporting WebDAV level 2.
      </p>
    </section>

    <section name="Interaction With Other Packages">
      <p><em>HttpClient</em> relies on:
      </p>

      <ul>
        <li>Java Development Kit (Version 1.1 or later; 1.3 or later recommended)
        </li>
      </ul>
    </section>

    <section name="Initial Source of the Package">
      <p>The initial codebase exists in the jakarta-slide cvs tree under the
        org.apache.webdav.lib package.  It would be moved to commons under
        the http subdirectory.
      </p>

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

    <section name="Required Jakarta-Commons Resources">
      <ul>

        <li>CVS Repository - New directory <code>httpclient</code> in the
          <code>jakarta-commons</code> CVS repository.</li>

        <li>Initial Committers - The list is provided below. Some of the proposed
          committers are not currently jakarta-commons committers, but are committers
          on the jakarta-slide project, and contributed to this component.</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
          [httpclient].</li>

        <li>Bugzilla - New component "HttpClient" under the "Commons" product
          category, with appropriate version identifiers as needed.</li>

        <li>Jyve FAQ - New category "commons-httpclient" (when available).</li>
      </ul>
    </section>

    <section name="Initial Committers">
      <p>The initial committers on the <em>HttpClient</em> component shall be:</p>

      <ul>
        <li>Remy Maucherat</li>
        <li>B.C.Holmes</li>
        <li>Sung-Gu Park</li>
        <li>Juergen Pill</li>
        <li>Costin Manolache</li>
      </ul>
    </section>
    <section name="Proposal ChangeLog">
      <p>2002/07/19 - Replace uses of <em>HTTP Client</em> with <em>HttpClient</em> 
        for consistency.
      </p>
    </section>

  </body>

</document>
