<?xml version="1.0"?>
<document>

  <properties>
    <title>Tasks</title>
    <author email="Jeff.Brekke@qg.com">Jeffrey D. Brekke</author>
  </properties>

  <body>
    <section name="Tasks">
      <p>
        <ul>
          <li>Add programmer and acceptance tests.</li>
          <li>
            Convert code to specified coding standards.  Checkstyle report provided.
          </li>
          <li>
            Clean out any classes that don't belong in this project.  Probably classes from
            org.apache.commons.net.util and org.apache.commons.net.io could be moved to their corresponding
            commons projects.
          </li>
          <li>
            Make buffer size settable for FTP data transfers using 
            retrieveFile(). retrieveFile() uses Util.copyStream and a 
            1024 byte buffer which is too small for some applications 
            (Solaris SMP).
          </li>
          <li>
            Divorce FTPClient from TelnetClient, getting rid of the 
            TelnetClient threads which cause problems on some platforms 
            (e.g., MacOS).
          </li>
          <li>
            Parse the client/server interactions without creating so many 
            strings. Many operations are slow because of this.
          </li>
          <li>
            Add ESMTP and extended NNTP commands (e.g., NNTP authentication).
          </li>
          <li>
            Make NNTPClient.listNewsgropus() and NNTPClient.listNewNews() 
            more efficient. Don't preparse into lots of little objects.
          </li>
          <li>
            TLS for FTP
          </li>
          <li>
            Change build so that API documentation doesn't include
            private and package private members.
          </li>
          <li>
            Change build so that javadoc generation doesn't have unit
            testing as a prerequisite.
          </li>
          <li>
            Change jar generation so that it doesn't include example
            classes.
          </li>
        </ul>
      </p>
    </section>
  </body>
</document>
