<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<title>Protocols for Project Proposal</title>
</head>
<body>
<h2>Protocols for Project Proposal</h2>
<p>2005-10</p>
<ul>
  <li><a href="#types">Types of Projects</a></li>
  <li><a href="#proposing">Proposing a Project: General Information</a></li>
  <li><a href="#proposingw">Incubator Projects </a> </li>
  <li><a href="#proposingnl">Native Language Confederation (NLC) Projects</a></li>
  <li><a href="#settingup">Setting Up The Project </a></li>
</ul>
<hr/>
<p class="Header">About This Document</p>
<p>This document explains how to go about proposing and setting up a project.</p>
<p><strong>Only registered members of OpenOffice.org may propose projects.</strong>
<p>Further points relating to what a project lead is responsible for are detailed in the "<a href="../dev_docs/guidelines.html">Guidelines for Participation</a>." All prospective leads should read this document. For information on the political structure of OpenOffice.org, please read <a href="http://council.openoffice.org/CouncilProposal.html">Community Council Charter</a>.</p>
<p class="Header">Types of Projects<a name="types"></a></p>
<p>There are three categories of public projects in OpenOffice.org: <a href="/projects/accepted.html">Accepted</a>, <a href="/projects/incubator.html">Incubator</a>, <a href="/projects/native-lang.html">Native Language Confederation</a>, also called &quot;Native-Lang&quot;. &quot;Accepted&quot; here means that the project's code has been agreed upon by the community leaders to comprise the OpenOffice.org software product or that the project merits a significant voice in the running of OpenOffice.org. </p>
<p>The Native Language Confederation (NLC) is dedicated to providing information and support for OpenOffice.org community members in their native language. NLC <i>does not</i> replace the l10n (localization) or i18n (internationalization) efforts, which are jointly located within the <a href="http://l10n.openoffice.org/">l10n project website</a>.</p>
<p> The Incubator category includes projects that are not yet fully mature (and may not wish to be). The Incubator category is governed by less strict rules. In a sense, it is a testing ground for ideas, an incubator, where the community can sponsor projects that may later make it into the "accepted" category. </p>
<p>As a result of this division of project types, it is expected that most but not all registered users will want to propose projects in the Incubator and Native-Lang categories, with the idea being that these spaces provide the room required for testing out projects and ideas. That said, interested registered users should look over all these protocols, and not just those pertaining to the category in which they are interested.</p>
<p class="Header"><a name="proposing"></a>Proposing a Project: General Information</p>
<p>As mentioned above, only registered members may propose new projects. Besides that simple requirement, the member proposing the project must be known to the community as a reliable and trusted contributor to OpenOffice.org. She need not already be a developer or contributor, but she must be acknowledged by the community as possessing the necessary knowledge, skill, and maturity to see the project through. Essentially, we would like to avoid the creation of a graveyard of ill-managed projects and isolated developers.</p>
<hr>
<p class="Header"><a name="proposingw"></a>Incubator Projects </p>
<p>From proposal to resolution, the process of proposing a project in the Incubator should take less than two weeks.
<p><u>Procedural Steps</u>
<ul>
  <li>Draft a short proposal (not more than 1/2 a page);
  <li>Submit it to the Incubator lead, <a href="mailto:louis@openoffice.org">Louis Suarez-Potts</a>
<!-- and <a href="mailto:svesik@openoffice.org">Sander Vesik</a>, co-lead, -->
for review;
  <li>If it passes review, advertise that proposal on the relevant lists and on <a href="mailto:users@openoffice.apache.org">users@openoffice.apache.org</a>; and
  <li> After a few days (use your judgment), ask for a vote on the merits of the project. Give list members a several days to vote (again, use your judgment). The vote is an informal poll of support, a way of interesting the community; it is not meant to be a rigorous count. For this reason, a negative vote merits close attention and you should investigate the reasoning behind the vote.
  <li>If you are successful in garnering support and people approve, go on to create the project.
</ul>
<p>The point of the community review process is to attract interest. If no one expresses interest or if people find problems with your proposal, you are free and encouraged to modify the proposal and try again. </p>
<p>If your proposal is accepted, then you need to contact the Incubator lead (in this case, Louis Su&aacute;rez-Potts); he is the one who actually creates the project;</p>
<p class="Header">Promotion to Accepted Projects Category</p>
<p> Six months after initiation, an Incubator Category project lead may petition the Community Council to have his or her project promoted to &quot;Accepted&quot; status and be included in the &quot;Public Projects&quot; category. To start this process, send an e-mail to the Incubator Leads.</p>
<p> If the project is approved as an Accepted Project, it will be moved to that category. If not, it will remain in Incubator; this process can be repeated. To learn more about the political structure of OpenOffice.org, see the <a href="http://council.openoffice.org/CouncilProposal.html">Community Council Charter</a>.</p>
<hr>
<p class="Header"><a name="proposingnl"></a>Native Language Confederation (NLC) Projects </p>
<p>From proposal to resolution, the process of proposing a NLC project may take a week or so.
<p> Procedural Steps</p>
<ol>
  <li>Subscribe to the NLC mail list, <a HREF="mailto:dev@native-lang.openoffice.org">dev@native-lang.openoffice.org</a>. To subscribe, send a blank e-mail to <a HREF="mailto:dev-subscribe@native-lang.openoffice.org">dev-subscribe@native-lang.openoffice.org</a>. Archives are available from the NLC homepage, http://native-lang.openoffice.org/. </li>
  <li> Draft a short proposal (not more than 1/2 a page) introducing you and your group and explaining the project in English. If you are working with l10n, or plan on doing so, mention this. Post this note to our <a HREF="mailto:dev@native-lang.openoffice.org">dev@native-lang.openoffice.org</a> mail list.</li>
  <li>We have to create the project for you. </li>
</ol>
<div class="indent">
  <p><strong>Resolution</strong></p>
</div>
<ul>
  <li>NLC projects should be accepted at all times and without any particular condition, provided that:</li>
  <li>The project doesn't address a language already represented by a prior NLC project; and</li>
  <li>They agree to abide by the OpenOffice.org guidelines and policies. </li>
</ul>
<p>After about a week, the project should be initiated, provided it meets with the obligations listed above. If nothing is happening, please remind us. </p>
<hr>
<a name="settingup"></a><p class="Header">Setting Up the Project</p>

<p>These are the minimal guidelines that all new project leads should read over. They probably do not answer all your questions. For more information, ask on the relevant lists and do not hesitate to ask the Community Manager, <a href="mailto:louis@openoffice.org"> Louis Suarez-Potts</a>. A FAQ will evolve.</p>
<ul>
  <li>First, safeguard your intellectual property. We urge all creators of Web content to use one of our <a href="//license.html">licenses</a>.
    <ul>
      <li>For code, we ask that you fill out, sign, and submit the <a href="/licenses/sca.pdf">Sun Microsystems Inc. Contributor Agreement (SCA)</a> (SCA) form. It grants rights jointly to Sun Microsystems and you. </li>
      <li>If you are only doing documentation and other non-code content, you can use the <a href="/licenses/PDL.html">Public Documentation License (PDL)</a>, but it has to be attached to each document or referenced by linking (which is easier). You may also use the SCA, as for code. This assigns copyright jointly to Sun and you and material covered under it includes all works done by you contributed to the OpenOffice.org project except those works specifically covered by other licenses, such as the PDL. </li>
      <li>For material that is non-editable (PDFs, for instance), you can donate the work to the project (e.g., via the SCA) or make it public domain<span class="Headre">. You may also use the <a href="http://creativecommons.org/licenses/by-nd/2.5/">Creative Commons Attribution License</a> (&quot;Attribution NoDerivs 2.5&quot;). Work submitted under this license is not editable. We want, however, editable work first and foremost.</span></li>
      <li>For more information, see our <a href="../FAQs/faq-licensing.html">FAQ on licensing</a>. </li>
    </ul>
  </li>
  <li>We use SSH2, so you will need to create and send in an SSH2 key. Read over <a href="//scdocs/ddSSHGuide">Tunneling with SSH2</a>. </li>
  <li>We also use CVS, and there are several guides that explain how to use CVS both with a client and in command line mode. See, for starters, our <a href="//scdocs/ddCVS">Help on CVS</a>. Each project also has specific help on the left navbar (&quot;Version control&quot;) on how to use both CVS and anoncvs (for guest access). Note: your CVS password is the same as your OpenOffice.org user password. </li>
  <li>Create the Web pages, etc. you will use. The OpenOffice.org website is flexible and accepts all sorts of correctly formed HTML and CSS. However, it does not work directly with PHP, Wikis, Blogs, RSS. Our <a href="/styles/index.html">Style Guide</a> details the general look desired for Web pages, as well as explaining how the site infrastructure works. The Help also <a href="//scdocs/ProjectOwnerCustomStyle">explains</a> how a Project Lead can customize the Web page. (Note: You must be logged in as a Project Lead to access this page.) </li>
  <li>Mail lists. Each new project is created with five (5) mail lists. These include discussion lists. We ask that you do not create new lists unless strictly necessary. Discussions, we have found, are more productive when conducted in fewer and more general lists.</li>
  <li>Granting members new roles. The process is not obvious. So, here is an <a href="http://native-lang.openoffice.org/servlets/ReadMsg?msgId=629396&listName=dev">explanation</a>. </li>
  <li>Sponsors. If you wish to thank the sponsor of your project, go ahead; but ads for products are not generally permitted on the website.</li>
  <li>Issue Tracker (IssueZilla): It may be the case that the component associated with your project needs editing and you cannot do it. In that case, please contact Stefan Taxhet or Louis Suarez-Potts. </li>
</ul>
<p><font color="#FFFFFF">$Date: 2009/09/11 16:47:12 $ $Revision: 1.22 $</font></p>
</body>
</html>
