

<!--#include virtual="/doctype.html" -->
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <link href="/css/ooo.css" rel="stylesheet" type="text/css">
    
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">

    
    <script src="https://www.apachecon.com/event-images/snippet.js"></script>
  </head>
  <body>
    <!--#include virtual="/brand.html" -->
    <div id="topbara">
      <!--#include virtual="/topnav.html" -->
      <div id="breadcrumbsa"><a href="/">home</a>&nbsp;&raquo;&nbsp;<a href="/editorial/">editorial</a></div>
    </div>
    <div id="clear"></div>
      
      
    <div id="content">
      
      
<h2> Community Articles: Opinions, Interviews, Analyses</h2> 

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

<h4>Documentation Project</h4>


<p>As I write this, a new project, the <a href="http://whiteboard.openoffice.org/doc/index.html" target="_blank">Documentation project</a>, is being created. It will encompass the what used to be the User FAQ project (only a few weeks old) and the Samples and Templates almost-project. [Actually, both have now been incorporated into the Documentation Project.] The current maintainer of User FAQ, Scott Carr, has been voted by the User FAQ group to be the maintainer of the Documentation Project.

<p>First, congratulations are in order for Scott Carr, &Eacute;ric Savary, Gianluca 
  Turconi, Admar Schoonen, Henrik Just, and everyone else who has made the Documentation 
  project a reality! In the coming days, I will be posting to the Community page 
  short accounts of each of the contributors. 
<p>What will the new Documentation Project do? As the mission statement expresses, 
  "The purpose of this project is to provide simple, on-line FAQ-based help files 
  to the end-user community." In other words, it offers a central place where 
  OpenOffice.org users will be able to find out about the working of the OpenOffice.org 
  suite and to obtain templates, so that they can more easily use the software. 
  The result? OpenOffice.org becomes a more usable product, and consequently, 
  I hope, more people will start using it. 
<P>I am by no means alone in thinking the Documentation Project is a great idea and that having more people actually using the product is a goal to aim for. Of course, OpenOffice.org is still too rough-hewn to be a fully "finished" product except for the truly interested, meaning that our users will most likely, if not necessarily, also be developers. But the importance of what Scott and the others have accomplished does not rest with the immediacy of the present. It is, rather, laying the groundwork for further development on the code, so that not just present but future users and developers of the code can use the software with greater ease.

<p>The Documentation project lies within the overarching <a href="http://whiteboard.openoffice.org/index.html" target="_blank">Whiteboard 
  project</a>, which is maintained by David Cobb. In the last few weeks, the Whiteboard 
  project has seen unprecedented activity. A couple of weeks ago I <a href="./ec31May.html" target="_blank">focused</a> 
  on the newly established <a href="http://whiteboard.openoffice.org/groupware/index.html" target="_blank">Groupware</a> 
  project (created by Guy Capra). That project now supports one of the most active 
  discussion forums on the site. The User FAQ discussion list (now the Documentation 
  list) is quickly becoming equally active. 
<p>Perhaps the key is that both forums appeal to the less technically inclined. This is especially true of the Documentation project, which does not require a deep understanding of how to code, just a good sense of how the software suite works and a strong wish to help others in the community. Consequently, it's easier for users who are interested in OpenOffice.org and want to contribute--but don't exactly know how--to join projects which have clear goals and do not demand a strong coding background. 

<P>What makes all these new projects even more interesting and important is that OpenOffice.org has not, at least until recently, made it obvious just how easy it is to create projects within the Whiteboard project. Indeed, for the community member interested in creating a new project that is not directly related to the code but which is still very helpful to the community, it is almost a mystery how one should go about doing this. And I have no doubt that there are plenty of such projects waiting to be created.

<P>Okay, then, how does one go about doing this?

<P>To begin with--and this is totally obvious--any successful project has to respond to a need or a desire, explicit or implicit: you can't just create a project that no one is interested in and expect it to survive. This is to say, proposed projects have to be reasonable. But let's assume that the project you and some other people are interested in proposing is very reasonable, and does respond to a desire.  You know it does because you have been raising issues in the discuss list and others have been commenting on it in a discussion thread.

<P>What then? It's very simple. For now, you need only express your desire for 
  a Whiteboard project on the discuss list. David Cobb and the core OpenOffice.org 
  team constantly read that list (and many others) and will immediately respond. 
  Future versions of OpenOffice.org make proposing projects even easier. 
<P>Once you have broached the subject and made it clear to David and others that 
  your group's project has merit, you need to create a homepage and set up the 
  mailing list. As it happens, Goolie and I have composed some handy templates 
  for just this thing, so you need only to craft the mission and project statements, 
  and coordinate with David for placement on the Whiteboard list, to be ready 
  for action. And as for the technical issues of using CVS (concurrent versions 
  system) and connecting to the OpenOffice.org server via SSH2 (Secure Shell 2), 
  there are enough community members who have done it so that the road is pretty 
  smooth by now; and there are also <a href="//documentation.html" target="_blank">documents</a>. 
<P>We--and I think I speak for all of the core team--will then do everything in our capacity to enable your group to make the project a success. 

<P>So let's imagine some projects that community members could propose to the Whiteboard. And let's begin by dismantling the notion that there are limits.

<p><i><b>GUI</b></i>. This could be a quite technical project, though it does 
  not have to be, but it is one that I feel needs to be created, if not now, perhaps 
  in the near future. Why? because as far as I know we currently don't have any 
  project that is dedicated to shaping the GUI of OpenOffice.org. And it could 
  quite easily include contributors who have only the slightest technical chops 
  but possess real aesthetic flair. 
<P> <i><b>Marketing</b></i>. Yes, I know, this is the dreaded <i>M</i> word. But 
  get real. We need to bring in more users, more developers, more people, and 
  the strategies for doing that are called "marketing." Currently, Sun and CollabNet 
  do their best to make sure that OpenOffice.org is in the news, so that developers 
  and users know of us. But we can only reach so many people. If it were a project, 
  maintained by community members, we could conceivably extend the reach of our 
  efforts and implicitly include more of the community. So why not? 
<P>And we could go on. In an Open Source environment, everything can become a project. What counts is the responsibility to the project, and to one's work, and that can be shared.</p>

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

      
    </div>
    <!--#include virtual="/footer.html" -->
  </body>
</html>
