<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>

<h2> Community Articles: 
  Opinions, Interviews, Analyses</h2>

<p><a href="../lspintro.html" target="_blank">-Louis Su&aacute;rez-Potts</a></p>
<p>4 August 2001</p>

<br>
<h4>The New OpenOffice.org Infrastructure</h4>
<p>Our look has changed and not only our look: Also the features available to the community. We are now using <a href="http://www.collab.net/products/sourcecast/" target="_blank">SourceCast</a>, <a href="/" target="_blank">CollabNet's</a> upgrade of its old reliable, <a href="http://www.tigris.org" target="_blank">Tigris</a> Classic.</p> 

<p>This article will focus on some of the more obvious changes. In previous articles (The OpenOffice.org Infrastructure Upgrade, Parts <a href="./ec29June.html" target="_blank">I</a> and <a href="./ec13July.html" target="_blank">II</a>), I have already discussed some of SourceCast's features; this article will briefly summarize the most important and suggest how the OpenOffice.org community can begin taking advantage of them.  But before I begin, I should mention that what is perhaps most radically different about the new platform is how customizable it is to the individual. The advantage: more efficient navigation and use of resources.</p><br>

<h4>Registration</h4>  
<p> First, virtually everything we previously used in OpenOffice.org can still be accessed by community members without having to register. You can still participate in OpenOffice.org's active mailing-list discussions. And of course there is nothing blocking you from viewing all the projects as before. In short, you do not have to register if all you want to do is engage in mailing-list discussions and view project activity.</p>
<p>However, if you wish to participate more fully in OpenOffice.org, for example, if you wish to join  particular projects, you must register. All this means is you need to click on the "Join" link in the navbar and provide a username and an email address (a password will be mailed to the email address you specify). Once you've done this, you are a member of OpenOffice.org and are free to join particular projects, file and work on issues, and so on.</p><br>


<h4>Organization</h4>
<p><b>A better navbar.</b> We've removed the top navbar and condensed the left navbar. Everything is still there--in fact, there is more--but it is organized now according to use. Some links that bear mention include:
		<ul>
			<li> <b>About Us.</b> The central page about OpenOffice.org. If you have questions about licensing, participation, contact information, or the history of OpenOffice.org, go here.</li><br>

			<li><b>Documentation.</b> We've updated and improved the layout of our popular "Documentation" page. As before, it includes links to developer resources, white papers, FAQs, and other articles, but it also--important--includes now a link to the  <a href="http://whiteboard.openoffice.org/doc/index.html">Documentation Project</a>, a community-organized and maintained effort producing end-user documentation for the office suite. <br>

		<li><b>Help.</b> Our new "Help" link provides help on everything from how to join a project to CVS to IssueZilla. It  is complete, clear, and of inestimable worth. <br>

			<li> <b>My Start Page.</b> This link appears after you have logged in. Click on it and it takes you to "your" page, where you can view, among other things, the projects of which you are a member, and the issues you have filed and been assigned you.<br>
			

			<li><b>My Issues.</b> As with "My Start Page," this link appears only after you have logged in. The page it refers to replaces the "My Issues" page. </li><br>
    <br>

</ul>

<h4>Features</h4>
<p>Briefly, SourceCast has been designed to enable a community of developers to work efficiently together. Once you register, you can join projects, file issues, and so on; but all that's just a beginning. More ambitiously, you can propose projects, invite other registered users to join an accepted project, and coordinate your project with others'. Mailing list administration is simplified; we also now offer searchable mail archives. 

<p>All these features offer us, the OpenOffice.org community, enormous potential to accelerate development of the software. They also provide us with the tools to focus and extend our community. For now, I urge the community to go through the site and learn what it has new to offer. The Help section, in particular, will answer many questions users will have. 
 
<p>&nbsp;</p>
<p><a href="./index.html">Previous articles</a></p>

</body>
</html>

