<div class="campaign">
    <h2>Apache OpenOffice given two Bossie Awards!</h2>

    <p>InfoWorld has awarded Apache OpenOffice two Bossies (Best of Open Source), one for the OpenOffice application, and one for our <a href="http://templates.services.openoffice.org/">templates website</a>.  
		Read <a href="https://plus.google.com/u/0/b/114598373874764163668/114598373874764163668/posts/guW3vcCvFFy">more on our Google+ page</a>.</p>
  </div>  
  
<div class="campaign">
<h2>Over 30 million downloads of AOO 3.4</h2>
	  <p><em>22 December 2012:</em> Apache OpenOffice 3.4 was released in May. Downloads now exceed 30 million. 
	  We invite you to take a look at  <a href="http://stats.openoffice.org/">our interactive charts</a> 
	  of daily and cumulative downloads.</p>    
  </div>  	

<div class="campaign">
<a id="apache-graduated"></a>
  <h2>Apache announces graduation status for OpenOffice</h2>
  <p>Apache Software Foundation board has approved a resolution promoting Apache OpenOffice Podling to an Apache Top level project <a href="https://blogs.apache.org/OOo/entry/openoffice_graduates_from_the_apache">Blog post publication</a></p>
</div>

<div class="campaign">
  <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>
</div>  
<div class="campaign">	
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">  	
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
 <div class="campaign"> 
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>

<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <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>
  </div>
<div class="campaign">
  <a id="OOo33beta"></a>
  <h2>Beta Release of OpenOffice.org 3.3</h2>
  <p><em>10 August 2010:</em> Today we are announcing our new <a href="/download/all_beta.html">Beta Release</a>. Check out
  the new <a href="http://wiki.services.openoffice.org/wiki/Feature_Freeze_Testing_3.3">features and enhancements</a> for
  the upcoming OpenOffice.org 3.3 release.
  </p>
  </div>
<div class="campaign">
  <a id="softonic0610"></a>
  <h2>OpenOffice.org 3.2.1 receives Editor's Choice Award at Softonic with exceptional rating</h2>
  <a href="http://openoffice.en.softonic.com?ptn=bdg"
  title="OpenOffice.org 3.2.1 receives Editor's Choice Award at Softonic with exceptional rating">
  <img src="http://e3.sftcdn.net/shared/images/badges/badge_editor.gif"
  alt="OpenOffice.org 3.2.1 receives Editor's Choice Award at Softonic with exceptional rating" /></a>
  <a href="http://openoffice.en.softonic.com?ptn=bdg"
  title="OpenOffice.org 3.2.1 receives Editor's Choice Award at Softonic with exceptional rating">
  <img src="http://openoffice.en.softonic.com/award.png"
  alt="OpenOffice.org 3.2.1 receives Editor's Choice Award at Softonic with exceptional rating" /></a> 
  <p><em>10 June 2010:</em> OpenOffice.org 3.2.1 receives the Editor's Choice Award at Softonic with an exceptional rating
  of 4.5 stars!<br />
  </p>
  </div>
<div class="campaign">
  <a id="OOo321"></a>
  <h2>OpenOffice.org 3.2.1 is now available for download</h2>
  <p><em>04 June 2010:</em> OpenOffice.org 3.2.1 is now <a href="/download"> available for download</a>. This is a bugfix
  release but shows also a refreshed brand from OpenOffice.org's new sponsor Oracle. The
  <a href="http://development.openoffice.org/releases/3.2.1.html">Release Notes</a> show the changes. The details about
  <a href="/trademark/brandrefresh.html">Brand Refresh</a> are here.
  </p>
  </div>
<div class="campaign">
  <a id="OOo321rc2"></a>
  <h2>Release Candidate 2 for OpenOffice.org 3.2.1 is now available for testing</h2>
  <p><em>28 May 2010:</em> The second Release Candidate for OpenOffice.org 3.2.1 is
  <a href="/download/all_rc.html">available for testing</a> since today. New things in 3.2 are described in detail on
  <a href="/dev_docs/features/3.2/"> this website</a>.
  </p>
  </div>
<div class="campaign">
  <a id="internship"></a>
  <h2>OpenOffice.org Summer Internship Programme</h2>
  <p><em>18 May 2010:</em> The <a href="http://wiki.services.openoffice.org/wiki/OpenOffice.org_Internship">
  OpenOffice.org Summer Internship Programme</a> has been launched.</p>
  </div>
<div class="campaign">
  <a id="OOo321rc1"></a>
  <h2>Release Candidate 1 for OpenOffice.org 3.2.1 is now available for testing</h2>
  <p><em>28 May 2010:</em> The first Release Candidate for OpenOffice.org 3.2.1 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.2 are described in detail on <a href="/dev_docs/features/3.2/">
  this website</a>.
  </p>
  </div>
<div class="campaign">
  <a id="bos2009"></a>
  <h2>PortalProgramas.com awards us Best Open Source 2009</h2>
  <a href="http://gratis.portalprogramas.com/OpenOffice.html" title="PortalProgramas.com awards us Best Open Source 2009">
  <img src="bestOpenSource.png" alt="PortalProgramas.com awards us Best Open Source 2009" /></a>
  <p><em>15 February 2010:</em> OpenOffice.org has been awarded the
  <a href="http://gratis.portalprogramas.com/OpenOffice.html">Best Open Source 2009 Award</a> by
  <a href="http://www.portalprogramas.com/premios-mejor-software-libre/">PortalProgramas.com</a>.
  </p>
  </div>
<div class="campaign">
  <a id="OOo32"></a>
  <h2>OpenOffice.org 3.2 is now available for download</h2>
  <p><em>11 February 2010:</em> OpenOffice.org 3.2 is now <a href="/download"> available for download</a>. New features are
  described in detail on <a href="/dev_docs/features/3.2/"> this website</a>.
  </p>
  </div>
<div class="campaign">
  <a id="OOo32rc5"></a>
  <h2>Release Candidate 5 for OpenOffice.org 3.2 is now available for testing</h2>
  <p><em>04 February 2010:</em> The fifth Release Candidate for OpenOffice.org 3.2 is <a href="/download/all_rc.html">
  available for testing</a> since today. New things in 3.2 are described in detail on
  <a href="/dev_docs/features/3.2/rc2.html">this website</a>.
  </p>
  </div>
<div class="campaign">
  <a id="About.comAwards"></a>
  <h2>About.com Reader's Choice Awards 2010 - Nomination</h2>
  <a href="http://macs.about.com/od/readertoreader/ss/readers-choice-2010-vote.htm"
  title="About.com Reader's Choice Awards 2010 - Nomination">
  <img src="rca_nominee_badge90x112.jpg" alt="About.com Reader's Choice Awards 2010 - Nomination" width="90"
  height="112" /></a>
  <p><em>01 February 2010:</em> OpenOffice.org has been nominated in the
  <a href="http://macs.about.com/od/readertoreader/ss/readers-choice-2010-vote.htm">
  About.com Reader's Choice Awards 2010</a>. Don't miss to vote for us!
  </p>
  </div>

