license.
</p>
</section>
+ <section><title>Publicly Available Information on the file formats</title>
+ <p>
+ In early 2008, Microsoft made a fairly complete set of documentation
+ on the binary file formats freely and publicly available. These were
+ released under the <link href="http://www.microsoft.com/interop/osp">Open
+ Specification Promise</link>, which does allow us to use them for
+ building open source software under the <link
+ href="http://www.apache.org/foundation/licence-FAQ.html">
+ Apache Software License</link>.
+ </p>
+ <p>
+ You can download the documentation on Excel, Word, PowerPoint and
+ Escher (drawing) from
+ <link href="http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx">http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx</link>.
+ Documentation on a few of the supporting technologies used in these
+ file formats can be downloaded from
+ <link href="http://www.microsoft.com/interop/docs/supportingtechnologies.mspx">http://www.microsoft.com/interop/docs/supportingtechnologies.mspx</link>.
+ </p>
+ <p>
+ Previously, Microsoft published a book on the Excel 97 file format.
+ It can still be of plenty of use, and is handy dead tree form. Pick up
+ a copy of "Excel 97 Developer's Kit" from your favourite second hand
+ book store.
+ </p>
+ <p>
+ The newer Office Open XML (ooxml) file formats are documented as part
+ of the ECMA / ISO standardisation effort for the formats. This
+ documentation is quite large, but you can normally find the bit you
+ need without too much effort! This can be downloaded from
+ <link href="http://www.ecma-international.org/publications/standards/Ecma-376.htm">http://www.ecma-international.org/publications/standards/Ecma-376.htm</link>,
+ and is also under the <link href="http://www.microsoft.com/interop/osp">OSP</link>.
+ </p>
+ <p>
+ It is also worth checking the documentation and code of the other
+ open source implementations of the file formats.
+ </p>
+ </section>
<section><title>I just signed an NDA to get a spec from Microsoft and I'd like to contribute</title>
<p>
In short, stay away, stay far far away. Implementing these file formats
<p>
If you've ever received information regarding the OLE 2 Compound Document
Format under any type of exclusionary agreement from Microsoft, or
- (probably illegally) received such information from a person bound by
- such an agreement, you cannot participate in this project. (Sorry)
+ (possibly illegally) received such information from a person bound by
+ such an agreement, you cannot participate in this project. (Sorry)
</p>
<p>
Those submitting patches that show insight into the file format may be
- asked to state explicitly that they are eligible or possibly sign an
- agreement.
+ asked to state explicitly that they have only ever read the publicly
+ available file format information, and not any received under an NDA
+ or similar.
</p>
</section>
</section>
<li>Documentation is always the best place to start contributing, maybe you found that if the documentation just told you how to do X then it would make more sense, modify the documentation.</li>
<li>Get used to building POI, you'll be doing it a lot, be one with the build, know its targets, etc.</li>
<li>Write Unit Tests. Great way to understand POI. Look for classes that aren't tested, or aren't tested on a public/protected method level, start there.</li>
- <li>(HSSF)Get the Excel 97 Developer's Kit - its out of print but its dirt cheap (seen copies for under $15 (US)) used on <link href="http://www.amazon.com">amazon</link>. It explains the Excel file format.</li>
+ <li>Download the file format documentation from Microsoft -
+ <link href="http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx">OLE2 Binary File Formats</link> or
+ <link href="http://www.ecma-international.org/publications/standards/Ecma-376.htm">OOXML XML File Formats</link></li>
<li>Submit patches (see below) of your contributions, modifications.</li>
<li>Fill out new features, see <link href="http://issues.apache.org/bugzilla/buglist.cgi?product=POI">Bug database</link> for suggestions.</li>
</ul>