<!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" />
  <title>Apache OpenOffice - Licenses</title>
</head>

<body>

<h2>Licenses &amp; Copyrights for the www.openoffice.org website</h2>

<p>Portions of www.openoffice.org are Copyright 1999, 2010 by contributing authors and Oracle and/or its affiliates.</p>

<p>Sections or single pages are covered by certain licenses. If a license notice is displayed, you may use the content of
that page according to that license.</p>

<p>In all other cases, the page is licensed under the Apache License, Version 2.0
<a href="http://www.apache.org/licenses/LICENSE-2.0.html">(ALv2)</a>.</p>

<h2>Apache OpenOffice software</h2>

<p>Apache OpenOffice releases are made available under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">
Apache License 2.0</a>.</p>	

<h2>Licenses of Legacy Releases of OpenOffice.org software</h2>

<p>Apache Releases follow specific policies concerning licensing that are closely tied to the branding of the product. It
still may be possible, however, to find older releases through third parties or Internet archives that lie out of the
control of the Apache Project. For this reason it is highly recommended to review carefully the documentation included with
the software.<p>

<p>For past releases under the SUN/Oracle umbrella, OpenOffice.org used a single open-source license for the source code and
a separate documentation license for most documents published on the website without the intention of being included in the
product. The source-code license was the GNU Lesser General Public License. Effective OpenOffice.org 3.0 Beta,
OpenOffice.org used the <a href="http://www.gnu.org/licenses/lgpl.html">LGPL v3</a>. The document license was the Public
Document License (PDL).</p>

<p>Works beside code donated to the project under cover of the Oracle Contributor Agreement (OCA) were held jointly by
Oracle for the project under the project's prevailing license, in this case, the LGPL v.3. Even if you had already submitted
a copyright agreement (e.g., the SCA or its predecessors), you could also sign the PDL per work contributed, in which case
the PDL took precedence. In some cases, the use of the <span class="Header"> Creative Commons Attribution License (
<a href="http://creativecommons.org/licenses/by-nd/2.5/">&quot;Attribution-NoDerivs 2.5&quot;</a>) was also permitted. See
<a href="#below">below</a> for details on the circumstances of using this license.</span></p>

<ul>
  <li>
    Public Document License (PDL)&nbsp;
    <a href="licenses/pdl.pdf">PDF</a> |
    <a href="licenses/PDL.html">HTML</a> |
    <a href="licenses/PDL.rtf">RTF (text)</a>
  </li>
  <li>
    <a href="http://www.gnu.org/licenses/lgpl.html">
    GNU Lesser General Public License v3</a> (LGPL) (Effective with OpenOffice.org 3.0 Beta)
  </li>
</ul>

<p>You can freely modify, extend, and improve the OpenOffice.org source code. The LGPL requires that all changes must be
made available if published. For more information on the LGPL, please also visit the:
<a href="http://www.gnu.org/licenses/gpl-faq.html" target="_blank">Free Software Foundation's FAQ</a>.</p>

<p class="Header"><a id="below"></a>Other Works</p>

<p>The preference was always for contributions of editable work. But in those cases where editable material was difficult to
obtain, there were several options; all presumed that the developer held copyright in the work:</p>

<ul>
  <li>Developers would have signed a Contributor Agreement, which covers all work (and not just code) contributed to
  OpenOffice.org;</li>
  <li>In countries where laws allow it, the developer could make it public domain by declaring as much in a signed document;
  or</li>
  <li><span class="Header">developers could use the Creative Commons Attribution License (
  <a href="http://creativecommons.org/licenses/by-nd/2.5/">&quot;Attribution-NoDerivs 2.5&quot;</a>). SUN/Oracle only
  accepted work under this license that was non-editable and for which there was no editable version that could be
  contributed to the project.</span></li>
</ul>

</body>
</html>
