blob: ef1c9c7e9d775fcee9b93004704fc4bdb9bce936 [file] [log] [blame]
<!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>Guide to successful community building (DRAFT) - 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" />Guide to successful community building (DRAFT)</h2>
<div class="section-content">
<h3 id='status'>Status - DRAFT</h3>
<div class="section-content">
<p>This document is under development.</p>
<p>
Help to improve the system by posting a patch for
this document to the incubator section of JIRA or a
comment to the <a href="lists.html">general</a> list at
incubator.
</p>
</div>
<h3 id='TOC'>Contents</h3>
<div class="section-content">
<ul>
<li><a href='#preamble'>
Guide to successful community building (DRAFT)
</a>
<ul>
<li><a href='#status'>
Status - DRAFT
</a>
</li>
<li><a href='#TOC'>
Contents
</a>
</li>
<li><a href='#abstract'>
Abstract
</a>
</li>
</ul>
</li>
<li><a href='#introduction'>
What is an open and diverse community?
</a>
<ul>
<li><a href='#people'>
People
</a>
</li>
<li><a href='#communication'>
Communication
</a>
</li>
</ul>
</li>
<li><a href='#notes-community'>
Community Building
</a>
<ul>
<li><a href='#notes-profile'>
Raising The Profile
</a>
</li>
<li><a href='#notes-recruitment'>
Building a community by stepping back a little
</a>
</li>
<li><a href='#notes-committers'>
Helping Developers Become Committers
</a>
</li>
</ul>
</li>
</ul>
</div>
<h3 id='abstract'>Abstract</h3>
<div class="section-content">
<p>
The intent of this document is to help podlings the
importance of building an open and diverse community for
their project. It gives guidelines on how to accept new
committers and PPMC members, and how to enable more
community involvement, taking off the burden of answering
every question yourself.
</p>
</div>
</div>
<h2 id='introduction'><img src="../images/redarrow.gif" />What is an open and diverse community?</h2>
<div class="section-content">
<p>
A major criterion for graduation is to have developed an open
and diverse <a href="http://www.apache.org/foundation/glossary.html#Meritocracy">meritocratic</a>
community. Time has demonstrated that these kinds of
communities are more robust and productive than more closed
ones.
</p>
<h3 id='people'>People</h3>
<div class="section-content">
<p>
As a project grows, it needs to renew itself by accepting new
committers. A project needs to learn how it can recruit new
developers and committers into the community. Accepting new
committers usually increases the diversity of the project. So,
this process is very beneficial. <a href="#notes-community">Community building</a> requires energy
which could have been spent on code development but this cost
is an important investment for the future of the project.
</p>
<p>
The openness of the community is not only measured by the
number of contributors. Open and respectful discussions on the
mailing lists are vital. Ways to resolve technical conflict
without destroying personal relationships must be learned.
</p>
</div>
<h3 id='communication'>Communication</h3>
<div class="section-content">
<p>
Mailing lists are the life blood of Apache communities. They
are the primary mode of discourse and constitute a public and
historic record of the project. Other forms of communication
(P2P, F2F, personal emails and so on) are secondary. There are
well founded fears about use of these media for project
communication. Though many projects successfully blend other
forms of communications, care needs to be taken since
out-of-band communications have led to difficulties in the
past. The reason is that communications on other than the
public mail aliases exclude parts of the community. Even
publicly advertised IRC chats can be exclusionary due to time
zone constraints or conflicting time commitments by community
members who might want to participate.
</p>
<p>
Apache project mailing lists are public, well indexed and well
archived. This allows anyone to monitor (both in real time and
by browsing the archives) what's happening. Opinions expressed
are public and poor behavior risks a poster's reputation.
</p>
<p>
Private communications tend to be more candid but also more
likely to be ill-judged. Back channel communication tend to be
divisive, excluding some members of the group. This tends to
have a corrosive effect on the collective spirit of the
community. Mistrust builds when opinions backed by blocks of
developers arise fully formed on list.
</p>
<p>
Communication through other channels also reduces the chance
of <a href="http://en.wikipedia.org/wiki/Serendipity">serendipity</a>.
As with most social networks, most subscribers to a mailing
list never post and most posts come from a tiny minority of
subscribers. Some passive subscribers are just interested in
where the project is going but others understand related
fields and have a limited intersection of interest. This
second group will often post when this topic arises on list.
Using public mailing lists to develop designs allows the
chance encounter of ideas which often results in innovation.
</p>
<p>
If alternative forums are used by a project, it is important
to try to minimize the chances of problems arising. All
matters of substance need to be moved back to the mailing
lists. Public records should be kept and posted back to the
list. Regular reminders should be posted to remind people that
other secondary forms of communication exist.
</p>
<p>
There are a limited number of topics such as security issues
and discussions about people which are best handled in
private. As much business of the project as possible should
take place on public lists but the private list is available
for those matters of a sensitive nature. Good netiquette
requires that permission from the poster should be sought
before making public, posts made to a private list. Try to
avoid cross-posting between public and private forums. Take
care not to post a reply to a private post to a public forum
without permission.
</p>
<p>
Learning to use mailing lists effectively is very important.
If this can be achieved, then you have shown to be a lively,
active and successful community. The future looks bright.
</p>
</div>
</div>
<h2 id='notes-community'><img src="../images/redarrow.gif" />Community Building</h2>
<div class="section-content">
<p>
Before a podling graduates, it must create a diverse and
self-sustaining community. Community building is tough: it
takes time, effort and more than a little magic. There is no
secret recipe, just hard work. In order to overcome this
obstacle, committers may need to devote more time to community
building and less to development.
</p>
<p>
The <a href="mailto:community@apache.org">community mailing
list</a> is open to all Apache committers. This is the right
list for questions about community and on community building.
Subscriptions should be from an Apache email address.
</p>
<h3 id='notes-profile'>Raising The Profile</h3>
<div class="section-content">
<p>
Sometimes, a podling is just not well-enough known. There
are simply not enough users to allow new developers to be
recruited. Overcoming this means finding ways to raise the
profile of the podling. Some ideas:
</p>
<ul>
<li>Improve the website</li>
<li>Improve the information provided within each release and release more often</li>
<li>
Committers who blog should join
<a href="http://www.apache.org/dev/committers.html#planetapache">PlanetApache</a>
</li>
<li>Use grassroots media</li>
<li>Encourage downstream distributions to include a packaged version</li>
<li>Submit talks to conferences</li>
<li><a href="http://www.feathercast.org">Feathercast</a></li>
<li>Write articles</li>
</ul>
</div>
<h3 id='notes-recruitment'>Building a community by stepping back a little</h3>
<div class="section-content">
<p>
If the podling has lots of users but very few new
developers then this means that more work is required to
encourage users to become developers. A common cause of
this is that committers are too quick to create code to
solve user problems. It's good to respond quickly to
requests by users. However, once a project gains momentum,
it may be more productive for the long term health of a
project to encourage users to become more involved at the
expense of user satisfaction.
</p>
<p>
Try to encourage expert users to answer questions. This
may mean intentionally allowing a time gap before
answering user questions. Encourage users to post by
taking the time to deal politely and positively with
misunderstandings and by replying to threads which have
been answered well by a user to confirm that they are
right. Avoid engaging in flame wars on user lists. Ignore
trolls.
</p>
<p>
Try to encourage users to become developers. When they
give a good answer that isn't covered in the
documentation, ask them to submit a patch. When users
suggest a good design or extension, ask for volunteers to
help implement rather than just coding it up.
</p>
</div>
<h3 id='notes-committers'>Helping Developers Become Committers</h3>
<div class="section-content">
<p>
If a podling has no trouble attracting developers but
trouble retaining them long enough for them to become
committers then this highlights an issue with the
recruitment process. To become an Apache committer, a
developer needs to hang around long enough to accumulate a
track record of contributions. This often requires
encouragement and help from existing committers.
</p>
<p>
Promptly reviewing patches is important. The way that
patches are applied is also important. Provide credit in
the commit message and when closing the JIRA. It's also
good to encourage developers by suggesting new related
work they may like to volunteer for.
</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>