<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "./dtd/document-v11.dtd">

<document>
  <header>
    <title>Project History</title>
    <authors>
      <person id="AO" name="Andrew C. Oliver" email="acoliver@apache.org"/>
    </authors>
  </header>
  
  <body>


    <section><title>Brief Project History</title>

        <p>The POI project was dreamed up back around April 2001, when
        Andy Oliver landed a short term contract to do Java-based
        reporting to Excel. He'd done this project a few times before
        and knew right where to look for the tools he needed.
        Ironically, the API he used to use had skyrocketed from around
        $300 ($US) to around $10K ($US). He figured it would take two
        people around six months to write an Excel port so he
        recommended the client fork out the $10K.
        </p>

        <p>Around June 2001, Andy started thinking how great it would
        be to have an open source Java tool to do this and, while he
        had some spare time, he started on the project and learned
        about OLE 2 Compound Document Format. After hitting some real
        stumpers he realized he'd need help. He posted a message to
        his local Java User's Group (JUG) and asked if anyone else
        would be interested. He lucked out and the most talented Java
        programmer he'd ever met, Marc Johnson, joined the project. He
        ran rings around Andy at porting OLE 2 CDF and rewrote his
        skeletal code into a more sophisticated library. It took Marc
        a few iterations to get something they were happy with.
        </p>

        <p>While Marc worked on that, Andy ported XLS to Java, based
        on Marc's library. Several users wrote in asking to read XLS
        (not just write as had originally been planned) and one user
        had special requests for a different use for POIFS. Before
        long, the project scope had tripled.  POI 1.0 was released a
        month later than planned, but with far more features. Marc
        quickly wrote the serializer framework and HSSF Serializer in
        record time and Andy banged out more documentation and worked
        on making people aware of the project
        </p>

        <p> Shortly before the release, POI was fortunate to come into
          contact with Nicola -Ken- Barrozzi who gave them samples for
          the HSSF Serializer and help uncover its unfortunate bugs
          (which were promptly fixed).  More recently, Ken ported most
          of the POI project documentation to XML from Andy's crappy
          HTML docs he wrote with Star Office.
        </p>

        <p> Around the same time as the release, Glen Stampoultzis
joined the project.  Glen was ticked off at Andy's flippant attitude
towards adding graphing to HSSF.  Glen got so ticked off he decided to
grab a hammer and do it himself.  Glen has already become an integral
part of the POI development community; his contributions to HSSF have
already started making waves.
        </p>

        <p>Somewhere in there we decided to finally submit the project
         to <link href="http://xml.apache.org/cocoon">The Apache
         Cocoon Project</link>, only to discover the project had
         outgrown fitting nicely into just Cocoon long ago.
         Furthermore, Andy started eyeing other projects he'd like to
         see POI functionality added to.  So it was decided to donate
         the Serializers and Generators to Cocoon, other POI
         integration components to other projects, and the POI APIs
         would become part of Jakarta.  It was a bumpy road but it
         looks like everything turned out since you're reading this!
        </p>

    </section>

    <section><title>What's next for POI</title>
        <p>First we'll tackle this from a project standpoint: Well, we
        made an offer to Microsoft and Actuate (tongue in cheek
        ... well mostly) that we'd quit the project and retire if
        they'd simply write us each a really large check. I've yet to
        get a phone call or email so I'm assuming they're not going to
        pay us to go away.
        </p>
        <p>Next, we've got some work to do here at Jakarta to finish
           integrating POI into the community.  Furthermore, we're
           still transitioning the Serializer to Cocoon.
        </p>
        <p>HSSF, during the 2.0 cycle, will undergo a few
        optimizations. We'll also be adding new features like a full
        implementation of Formulas and custom text formats. We're
        hoping to be able to generate smaller files by adding
        write-support for RK, MulRK and MulBlank records. I'm also
        going to work on a Cocoon 2 Generator. Currently, reading is
        not very efficient in HSSF. This is mainly because in order to
        write or modify, one needs to be able to update upstream
        pointers to downstream data. To do this you have to have
        everything between in memory. A Generator would allow SAX
        events to be processed instead. (This will be based on the low
        level structures). One of the great things about this is that,
        you'll not only have a more efficient way to read the file,
        you'll have a great way to use spreadsheets as XML data
        sources.
        </p>
        <p>The HSSF Serializer, will further separate into a general
        framework for creating serializers for other formats and the
        HSSF Serializer specific implementation. (This is largely
        already true). We'll also be adding support for features
        already supported by HSSF (styles, fonts, text formats). We're
        hoping to add support for formulas during this cycle.
        </p>
        <p>We're beginning to expand our scope yet again. If we could
        do all of this for XLS files, what about Doc files or PPT
        files? We're thinking that our next component (HDF - Horrible
        Document Format) should follow the same pattern. We're hoping
        that new blood will join the team and allow us to tackle this
        even faster (in part because POIFS is already finished). But
        maybe what we need most is you!  </p>
      </section>

    </body>
  <footer>
    <legal>
      Copyright (c) @year@ The Apache Software Foundation All rights reserved.
      $Revision$ $Date$
    </legal>
  </footer>


</document>
