<html>
<head>
  <title>Extensions : Enrich Apache OpenOffice</title>
  <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
</head>

<body>
  <h1>Extensions and Templates: From production to end-users</h1>
  <p>
    Apache OpenOffice offers a complete framework allowing it to be enriched. 
    OpenOffice allows for both "extensions" and "templates". 
    An extension is a third party tool that brings OpenOffice new functions. 
    This can be done through addons, addins, deployed by UNO packages.
    Templates are document setups designed for specific uses.
    <br/>
    <br/>
    The native-lang projects are welcomed helping translating all of these resources.
    The OpenOffice wiki can be used to provide translation of all the materials 
    found here and now contains the majority of information.
  </p>
  <br/>
  <p>
    <a style="margin-left:6em;margin-bottom:5em;" 
      href="https://extensions.openoffice.org" target="_blank">
      <img border=0 src="/extensions/extensions-logo.png"
	title="Get or submit extensions on the OpenOffice Extensions Website"
	alt="Extensions for OpenOffice">
    </a>
    <br/>
  </p>
  <p>
    Get or submit extensions on the
    <a href="https://extensions.openoffice.org" target="_blank">
      OpenOffice Extensions Website</a>.
    <br/>
    Get or submit templates on the
    <a href="https://templates.openoffice.org" target="_blank">
      OpenOffice Template Website</a>.
    <br/>
  </p>

  <h1>
    <a href="https://wiki.openoffice.org/wiki/Extensions" target="_blank">
      Find out much more on the Extensions Area Wiki
    </a>
  </h1>
  <p>
    Join the user mailing list if you're willing to share your extensions and need help:
    <a href="mailto:users-subscribe@openoffice.apache.org">
      users-subscribe@openoffice.apache.org
    </a>
    <br/>
    <br/>
    Join the api mailing list for any questions related to developing extensions:
    <a href="mailto:api-subscribe@openoffice.apache.org">
      api-subscribe@openoffice.apache.org
    </a>
    <br/>
    <br/>
    (See the
    <a href="https://openoffice.apache.org/mailing-lists.html">
      Apache OpenOffice mailing list page
    </a>
    for mail subject tags and information on other useful mailing lists.)
  </p>
</body>
</html>
