<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
<h2>Happy Third Birthday!</h2>
<p>2003-10-13</p>

<p>
Today is our birthday.  We are three.
</p>
<p>
For this third anniversary we have focused on schools' use of OpenOffice.org and have created a special page in our Marketing Project dedicated to informing schools throughout the world of OpenOffice.org.  The effort, led by Ian Lynch of the Marketing Project, goes beyond getting schools to use the application; schools are also encouraged to further the work of the community.  If you would like to join in the effort, please go to <a href="http://marketing.openoffice.org/education/schools/">http://marketing.openoffice.org/education/schools/ </a>.
</p>
<p>The last year has seen the extraordinary growth of the community and user base; the release of <a href="../dev_docs/source/1.1/">OpenOffice.org 1.1</a>, and the maturation of the project: Our <a href="http://council.openoffice.org">Community Council</a> is established and working. </p>

<p>What has been accomplished this last year? OpenOffice.org 1.1 was released only a couple of weeks ago to universal acclaim. Far ahead of any other office suite, it has proved itself immensely popular already.  The application is a testament to the people who make up OpenOffice.org and work daily at making the code better.  But OpenOffice.org 1.1 is just the beginning.  The source is free for you to work with; it is a point of departure. So, if you want to create something that extends the application's functionality or usability, consider starting an Incubator project (http://incubator.openoffice.org/).  And if you are curious how to proceed with the source, refer to our excellent <a href="/project/development/index.html">Developer Page</a>, which centralizes all useful links for developers.  Furthermore, our <a href="../dev_docs/source/sdk/">Software Development Kit (SDK)</a> has considerably eased the introduction to coding OpenOffice.org.
</p>


<p>
OpenOffice.org 1.0 and now 1.1 is very much an end-user's application, too. It is very easy to use and with our latest release, it is even better--more features, more compatibility, more robust.  There have been well in excess of 20 million downloads, at least 15 million since 1 May 2002, when we released 1.0.  Each download, of course, can be further disseminated, so when we say that at least millions use OpenOffice.org daily, we are being modest.  What is more, they use it in dozens of languages and on half-a-dozen platforms.  At least 40 percent of our users, we estimate, are using OpenOffice.org in languages other than English.  OpenOffice.org is present on every continent, virtually in every nation.  And if it has not been localized (translated and configured) for a given language, it will be soon.  Why? Because it is easy to do and because, unlike proprietary software, there is little market disincentive. Big companies cannot justify localizing  (or porting) product X for small markets so they don't.  But open-source projects, which rely on organized groups of volunteers, are able to do this.  Schools, governments, corporations in every area of the world directly benefit from the remarkable adaptability of open-source software and in particular OpenOffice.org.  Cost is only one factor in this equation.  Equally important is the ability of open-source software to be modified to accommodate the needs of the people using it. </p>

<p>But how is all this work to be achieved?  The Native-Lang projects which make up the <a href="/projects/native-lang.html">Native Language Category</a>, led by Charles Shulz, have increasingly taken on the role of marketing, documentation, localization, QA, and much more. No other area of OpenOffice.org has been growing as fast, and we can number among the new projects Thai, Turkish, Czech, Chinese, Portuguese, Hindi; and many more on the way.  Each project will implicitly further the development of source and its support. But equally important, each project will further open-source methods and structure, thus growing the potential community base. </p>


<p>Coordinating all this extraordinary growth and productivity, is our Community Council, which represents the interests of the community. More than a year and a half in the making, the Community Council is the governing body of OpenOffice.org and is charged with resolving conflicts as well as setting much of the project agenda.  
We are at present debating our first agenda. You can view proceedings by checking on the publicly available <a href="http://council.openoffice.org/servlets/SummarizeList?listName=discuss">archives</a>.  The discussions promise to be interesting.</p>

<p>-Louis Suarez-Potts<br>
Community Manager<br>
Community Council Member<br>
OpenOffice.org<p>
</body>
</html>

