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

<body>

<h2>About Apache OpenOffice</h2>

	<p>Apache OpenOffice is both a <a href="https://www.openoffice.org/product/product.html">product</a> and an <a href="https://openoffice.apache.org/">
open-source project</a>. Both have been in existence since <a href="http://www.zdnet.com/article/sun-open-source-for-the-masses/">October 13th, 2000</a>. (see also <a href="http://www.openoffice.org/editorial/ec13Oct.html">Birthday Story</a>).</p>
<p>OpenOffice.org 1.0 (the original name, pre-Apache) was released on April 30th, 2002.</p>
<p>OpenOffice.org's mission statement was drafted by the community:</p>

<blockquote style="font-weight: bolder; font-style: oblique; font-size: 110%;">To create, as a community, the leading international office suite that will
run on all major platforms and provide access to all functionality and data through open-component based APIs and an XML-based file format.</blockquote>

<p>Since its inception as an open source project. our corporate contributors have 
included Oracle, RedFlag CH2000, and
IBM. Additionally over 500,000 people--unaffiliated individuals,
business and government employees, and students from nearly every curve of the
globe--have joined the project with the aim of creating the best possible office
suite that all can use. Their work as a community is both invaluable and practical:
people use what the community does. This is the essence of an open source
community. </p>

<p>The remainder of this page summarizes the project and suggests how you can
contribute to it.</p>

<ul>
  <li><a href="#history">Historical background</a></li>
  <li><a href="#licenses">Licenses</a></li>
  <li><a href="#participation">General Participation</a></li>
  <li><a href="#subscribing">Mailing Lists</a></li>
  <li><a href="#logo">Logos and Trademark</a></li>
  <li><a href="#testimonials">Testimonials</a></li>
  <li><a href="#awards">Awards</a></li>
  <li><a href="#contact">Contact</a></li>
  <li><a href="#links">Useful Links</a></li>
</ul>
<br />

<hr style="display: block;"/>

<h3><a name="history"></a>Historical background</h3>

<div class="indent">

<p>StarDivision, the original author of the StarOffice
    suite of software, was founded in Germany
in the mid-1980s. It was acquired by Sun Microsystems during the summer of 1999
    and StarOffice 5.2 was released in June of 2000. Subsequent versions of
StarOffice software, beginning with 6.0, were built using the OpenOffice.org source, APIs, file formats,
and reference implementation. Sun continued to sponsor development on OpenOffice.org
for the next 10 years, a period during which not only did the project grow tremendously
and became truly global, but the user base also saw an extraordinary increase,
and as of the end of 2010 was estimated to be in excess of 100 Million. With its acquisition of Sun in 2010, Oracle was the principal
contributor of code to OpenOffice.org. On June 1, 2011, OpenOffice.org, the project and product, including source code, trademarks, domain names and website,
were donated to the Apache Software Foundation.</p>

<p>The source is written in C++ and delivers language-neutral and scriptable
  functionality, including Java&trade; APIs. This source technology introduces the
next-stage architecture, allowing use of the suite elements as separate applications
  or as embedded components in other applications. Numerous other features are
  also present including XML-based file formats based on the vendor-neutral <a href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office">
OpenDocument Format (ODF)</a> standard from <a href="https://www.oasis-open.org/who/">OASIS </a>and
other resources.</p>


</div>

<hr style="display: block;"/>

<h3><a name="licenses"></a>Licenses</h3>

<div class="indent">


Apache Openoffice is released under the <a href="https://openoffice.apache.org/license.html">Apache License Version 2.0</a>. 
	Previous versions, under the OpenOffice.org name, were released under the the LGPL 3.0 license.
</div>

<hr style="display: block;"/>

	<h3><a name="website"></a>About the Websites</h3>

	<div class="indent">
	
<p>This web site, www.openoffice.org, is Apache OpenOffice's
  primary user portal. The primary developer portal for Apache OpenOffice is
  <a href="https://openoffice.apache.org/">Apache OpenOffice</a>

<br />

</div>

<hr style="display: block;"/>

<h3><a name="participation"></a>General Participation</h3>

<div class="indent">

<p>There are a variety of ways you can actively <a href="https://contributing.openoffice.org/index.html">participate</a> in the OpenOffice Community.
These range from something as easy as <a href="https://www.openoffice.org/donations.html">donating</a> to the Apache Software Foundation, or participating 
in mailing lists, to actually contributing code for the product. Please visit the <a href="https://www.apache.org/foundation/getinvolved.html">Apache Software Foundation Get Involved</a>
 page for an overview on what it means
to be an Apache contributor/committer. </p>

<p>To contribute to (volunteer with) the Openoffice project (user or developer web sites or
product), please <a href="mailto:dev-subscribe@openoffice.apache.org">subscribe to the Apache Openoffice developer mailing list </a>to get started.
Please visit <a href="https://openoffice.apache.org/get-involved.html">Apache OpenOffice Get Involved</a> for specific information about getting involved in the Apache
OpenOffice project.
</p>

<hr style="display: block;"/>

<h3><a name="subscribing"></a>Mailing Lists</h3>


<p>Much of the excitement of an Open Source site takes place in the <a href="https://openoffice.apache.org/mailing-lists.html">mailing
    lists.</a> These are <strong>public.</strong> 

<p><strong>All our major lists are public. What you post to these is on the public
    Internet.</strong> We suggest you do not post private information and keep
    in mind the public and persistent nature of all that you write to the lists.</p>

<p>For questions having to do with the Apache OpenOffice <i>product</i>, please use our "users" list:
<a href="mailto:users-subscribe@openoffice.apache.org">users-subscribe@openoffice.apache.org</a>.</p>

<p>Besides that list, we have two general lists: our "announce" list, which is
  for major announcements and has little traffic, and the "dev" list, which
  is for general discussions related to the project and is fairly heavily trafficked.</p>

<p>To subscribe to any of these lists, click on the appropriate link below and send the email message. Leave the subject line and body empty.</p>

<ul>
  <li><a href="mailto:announce-subscribe@openoffice.apache.org">announce-subscribe@openoffice.apache.org</a></li>
  <li><a href="mailto:users-subscribe@openoffice.apache.org">users-subscribe@openoffice.apache.org</a></li>
  <li><a href="mailto:dev-subscribe@openoffice.apache.org">dev-subscribe@openoffice.apache.org</a></li>
</ul>


<br />

</div>

<hr style="display: block;"/>	
	
<h3><a name="logo"></a>Logos, Trademark</h3>

<div class="intent">

<p>Together with our product, the OpenOffice brand is spread over the world
and we need your cooperation so that it is applied consistently.&nbsp;The
OpenOffice logo and the seagulls are well recognized.&nbsp;This section is
meant to provide information on using the OpenOffice logos and banners for
those interested in linking to us or distributing OpenOffice as CDs, or via
a download mirror.</p>

<p>Please review the <a href="https://openoffice.apache.org/trademarks.html">Apache OpenOffice Trademarks page</a> for further information and to 
	request to use the logo in any form or fashion.</p>

</div>

<hr style="display: block;"/>


<h3><a name="testimonials"></a>Testimonials</h3>

<div class="indent">

<p>We are constantly collecting testimonials from people and businesses actually using the product. You may read them on our
<a href="https://www.openoffice.org/about_us/testimonials.html">Testimonials page</a>. Send yours to:
<a href="mailto:marketing@openoffice.apache.org">marketing@openoffice.apache.org</a>.</p>
<br />

</div>

<hr style="display: block;"/>

<h3><a name="awards"></a>Awards</h3>

<div class="indent">

<p>OpenOffice wins awards. Our <a href="https://www.openoffice.org/awards/index.html">Awards Page</a> lists some of the more recent ones.</p>
<br />

</div>

<hr style="display: block;"/>

<h3><a name="contact"></a>Contact</h3>

<div class="indent">

<p>We very much welcome your participation and your comments on all facets of Apache OpenOffice.</p>

<p> Please contact us using <a href="mailto: dev@openoffice.apache.org"> the developer mailing list.</a>
</p>
 

<p>If, on the other hand, you have questions regarding how to <i>use</i> OpenOffice, the software, please address your questions to our "users" list.
Subscribe using <a href="mailto:users-subscribe@openoffice.apache.org">users-subscribe@openoffice.apache.org</a>.</p>
<br />

</div>

<hr style="display: block;"/>

<h3><a name="links"></a>Useful links</h3>

<ul>
  <li><a href="https://www.openoffice.org/editorial/index.html">Articles and Interviews</a>&nbsp;Index of articles written about OpenOffice and about Open
      Source; includes useful articles on how to use the site infrastructure</li>
  <li><a href="https://www.openoffice.org/editorial/blogs.html">Blogs</a>&nbsp;By OpenOffice contributors</li>
  <li><a href="https://development.openoffice.org/index.html">Developer Page</a>&nbsp;The page for important developer links, including links to to-dos</li>
  <li><a href="https://wiki.openoffice.org/wiki/Main_Page">Developer Wiki</a>&nbsp;Best place to start learning how to build, develop, learn about
      Apache OpenOffice, project and product</li>
  <li><a href="https://www.openoffice.org/faq.html">FAQs</a>&nbsp;Answers to fundamental questions about Apache OpenOffice</li>
  <li><a href="https://www.openoffice.org/awards/index.html">Awards</a>&nbsp;&nbsp;The awards page</li>
  <li><a href="https://marketing.openoffice.org/press_kit.html">Media Resources</a>&nbsp;&nbsp;The page for media inquiries, including press FAQ</li>
  <li><a href="https://openoffice.apache.org/license.html">Licenses</a>&nbsp;Information about the Apache Software Foundation License</li>
</ul>

<br />

<hr style="display: block;"/>


</body>
</html>
