<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <!-- link rel="Stylesheet" href="styles/porting.css" media="screen" type="text/css" / -->
  <title>Apache OpenOffice - Third-Party ports and distributions</title>
  <style type="text/css">
  /* <![CDATA[ */
  /*-------------------- Exceptions on standard css -----------------------*/
  /* @import "styles/porting.css"; */
  /* ]]> */
  </style>
</head>

<body>

<!-- div id="body_port" -->

<h1>Apache OpenOffice - Third-Party ports and distributions</h1>

<p>
The following list of <b>third-party ports and distributions</b> is made available as a service to the community. The
Apache OpenOffice project <b>does not officially endorse or maintain these packages</b>. If you have a port or distribution
that you want to be listed here please send the details to the public mailing list
<a href="mailto:dev@openoffice.apache.org">public mailing list</a>.

In some cases the Apache OpenOffice project may be able to cooperate with a porting project. If you wish to discuss how the
project may be able to help with your port please also in this case send a mail to the public mailing list
<a href="mailto:dev@openoffice.apache.org">public mailing list</a>.
</p>

<h2>Ports and distributions available now</h2>

<ul>
  <li>
    <h3>
      <a href="http://www.winpenpack.com/en/download.php?view.1341"
        title="X-ApacheOpenOffice">
        X-ApacheOpenOffice by winPenPack</a>
        (Apache OpenOffice Portable version for Windows)
    </h3>
    Apache OpenOffice re-packaged as a live/portable program by the winPenPack team, allowing execution without further
    installation, from a USB Flash Drive or Hard Disk.
  </li>
  <li>
    <h3>
      <a href="https://portableapps.com/apps/office/openoffice_portable"
        title="Apache OpenOffice Portable">
        Apache OpenOffice Portable, by PortableApps.com</a>
        (Apache OpenOffice Portable version for Windows)
    </h3>
    Apache OpenOffice re-packaged as a live/portable program by the PortableApps.com team, allowing execution without further
    installation, from a USB Flash Drive or Hard Disk.
  </li>
  <li>
    <h3>
      <a href="https://play.google.com/store/apps/details?id=com.andropenoffice"
        title="AndrOpen Office">
        AndrOpen Office</a>
        (Android port of Apache OpenOffice)
    </h3>
    AndrOpen Office is the world's first port of OpenOffice for Android. It is made available on Google Play by the AndrOpen
    Office team and it requires Android 4.0.3 or later.
  </li>
  <li>
    <h3>
      <a href="https://apps.apple.com/app/ao-office/id1177936371"
        title="AO Office">
        AO Office</a>
        (iOS/iPadOS port of Apache OpenOffice)
    </h3>
    AO Office is the world's first porting of OpenOffice for iOS/iPadOS. It is made available on the Apple App Store
    by the AO Office team and requires iOS/iPadOS 11.0 or later.
  </li>
  <li>
    <h3>
      <a href="https://sourceforge.net/projects/apacheoo-deb/files/"
        title="Unofficial Apache OpenOffice Debian/Ubuntu repository">
        Unofficial Apache OpenOffice Debian repository</a>
    </h3>
    A package repository by Marcelo Santana containing the same Debian packages as the official version, to provide an
    easier way for installation of Apache OpenOffice on Debian and derivatives. For usage in Ubuntu, a
    <a href="http://almalivre.wordpress.com/2012/05/30/apache-openoffice-instalacao-via-repositorio-nao-oficial-para-debianubuntumint/">
      step-by-step guide</a> (with commentary in Portuguese) is available too.
  </li>
  <li>
    <h3>
      <a href="https://www.bitwiseworks.com/news/#112021" title="Apache OpenOffice 4.1.11 GA for OS/2">Apache OpenOffice for OS/2</a>
    </h3>
    A port to <a href="https://www.arcanoae.com/">OS/2</a> by
    <a href="mailto:ydario(a)apache.org">Yuri Dario</a> and <a href="https://www.bitwiseworks.com/">bww bitwise works GmbH</a>.
  </li>
  <li>
    <h3>
      <a href="http://www.prooo-box.org/"
        title="ProOO-Box">
        ProOO-Box</a>
        (German only)
    </h3>
    A collection of open source applications for the office area, created by German community members. The core of the
    collection is Apache OpenOffice.
  </li>
</ul>

<h2>Ports and distributions under development</h2>

<ul>

<!---

The Solaris port seems to have gone. However, this part is left as reference.

  <li>
    <h3>
      <a href="http://adfinis-sygroup.ch/aoo-solaris-sparc/">
        OpenSolaris (Sparc) OpenOffice port
      </a>
    </h3>
    A port to <a href="http://www.opensolaris.org/">OpenSolaris</a> (Sparc) by
    <a href="http://adfinis-sygroup.ch">Adfinis SyGroup AG</a>
    (<a href="mailto:nicolas.christener(a)adfinis-sygroup.ch">Nicolas Christener</a>)
  </li>
  <li>
    <h3>
      <a href="http://adfinis-sygroup.ch/aoo-solaris-x86/">
        Solaris (x86) OpenOffice port
      </a>
    </h3>
    A port to <a href="http://www.oracle.com/solaris">Solaris</a> (x86) by
    <a href="http://adfinis-sygroup.ch">Adfinis SyGroup AG</a>
    (<a href="mailto:nicolas.christener(a)adfinis-sygroup.ch">Nicolas Christener</a>)
  </li>

-->

  <li>
    <h3>FreeBSD OpenOffice port</h3>
    A port to <a href="https://www.freebsd.org/">FreeBSD</a> by
    <a href="mailto:maho(a)apache.org">Maho Nakata</a> and
    <a href="mailto:pfg(a)apache.org">Pedro Giffuni</a>
  </li>
</ul>

<h2>About ports and distributions</h2>

<p>
Apache OpenOffice (AOO) is a productivity suite which is already <a href="https://www.openoffice.org/download/">
officially available for the following platforms</a>:
</p>

<ul>
  <li>Windows         - XP, Vista, 7, 8, 10, 11 (32-bit)</li>
  <li>Linux           - RPM / DEB-based (32-bit and 64-bit)</li>
  <li>MacOS X (Intel) - 10.4 (Tiger) up to 12.1 (Monterey)</li>
</ul>

<p>
<b>What is a port?</b>
</p>

<p>
When making AOO available for another operating system or CPU architecture, then this is called "porting or a port".
Usually this is done on the source code level.
<a href="https://en.wikipedia.org/wiki/Porting">More general information here</a>.
</p>

<p>
<b>What is a distribution?</b>
</p>

<p>
When taking an already available AOO installation and package it in a different way to make it ready to run directly,
e.g., from a USB stick resp. CD/DVD or on another Linux OS, then this is called "distribution or distro".
<a href="https://en.wikipedia.org/wiki/Distribution_%28software%29">More general information here</a>.
</p>

<h2>How to create your own port: To Do's</h2>

<ul>
  <li>Getting the Source Code: Start to work with the
    <a href="https://openoffice.apache.org/source.html">Apache OpenOffice code</a>
  </li>
  <li>Building the Source Code: read the
    <a href="https://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO">Building Guide</a>
  </li>
  <li>Introduction to Porting:
    <a href="https://wiki.openoffice.org/wiki/Porting_Introduction">Some tips for Porting</a>
  </li>
  <li>Release of successful ports on regular basis: Once ports have been made, people are needed for preparing and
    providing the builds on a regular basis. Use the
    <a href="https://openoffice.apache.org/mailing-lists.html#development-mailing-list-public">
      Apache OpenOffice dev mailing list</a> to coordinate.
  </li>
  <li>Create a new port. There is a certain demand for doing a port. At the moment there are no efforts visible for such a
    port. Create one! Use the
    <a href="https://openoffice.apache.org/mailing-lists.html#development-mailing-list-public">
      Apache OpenOffice dev mailing list</a> to coordinate.
  </li>
  <li>
    <a href="porting_implement.html">Implementation of Porting</a> (outdated)
  </li>
  <li>
    <a href="porting_doclinks.html">Links to Documentation</a> (outdated)
  </li>
</ul>

<!-- /div -->

</body>
</html>
