<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />

    <title>Apache OpenOffice&trade; 3.4 Blows Past 1M Downloads</title> 

<style type="text/css">
 blockquote {
   margin-top: 10px;
  margin-bottom: 10px;
  margin-left: 50px;
  padding-left: 15px;
  border-left: 3px solid #ccc;
} 
 </style>
	


</head>
<body>

    <h1>Apache OpenOffice&trade; 3.4 Blows Past 1M Downloads</h1>

<p> <strong>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.  
Apache OpenOffice 3.4 has been downloaded over one million times</a>.</strong>
</p>

<p><em>Available translations: <a href="/it/stampa/comunicati/aoo34-1M.html">Italian</a></em></p>

<p>
<strong>From the Apache OpenOffice Project Management Committee, 16 May 2012&mdash;</strong> The Apache OpenOffice Project today publishes its preliminary download figures for Apache 
OpenOffice&trade; 3.4, the first release of OpenOffice under the governance of 
the Apache Software Foundation and the Apache Incubator.</p>

    <p>
        <ul>
            <li>Apache OpenOffice 3.4 has been downloaded 1,000,663 times via SourceForge.  This does not include additional downloads of language packs,
			SDKs or source code packages.</li>
            <li>Users have downloaded from over 200 countries</li>
            <li>Downloads were 87% for Microsoft Windows, 11% MacOS and 2% 
                Linux</li>
            
    </ul>
</p>
	

<p> <a href="http://www.openoffice.org/news/aoo34.html">Last 
week's release announcement</a> for Apache OpenOffice 3.4 was broadly covered 
in the press and social media:</p> 

    <p>
        <ul>
            <li>Over 60 feature in the media, in at least 12 languages</li>
            <li>The initial announcement from our <a
href="https://twitter.com/#!/apacheoo">Twitter account</a> tweet was 
                re-tweeted  61 times and reached over 43,000 users</li>
            <li>Additional heavy activity on our 
<a href="http://www.facebook.com/ApacheOO">Facebook</a>,<a
href="http://identi.ca/apacheoo">Identi.ca</a> and <a
href="https://plus.google.com/u/0/114598373874764163668/">Google+</a> accounts</li>
    </ul>
</p>


    <h2>Sampling of Press Coverage</h2>
    <p>Nick Peers at <a 
href="http://betanews.com/2012/05/09/apache-releases-big-openoffice-upgrade-get-it-now/">BetaNews</a> leads "Apache releases big OpenOffice upgrade -- get it now!" 
        and then summarizes the new features:</p> 

<blockquote>Version 3.4's major features can be found under the hood 
&mdash; vastly improved startup times, improved OLEObject handling, better chart 
rendering and support for scalable vector graphics are the most notable changes 
in this new release. Also implemented is ODF 1.2 encryption, while the suite is 
now licensed under the Apache License 2 engine.</blockquote>
    
    <p>At <a 
    href="http://www.omgubuntu.co.uk/2012/05/openoffice-3-4-released/">OMG! 
    Ubuntu!</a> Joey Sneddon writes:  "Apache OpenOffice 3.4 doesn't do anything 
    drastic, but does iterate nicely upon that which was there before."</p>
    
    <p>More coverage from Paula Rooney, <a 
    href="http://www.zdnet.com/blog/open-source/apache-openoffice-34-makes-official-debut-libreoffice-makes-its-case/10915">ZDNet</a>.

After listing the "new bells and whistles" in Apache OpenOffice 3.4 ("welcome 
news") Paula then stresses the importance of future project progress:</p> 
 
<blockquote>...[F]or the Apache Software Foundation &mdash; and for long term 
supporters of the open source Office suite &mdash; this next stage of 
development, free from vendor control &mdash; offers its best chance to date to 
attract more users and backers.</blockquote> 

    <p>Iain Thomspon at <a 
        href="http://www.theregister.co.uk/2012/05/08/apache_openoffice_graphics_version/">The Register</a> highlighted the "major changes" made to the OpenOffice 
        graphics capabilities, mentioning specifically the work of programmer 
        Armin Le Grand.</p>

    <p>Over at <a 
    href="http://www.tweaktown.com/news/24053/download_of_the_day_openoffice_3_4_0/index.html">TweakTown</a>, Anthony Garreffa's article extolls AOO 3.4 as their 
"Download of the Day", saying that Apache OpenOffice 3.4 is:
</p>

<blockquote>...the result of over twenty years' 
software engineering. Designed from the start as a single piece of software, it 
has a consistency other products cannot match. A completely open development 
process means that anyone can report bugs, request new features, or enhance the 
software.</blockquote>

<h2>For more information</h2>
<p>
More information on the Apache OpenOffice product can be found at our website, <a
href="http://www.openoffice.org">www.openoffice.org</a>. Information on the Apache OpenOffice project, including 
information on volunteering with the project can be found at our <a
href="http://openoffice.apache.org/">project website</a>.
</p>
<p>
To be added to a mailing list for official OpenOffice-related announcements, send an email to <a
href="mailto:announce-subscribe@openoffice.apache.org">announce-subscribe@openoffice.apache.org</a>. You can also 
follow us on <a href="http://www.facebook.com/ApacheOO">Facebook</a>, <a
href="https://twitter.com/#!/apacheoo">Twitter</a>, <a
href="http://identi.ca/apacheoo">Identi.ca</a> and <a
href="https://plus.google.com/u/0/114598373874764163668/">Google+</a>.
</p>
    
	
<p>
"Apache", "Apache OpenOffice", "OpenOffice", and "OpenOffice.org" are either trademarks or registered trademarks of 
	The Apache Software Foundation in the United States and in other countries. All other brands and trademarks are the 
	property of their respective owners.
</p>
</body>
</html>

