<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="http://extensions.openoffice.org" target="_blank">
      <img border=0 src="/extensions/OOoEx_Banner_60x234_02.png" 
	alt="Get or submit extensions on the OpenOffice Extensions Website">
    </a>
    <br/>
  </p>
  <p>
    Get or submit extensions on the
    <a href="http://extensions.openoffice.org" target="_blank">
      OpenOffice Extensions Website</a>.
    <br/>
    Get or submit templates on the
    <a href="http://templates.openoffice.org" target="_blank">
      OpenOffice Template Website</a>.
    <br/>
  </p>

  <h1>
    <a href="http://wiki.services.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="http://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>

