<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" />
  <link rel="stylesheet" href="../style/style.css" type="text/css" />
    <link rel="alternate" title="general@incubator.apache.org Archives" type="application/atom+xml" href="http://mail-archives.apache.org/mod_mbox/incubator-general/?format=atom" />
    <title>A Guide To Participation - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row">
<div class="span12">
  <a href="http://www.apache.org/"><img src="http://incubator.apache.org/images/asf_logo_wide_small.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="62%"/></a>
</div>
<div class="span4">
<a href="http://incubator.apache.org/"><img src="../images/egg-logo2.png" alt="Apache Incubator" border="0"/></a>
</div>
</div>
  <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  
  <div class="row">
   <div class="span4">
    <form action="http://www.google.com/search" method="get">
     <input value="incubator.apache.org" name="sitesearch" type="hidden"/>
     <input size="20" name="q" id="query" type="text" value="search..."
      onclick="if(this.value == 'search...') {this.value = ''}"/>
     <input name="Search" value="Go" type="submit"/>
    </form>
          <div class="menuheader">General</div>
    <menu compact="compact">
          <li><a href="../index.html">Welcome</a></li> 
          <li><a href="../incubation/Process_Description.html">Incubation Overview</a></li> 
          <li><a href="../incubation/Incubation_Policy.html">Incubation Policy</a></li> 
          <li><a href="../guides/index.html">Incubation Guides</a></li> 
          <li><a href="../incubation/Roles_and_Responsibilities.html">Roles and Responsibilities</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> 
          <li><a href="../whoweare.html">Who We Are</a></li> 
          <li><a href="../sitemap.html">Site Map</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects/index.html">Project List</a></li> 
          <li><a href="../clutch.html">Clutch Report</a></li> 
          <li><a href="../ip-clearance/index.html">IP Clearance</a></li> 
          <li><a href="../history/index.html">Incubator History</a></li> 
            </menu>
      <div class="menuheader">Entry Guides</div>
    <menu compact="compact">
          <li><a href="../guides/proposal.html">Proposal Guide</a></li> 
            </menu>
      <div class="menuheader">Podling Guides</div>
    <menu compact="compact">
          <li><a href="../guides/committer.html">Podling Committers</a></li> 
          <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> 
          <li><a href="../guides/mentor.html">Podling Mentor</a></li> 
          <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> 
          <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> 
          <li><a href="../guides/sites.html">Podling Websites</a></li> 
          <li><a href="../guides/graduation.html">Graduation</a></li> 
          <li><a href="../guides/retirement.html">Retirement</a></li> 
            </menu>
      <div class="menuheader">Other Guides</div>
    <menu compact="compact">
          <li><a href="../guides/participation.html">Participation</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="../guides/pmc.html">Incubator PMC (IPMC)</a></li> 
          <li><a href="../guides/chair.html">IPMC Chair</a></li> 
          <li><a href="../guides/lists.html">Mailing Lists</a></li> 
          <li><a href="../guides/website.html">Incubator Website</a></li> 
            </menu>
      <div class="menuheader">ASF</div>
    <menu compact="compact">
          <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> 
          <li><a href="http://www.apache.org/foundation/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
            </menu>
    <!-- start Ads Server -->
    <iframe src="http://www.apache.org/ads/buttonbar.html"
     style="border-width:0; float: left" frameborder="0" scrolling="no"
     width="135" height="265"></iframe>
    <!-- end Ads Server -->
   </div>
   
   <div class="span12">
            <h2 id='preamble'><img src="../images/redarrow.gif" />A Guide To Participation</h2>
<div class="section-content">
<h3 id='abstract'>Abstract</h3>
<div class="section-content">
<p>
This document is descriptive, not normative. It aims to help those who are new 
to the Incubator learn its ways and netiquette.
          </p>
</div>
<h3 id='netiquette'>General Netiquette</h3>
<div class="section-content">
<p>
The usual advice applies. If you are not familiar with the way mailing lists
work at Apache, read <a href="http://jakarta.apache.org/site/mail.html">this</a>.
            </p>
<p>
Please ensure that your mail client is correctly configured. In particular, post only plain 
text emails to these lists. Apache spam filters may reject HTML emails.
            </p>
<p>
The incubator is a public meeting place with a diverse and ever-changing community. 
Creating social bonds and establishing a reputation is important. Please be polite, 
courteous and diplomatic. 
            </p>
<p>
When in doubt - ask on 
<a href="lists.html#general+at+incubator.apache.org">general.AT.incubator.apache.org</a>.
            </p>
</div>
</div>
        <h2 id='ways'><img src="../images/redarrow.gif" />Ways To Participate</h2>
<div class="section-content">
<h3 id='general-list'>On The General Mailing List</h3>
<div class="section-content">
<p>
The <code>general.AT.incubator.apache.org</code> is an public list with open subscription.
All are encouraged to subscribe, read and post their opinions in the usual way.
            	</p>
<p>
Anyone can by their words influence the decision-making process and may vote on 
<a href="http://www.apache.org/foundation/voting.html">VOTE threads</a>. 
However (as is usual) only the votes of those on the 
<a href="../incubation/Roles_and_Responsibilities.html#Incubator+Project+Management+Committee+%28PMC%29">
Incubator PMC</a> are binding.
            	</p>
</div>
<h3 id='user'>As A User</h3>
<div class="section-content">
<p>
A <a href="http://www.apache.org/foundation/how-it-works.html#users">user</a> 
is anyone who uses our software. Most Apache projects have active user
communities who are willing to provide help. This is not always the case with incubator podlings.
        		</p>
<p>
To gain the maximum benefit from any immature project (as many podlings are), 
adopt an active attitude. 
Read <a href="http://jakarta.apache.org/site/contributing.html">On Contributing</a>
and 
<a href="http://jakarta.apache.org/site/understandingopensource.html">Understanding Open Source</a>.
Become a <a href="#developer">developer</a> (in the Apache meaning of the term).
        		</p>
</div>
<h3 id='developer'>As A Developer</h3>
<div class="section-content">
<p>
At Apache, a <a href="http://www.apache.org/foundation/how-it-works.html#developers">developer</a>
(aka contributor) is anyone who actively helps to develop our software. This includes more than just coders
and documenters. For example, anyone who joins in discussions on the mailing lists or answers questions 
from users is also a developer.
                </p>
<p>
Apache is a <a href="http://www.apache.org/foundation/how-it-works.html#decision-making">
<em>DO</em>-ocracy</a>. The first step along the road leading to 
<a href="#committer">committership</a> is to become a developer. For more information start with
<a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a>
and the <a href="http://www.apache.org/dev/">developer documentation</a>.
				</p>
</div>
<h3 id='committer'>As A Committer</h3>
<div class="section-content">
<p>
A <a href="../incubation/Roles_and_Responsibilities.html#Committers">committer</a> 
is anyone with write access to the source repository. Election to committership in the Incubator
works a little differently from the process that is usual elsewhere at Apache.
            	</p>
<p>
Once a podling has been bootstrapped, <a href="#developer">developers</a> are nominated
and election to committer happens in the <a href="ppmc.html#Voting+in+a+new+committer">usual way</a>.
                </p>
<p>
When a proposal is just a <a href="../incubation/Roles_and_Responsibilities.html#Candidate">candidate</a>, 
there are two possible approaches (for those interested in committership).
                </p>
<p>
The proposal typically 
<a href="proposal.html#template-initial-committers">contains</a> a list of initial committers.
When a podling is bootstrapped, this list is used by the mentors to set up initial accounts.
So, one way to become a committer for a podling is to be listed on the proposal as an initial
committer.
            	</p>
<p>
The right way to express interest is by a post to the list with a brief introduction. 
Piling onto a proposal (by adding your own name as an initial committer) is impolite.
Read 
<a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200607.mbox/%3cC73C6D24-3216-4EB4-8846-1218B38CC594@gbiv.com%3e">this thread</a>.
            	</p>
<p>
A podling needs to learn how to recruit new committers from its developers. So,
another way is to show up on the list and start helping with the development.
This path will help the podling more than adding your name to the list of initial committers.
            	</p>
</div>
<h3 id='mentors'>As A Mentor</h3>
<div class="section-content">
<p>
Anyone with knowledge of open source or Apache can participate as a informal mentor
for a podling. Development is open and anyone with an interest is encouraged to 
subscribe. 
            	</p>
<p>
Eligibility to act as a formal 
<a href="../incubation/Roles_and_Responsibilities.html#Mentor">Mentor</a> is 
<a href="../incubation/Incubation_Policy#Mentor">limited</a>. The best way for an eligible 
individual to become a Mentor is to post a note introducing him- or herself 
and volunteering their services to <code>general.AT.incubator.apache.org</code> 
during the development of the <a href="proposal.html">proposal</a>.
            	</p>
</div>
<h3 id='pmcer'>On The Incubator PMC</h3>
<div class="section-content">
<p>
Apache Members are encouraged to join the 
<a href="../incubation/Roles_and_Responsibilities.html#Incubator+Project+Management+Committee+%28PMC%29">
Incubator PMC</a>. Post a note to the Incubator PMC private list.
			 </p>
<p>
Those who aren't members may be elected in the usual Apache way (though 
this is rare). Typically these elections are held on private lists.
             </p>
</div>
</div>
       </div>
   </div>
  
   <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span16 footer">
     Copyright &#169; 2009-2016 The Apache Software Foundation<br />
     Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
     Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
     
     
    </div>
  </div>
 </div> 
 </body>
</html>
