Title:  Downloads
Notice:    Licensed to the Apache Software Foundation (ASF) under one
           or more contributor license agreements.  See the NOTICE file
           distributed with this work for additional information
           regarding copyright ownership.  The ASF licenses this file
           to you under the Apache License, Version 2.0 (the
           "License"); you may not use this file except in compliance
           with the License.  You may obtain a copy of the License at
           .
             http://www.apache.org/licenses/LICENSE-2.0
           .
           Unless required by applicable law or agreed to in writing,
           software distributed under the License is distributed on an
           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
           KIND, either express or implied.  See the License for the
           specific language governing permissions and limitations
           under the License.

**Current Version**

The Apache ODF Toolkit(incubating) team is pleased to announce the release of 0.6-incubating on Jun 22, 2013.
 
A full list of changes is available in the [change log](http://www.apache.org/dist/incubator/odftoolkit/CHANGES-0.6-incubating.txt). People interested should also follow the [mailing list](http://incubator.apache.org/odftoolkit/mailing-lists.html) to track progress.

The ODF Toolkit source release as well as the pre-built binary deployment packages are listed below. This release is not available in the central Maven repository.

Below is a list of the downloads:

 * Source: 
	* [odftoolkit-0.6-incubating-src.zip ](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/odftoolkit-0.6-incubating-src.zip )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/odftoolkit-0.6-incubating-src.zip.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/odftoolkit-0.6-incubating-src.zip.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/odftoolkit-0.6-incubating-src.zip.sha)]
 * Binaries: 
	* [odftoolkit-0.6-incubating-bin.zip ](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/binaries/odftoolkit-0.6-incubating-bin.zip )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.6-incubating-bin.zip.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.6-incubating-bin.zip.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.6-incubating-bin.zip.sha)]
 * Documentation: 
	* [odftoolkit-0.6-incubating-doc.zip ](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/docs/odftoolkit-0.6-incubating-doc.zip )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.6-incubating-doc.zip.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.6-incubating-doc.zip.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.6-incubating-doc.zip.sha)]
 

**Older Versions**

**0.5-incubating** 

The Apache ODF Toolkit(Incubating) team is pleased to announce the release of 0.5-incubating on Jan 14, 2012. This is our first Apache release.

A full list of changes is available in the [change log](http://www.apache.org/dist/incubator/odftoolkit/CHANGES-0.5-incubating.txt). People interested should also follow the [mail list](http://incubator.apache.org/odftoolkit/mailing-lists.html) to track progress.

The ODF Toolkit source release as well as the pre-built binary deployment packages are listed below. Pre-built versions of all ODF Toolkit components are available in the central Maven repository under Group ID "org.apache.odftoolkit" and Version "0.5-incubating".

Below is a list of the downloads:

 * Source: 
    * [odftoolkit-0.5-incubating-src.tar.gz](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.gz)  [[asc](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.gz.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.gz.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.gz.sha)]
	* [odftoolkit-0.5-incubating-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.bz2 )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.bz2.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.bz2.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.tar.bz2.sha)]
	* [odftoolkit-0.5-incubating-src.zip ](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.zip )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.zip.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.zip.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/sources/odftoolkit-0.5-incubating-src.zip.sha)]
 * Binaries: 
    * [odftoolkit-0.5-incubating-bin.tar.gz](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.gz)  [[asc](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.gz.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.gz.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.gz.sha)]
	* [odftoolkit-0.5-incubating-bin.tar.bz2](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.bz2 )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.bz2.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.bz2.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.tar.bz2.sha)]
	* [odftoolkit-0.5-incubating-bin.zip ](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.zip )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.zip.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.zip.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/binaries/odftoolkit-0.5-incubating-bin.zip.sha)]
 * Documentation: 
    * [odftoolkit-0.5-incubating-doc.tar.gz](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.gz)  [[asc](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.gz.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.gz.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.gz.sha)]
	* [odftoolkit-0.5-incubating-doc.tar.bz2](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.bz2 )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.bz2.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.bz2.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.tar.bz2.sha)]
	* [odftoolkit-0.5-incubating-doc.zip ](http://www.apache.org/dyn/closer.cgi/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.zip )  [[asc](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.zip.asc)] [[md5](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.zip.md5)]
	[[sha](http://www.apache.org/dist/incubator/odftoolkit/docs/odftoolkit-0.5-incubating-doc.zip.sha)]
  
*Note*: All downloads can be verified using the Apache ODF Toolkit code signing [KEYS](http://www.apache.org/dist/incubator/odftoolkit/KEYS).
When downloading from a mirror please check the [md5sum](http://www.apache.org/dev/release-signing#md5)
and verify the [OpenPGP](http://www.apache.org/dev/release-signing#openpgp) compatible
signature from the main [Apache site](http://www.apache.org). Links are provided above (next to the release download link). This [KEYS](http://www.apache.org/dist/incubator/odftoolkit/KEYS) file contains the public
keys used for signing release. It is recommended that (when possible) a [web of trust](http://www.apache.org/dev/release-signing#web-of-trust) is
used to confirm the identity of these keys. For more information, please see the [Apache Release FAQ](http://www.apache.org/dev/release.html).

   
**Release Archives**

Apache ODF Toolkit became an incubator project in August 2011. Prior to that date the ODF Toolkit was a set of projects of [ODF Toolkit Union](http://odftoolkit.org/). Now, all of the legacy ODF Toolkit Union releases are archived at [apache-extras.org](http://code.google.com/a/apache-extras.org/p/odftoolkit-extra/).


