<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 participate in further enhancing the code, in 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>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>

