<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>31 May 2001</p> <br> 

<p><b>Whiteboard Projects</b>


<p>With the creation of the two new Whiteboard projects in the last couple of 
  weeks, <a href="http://whiteboard.openoffice.org/groupware/index.html" target="_blank">Groupware</a> 
  and <a href="http://whiteboard.openoffice.org/user_faq/index.html" target="_blank">User 
  FAQ</a>, the OpenOffice.org community seems to have entered into new territory. 
  I don't know if we have attained &quot;critical mass&quot;--I don't know quite 
  what that would mean--but it does seem as if the community has passed a milestone. 
  Granted, I have always been an optimist regarding this project; but who wouldn't 
  be: OpenOffice.org, as an Open Source project and community is extraordinarily 
  rich and filled with promise. And that's not just because the code is so vast 
  and powerful or because the developer community (which grows increasingly large) 
  spans the globe and includes remarkably talents or because users, both individuals 
  and groups, all around the world are continually expressing real interest in 
  the software. 
<p>Rather, my optimism and now excitement with the quickened pace of the community stems from the combination of all these and from that far more intangible element which might be called<i> esprit de corps</i>, the spirit which animates the community and motivates people to work, exchange ideas, and collaboratively contribute code and experience. 

<p>(I feel a little shy rhapsodizing about &quot;community,&quot; especially as I live in California and feel, justifiably, that the term, community, has lost through overuse the precision of its contours and gained in weak exchange a smooth but uselessly warm California feel. But would &quot;collaborative environment&quot; really do instead? No: For Open Source, the term &quot;community&quot; is apt; it just should be used precisely, and indicate a working community, predicated on trust and collaboration.) <p>The Groupware and User FAQ projects, which went live late last week, are part of the Whiteboard project. The Groupware project is being led by Guy Capra, whom readers will remember from the Francophone module of the Native Language Project, which he helped create earlier this year. But first, a little background on the Whiteboard project.

<p>Maintained by David Cobb, a non-Sun committer who has consistently supported 
  OpenOffice.org, the <a href="http://whiteboard.openoffice.org/index.html" target="_blank">Whiteboard</a> 
  project is easily one of the most accessible areas for community members interested 
  in creating projects. Think of it as a kind of grab-bag (or, say, virtual whiteboard) 
  of useful projects that are less technical but no less important to the overall 
  OpenOffice.org project. As of this month, the Whiteboard hosts projects ranging 
  from the <a href="http://whiteboard.openoffice.org/bonobo/index.html" target="_blank">Bonobo</a> 
  project to the recently added <a href="http://whiteboard.openoffice.org/bibio.html" target="_blank">Annotated 
  Bibliography on Open Source</a> to Groupware and the User FAQs. 
<p>Of the recent additions, both the Groupware and User FAQ project deserve more attention than I can afford in these supposedly brief articles. I would like, then, to focus on the Groupware project this week, and the User FAQ project next week. (As it happens, Groupware is also complete; the User FAQ project is nearly but not quite there.)

<p> <h4><br> Groupware </h4> 
<p>Readers who have been following OpenOffice.org since the beginning of this 
  year might remember the last time groupware was an issue. At that time, there 
  was a vigorous exchange of messages on the discuss list over groupware, the 
  technologies, and the future direction of OpenOffice.org; these I synopsized 
  into a &quot;<a href="./spotlight2.html" target="_blank">Spotlight</a>.&quot;
<p>This time around, the discussion has been more <a href="//www-discuss/current/msg03477.html">focused</a> 
  and there was more direct action, as it were (see also this week's <a href="/" target="_blank">Spotlight</a>). 
  The Groupware project was formed, in <a href="./ec23Apr.html" target="_blank">Guy 
  Capra's</a> terms, &quot;To establish standard-compliant groupware solutions 
  that will: 1, Work from within the OpenOffice.org office suite, and 2. Permit 
  an easy migration from the current StarOffice 5.2 mail, news, schedule, and 
  schedule server system.&quot; This mission statement (which is what it is) does 
  not address what groupware is, exactly. But we can infer that groupware is the 
  technology enabling something like the ensemble working of various features. 
  These features, such as mail and news, are no longer present in OpenOffice.org 
  but still, it seems, desired by enough peopel to make a difference. 
<p>The Groupware project also speaks to the community's desire and ability to 
  take matters into its own hands. This is good. If <a href="ec16Jan01.html" target="_blank">earlier</a> 
  I speculated that the previous groupware thread indicated an uncertainty in 
  OpenOffice.org's direction, I feel now that it rather suggests the real strength 
  and engagement of the community. (In the first week we have had almost 40 posts. 
  That's encouraging indeed.) For it demonstrates a community desire to move beyond 
  the expressed features of OpenOffice.org code, and keep firmly within the structure 
  of OpenOffice.org. 
<p>Finally, as I write this, the discuss list related to the Groupware project 
  is very much alive. Interested readers should seriously consider <a href="http://whiteboard.openoffice.org/groupware/index.html">joining 
  in</a>. 
<p>Next week, I will examine the User FAQ and touch on the increasing documentation for new users. <br> 

<p>&nbsp; <p><a href="./editors.html">Previous Articles  </a></p>
</body>
</html>

