﻿<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>OpenOffice.org 2.0 Beta Announcement</title>
  </head>

  <body>


<h1>OPENOFFICE.ORG ANNOUNCES VERSION 2.0 PUBLIC BETA</h1>

4 MARCH, 2005 - 08H00 UTC

<P>The OpenOffice.org project is pleased to announce that the first public beta release of OpenOffice.org 2.0 is now available for download.

<P>OpenOffice.org 2.0 Beta is immediately available in English for Windows, GNU/Linux and Solaris. Additional platforms and localisations for Brazilian Portuguese, German, Italian, Japanese, Korean, Russian, Spanish, Swedish, Simplified Chinese, Traditional Chinese and Turkish, amongst others, will follow shortly.

<P>The release of OpenOffice.org 2.0 Beta coincides with the Danish LinuxForum 2005 and with the Open Source Days in Turkey.  Both events demonstrate the gaining power of open source and especially the force for change OpenOffice.org 2.0 represents.  We are honoured to be included in these important events.

<P>This beta release is the result of many months work in expanding the functionality, performance and compatibility of the office suite. This intense effort has yielded impressive results including the addition of a new database module, implementation of the OASIS OpenDocument XML file format and a host of other new features and capabilities.

<P>The public beta release is made available in order to allow a broad user base to test and evaluate this new major version of OpenOffice.org, but is not recommended for production deployment at this stage.

<h3>Beta Availability</h3>

The beta version and it's source code can be downloaded from /download/2.0beta/index.html.

<h3>Feature Guide</h3>

A more detailed guide to the features can be found at <a href="//dev_docs/features/2.0/index.html">//dev_docs/features/2.0/index.html</a>.

<h3>Error and Bug Reporting</h3>

Users of the OpenOffice.org 2.0 Beta release are encouraged to join the OpenOffice.org project and report any bugs, issues or errors at <a href="http://qa.openoffice.org/issue_handling/project_issues.html">http://qa.openoffice.org/issue_handling/project_issues.html</a>.

<P>For ongoing updates regarding beta releases of OpenOffice.org 2.0, please subscribe to the OpenOffice.org Announce mailing list at <a href="//mail_list.html#general">//mail_list.html#general</a>.


<h3>About OpenOffice.org</h3>

OpenOffice.org is a fully featured open-source productivity suite available as a free download for major computing platforms in over 45 languages. Data is stored in an XML file format standardized for office documents by the international body OASIS. OpenOffice.org is developed, supported, and promoted by an international community of volunteers with its main sponsor and primary contributor being Sun Microsystems.  OpenOffice.org operates from <a href="//">//</a>. 

<h3>GLOBAL CONTACTS</h3>

Jacqueline McNally (UTC +08h00)<br>
OpenOffice.org Marketing Project Lead<br>
jacqueline@openoffice.org<br>
+61 (8) 9474-3021

<P>John McCreesh (UTC +01h00)<br>
OpenOffice.org Marketing Project Co-Lead<br>
jpmcc@openoffice.org<br>
+44 (0)131 523 9218

<P>&copy; 2005 OpenOffice.org

</body>
</html>
