<a id="one-mill-download"></a>
  <h2>Apache OpenOffice 3.4 Blows Past 1M Downloads</h2>
  <p>After last week's release of Apache OpenOffice 3.4, the project is pleased to note the strong positive reception by
  users and the press. <a href="/news/aoo34-1M.html">Apache OpenOffice 3.4 has been downloaded over one million
  times!</a><p>
  
	
  <a id="apache-hosted"></a>
  <h2>www.openoffice.org is now hosted by the Apache Software Foundation</h2>
  <p>Our website has migrated to infrastructure hosted by the Apache Software Foundation. Join the 
  <a href="http://openoffice.apache.org/mailing-lists.html#users-mailing-list">Users Mailing List</a> or
  <a href="http://user.services.openoffice.org/">User Forums</a> if you have questions or comments
  </p>

  <a id="join-incubator"></a>
  <h2>OpenOffice.org Joins Apache Incubator</h2>
  <p>On June 1, 2011, Oracle announced that it was donating OpenOffice.org's code to 
  <a href="http://www.marketwire.com/press-release/statements-on-openofficeorg-contribution-to-apache-nasdaq-orcl-1521400.htm">
  The Apache Software Foundation's Incubator.</a> 
  The Apache OpenOffice "podling"
  <a href="http://openoffice.apache.org/">http://openoffice.apache.org/</a>
  site was established on June 13, 2011. Please join us in this new phase of OpenOffice.org by subscribing to our
  <a href="http://openoffice.apache.org/mailing-lists.html">mailing lists</a>.
  </p>
  	
  <a id="asf_statement"></a>
  <h2>The Apache Software Foundation Statement on Apache OpenOffice</h2>
  <p><em>14 October 2011:</em> On 1 June 2011, Oracle Corporation submitted the OpenOffice.org code base to The Apache
  Software Foundation. That submission was accepted, and the project is now being developed as a podling in the Apache
  Incubator under the ASF's meritocratic process informally dubbed "The Apache Way". OpenOffice.org is now officially part
  of the Apache family. The project is known as Apache OpenOffice. Over its 12-year history, the ASF has
  welcomed contributions from individuals and organizations alike, but, as a policy, does not solicit code donations. The
  OpenOffice.org code base was not pursued by the ASF prior to its acceptance into the Apache Incubator.
  <a href="http://blogs.apache.org/foundation/entry/the_apache_software_foundation_statement">
  Read the complete ASF annoncement</a>
  </p>

  <a id="asf_ooo_blog"></a>
  <h2>OpenOffice.org Blog at Apache</h2>
  <p><em>11 July 2011:</em> Keep up with latest developments in the OpenOffice.org to Apache project transition at the
  <a href="https://blogs.apache.org/OOo/">OpenOffice.org (OOo) blog.</a>
  </p>

  <a id="asfsetup"></a>
  <h2>OpenOffice.org is Established as an ASF Project</h2>
  <p><em>13 June 2011:</em> OpenOffice.org has now been accepted as an Apache incubator project. Details
  and further participation in the OpenOffice.org project can be found at the new 
  <a href="http://incubator.apache.org/projects/openofficeorg.html">incubator site.</a>
  </p>

  <a id="apachemove"></a>
  <h2>Oracle Donates OpenOffice.org to Apache</h2>
  <p><em>1 June 2011:</em> In an
  <a href="http://www.marketwire.com/press-release/statements-on-openofficeorg-contribution-to-apache-nasdaq-orcl-1521400.htm">
  announcement</a> made today, Oracle has donated the OpenOffice.org project to the Apache Software Foundation. The proposal
  calls for OpenOffice.org to be established as an incubator project.
  </p>
  
  <a id="commercialsupoort"></a>
  <h2>Oracle Stops Support for Commercial OpenOffice.org</h2>
  <p><em>15 April 2011:</em> Oracle Corporation today
  <a href="http://www.marketwire.com/press-release/oracle-announces-its-intention-to-move-openofficeorg-to-a-community-based-project-nasdaq-orcl-1503027.htm">
  has announced</a> its intention to move OpenOffice.org to a purely community-based open source project and no longer offer
  a commercial version of Open Office (formerly named Oracle Open Office, when the development was at Sun the name was
  StarOffice).
  </p>

  <a id="OOo340beta"></a>
  <h2>OpenOffice.org 3.4 Beta Release</h2>
  <p><em>12 April 2011:</em> We are happy to announce that
  <a href="/download/all_beta.html">OpenOffice.org 3.4 Beta is now ready for download</a>. This Beta Release is available in
  English and 69 additional languages which can be installed as language packs (localizations are still ongoing). Feel free
  to download, test and give feedback. The best way to test is under real life conditions. OpenOffice.org is a community
  effort and your input will help to make OpenOffice.org 3.4 even better!
  <br />
  The Beta testing period ends on May 2<sup>nd</sup>. Take advantage of this evaluation period to take a closer look at the
  <a href="http://wiki.services.openoffice.org/wiki/Feature_Freeze_Testing_3.4">new SVG import, the improved ODF 1.2 support
  and other enhancements</a>and help to find open issues. The following are the preferred ways to provide feedback. Happy
  testing!</p>
  <br />
  <ul>
    <li>send a mail to the mailing list <a href="mailto:qa@openoffice.apache.org">qa@openoffice.apache.org</a> with the subject
    line starting with *Beta 3.4*</li>
    <li>submit an issue in <a href="http://qa.openoffice.org/issue_handling/pre_submission.html">BugZilla</a></li>
  </ul>

  <a id="cebit2011"></a>
  <h2>OpenOffice.org at CeBIT 2011</h2>
  <p><em>28 February 2011:</em> The OpenOffice.org team is at this year's <a href="http://www.cebit.com">CeBIT</a> again with
  a stand in the open source park (hall 2, D44, 145), demoing the new version 3.3. Visitors can meet the community and find
  out more about the product and the project. Migration and training are the focus this year, so don't miss the chance to
  talk with our experts.
  </p>

  <a id="OOo340alpha"></a>
  <h2>OpenOffice.org 3.4 Alpha Release</h2>
  <p><em>28 February 2011:</em> On the way to the next release we have published <a href="/download/next/other.html">
  OpenOffice.org 3.4 Alpha</a> (Developer Snapshot DEV300m101).
  See the <a href="http://wiki.services.openoffice.org/wiki/Feature_Freeze_Testing_3.4">overview about some highlights</a> or
  <a href="http://development.openoffice.org/releases/DEV300m101_snapshot.html">Technical Release Notes</a>. Please note
  that this Alpha release will be available until Developer Snapshot DEV300m103 will be published.
  </p>

  <a id="move"></a>
  <h2>Welcome at the OpenOffice.org site based on Project Kenai</h2>
  <p><em>24 February 2011:</em> The move to a the new framework is finished. Registered users will receive a notification via
  direct mail in the next 1-2 days. Please find <a href="http://kenai.com/projects/ooo-migration/pages/Home">
  more information</a>, some hints about the new site and a list for feedback at
  <a href="http://kenai.com/projects/ooo-migration/pages/Home">http://kenai.com/projects/ooo-migration/pages/Home</a>. Feel
  free to raise problems with the new platform that hinder you to join the collaboration and please bear with us during
  initial hiccups.
  </p>
  
  <h2>Move of the OpenOffice.org Site</h2>
  <p><em>16 February 2011:</em> The OpenOffice.org main site moves to a new infrastructure starting Monday February 21. It
  will be in read-only mode for 4-5 days.</p>
  <p>The move is going to include main site services like publishing of web content, mailing lists, bugtracking, ... and the
  existing data content of those. Projects are locked and mails (lists and user forwarding) are queued during the migration
  process. Satellite sites like OpenOffice.org forums, extensions and templates sites, Wiki, mercurial repositories, ... are
  not affected.</p>
  <p>Please find <a href="http://kenai.com/projects/ooo-migration/pages/Home">more information</a>, some hints about the new
  site and a mail list that continues to work during the migration at
  <a href="http://kenai.com/projects/ooo-migration/pages/Home">http://kenai.com/projects/ooo-migration/pages/Home</a>.
  </p>

  <a id="OOo330"></a>
  <h2>OpenOffice.org 3.3 is available for download!</h2>
  <p><em>26 January 2011:</em> The newest Release of OpenOffice.org is out now and <a href="/download">
  available for download</a>. This is a feature release. Check the <a href="/dev_docs/features/3.3/index.html">
  Feature Overview</a> to learn more about the new features. The technical
  <a href="http://development.openoffice.org/releases/3.3.0.html">Release Notes</a> are also available.
  </p>

  <a id="OOo330rc10"></a>
  <h2>Release Candidate 10 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>21 January 2011:</em> The newest Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc9"></a>
  <h2>Release Candidate 9 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>14 January 2011:</em> The newest Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc8"></a>
  <h2>Release Candidate 8 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>17 December 2010:</em> The newest Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc7"></a>
  <h2>Release Candidate 7 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>29 November 2010:</em> The newest Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc6"></a>
  <h2>Release Candidate 6 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>23 November 2010:</em> The newest Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc5"></a>
  <h2>Release Candidate 5 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>17 November 2010:</em> The fifth Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc4"></a>
  <h2>Release Candidate 4 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>10 November 2010:</em> The fourth Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc3"></a>
  <h2>Release Candidate 3 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>01 November 2010:</em> The third Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc2"></a>
  <h2>Release Candidate 2 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>25 October 2010:</em> The second Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="OOo330rc1"></a>
  <h2>Release Candidate 1 for OpenOffice.org 3.3.0 is now available for testing</h2>
  <p><em>19 October 2010:</em> The first Release Candidate for OpenOffice.org 3.3.0 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.3.0 are described in detail in the
  <a href="/dev_docs/features/3.3/index.html">New Features overview</a>.
  </p>

  <a id="tenth_birthday"></a>
  <h2 style="background-color: white; border: none">It's our 10th birthday!<br />
  <a href="http://wiki.services.openoffice.org/wiki/A_Brief_History_Of_OpenOffice.org" title="It's our 10th birthday!">
  <img src="/images/OOo_cake_smaller.png" alt="It's our 10th birthday!" /></a></h2>
  <p><em>12 October 2010:</em> Have some <a href="http://www.facebook.com/photo.php?fbid=165650950114082"
  title="Celebration on Facebook">cake!</a> Read our
  <a href="http://wiki.services.openoffice.org/wiki/A_Brief_History_Of_OpenOffice.org" title="History of OpenOffice.org">
  history!</a> Let's <a href="http://www.youtube.com/watch?v=nVIfW92XzBA" title="Celebration on YouTube">celebrate!</a>
  <b><a href="/OO_thankyou.odt" title="Thank You to everyone who got us here!"> Thank You</a></b> to everyone who got us
  here!
  </p>
