blob: 50f5668f44925a4dbd510ea70ba56af3e77a8e11 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Guide to Successful Community Building</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="generator" content="JBake">
<!-- Le styles -->
<link href="../css/incubator.css" rel="stylesheet">
<link href="../css/bootstrap.css" rel="stylesheet">
<link href="../css/asciidoctor.css" rel="stylesheet">
<link href="../css/base.css" rel="stylesheet">
<link href="../css/prettify.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<!--<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">-->
<link rel="shortcut icon" href="https://www.apache.org/favicon.ico">
</head>
<body onload="prettyPrint()">
<div id="wrap">
<!-- Fixed navbar -->
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/"><i class="icon-home"></i>Apache Incubator</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Policies <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/policy/incubation.html">Incubation Policy</a></li>
<li><a href="/ip-clearance/">Intellectual Property Clearance</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Proposals <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/guides/proposal.html">A Guide To Proposal Creation</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Podling Guides <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/cookbook">Cookbook</a></li>
<li><hr><a href="/guides/roles_and_responsibilities.html">Roles and Responsibilities</a></li>
<li><a href="/guides/committer.html">Committers</a></li>
<li><a href="/guides/ppmc.html">Podling Project Management Committee</a></li>
<li><a href="/guides/community.html">Guide to Successful Community Building</a></li>
<li><hr><a href="/guides/branding.html">Incubator Branding Guide</a></li>
<li><a href="/guides/publicity.html">Podling Publicity/Media Guidelines</a></li>
<li><a href="/guides/press-kit.html">Podling Press Kit</a></li>
<li><hr><a href="/guides/transitioning_asf.html">Initial Code Import</a></li>
<li><a href="/guides/names.html">Podling Name Search Guide</a></li>
<li><a href="/guides/ip_clearance.html">Podling IP Clearance</a></li>
<li><hr><a href="/guides/sites.html">Podling Websites</a></li>
<li><a href="/guides/podling_sourcecontrol.html">Podling Source Control</a></li>
<li><hr><a href="/guides/releasemanagement.html">Release Management</a></li>
<li><a href="/guides/distribution.html">Release Distribution</a></li>
<li><hr><a href="/guides/graduation.html">Guide to Successful Graduation</a></li>
<li><a href="/guides/retirement.html">Guide to Retirement</a></li>
<li><a href="/guides/transferring.html">Transferring Resources out of the Incubator</a></li>
<li><hr><a href="/projects/#current">Current Podlings</a></li>
<li><a href="/clutch/">Clutch Report</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">PMC Guides <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/guides/participation.html">Guide to Participation</a></li>
<li><a href="/guides/lists.html">Incubator Mailing Lists Guide</a></li>
<li><a href="/guides/chair.html">Incubator Chair Guide</a></li>
<li><a href="/guides/mentor.html">Mentors' Guide</a></li>
<li><hr><a href="/guides/website.html">Updating the top-level Incubator website</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="https://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li>
<li><a href="https://www.apache.org/dev/">Developer Documentation</a></li>
<li><a href="https://www.apache.org/foundation/">Foundation</a></li>
<li><a href="https://www.apache.org/legal/">Legal</a></li>
<li><hr><a href="https://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/security/">Security</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="https://www.apache.org/events/current-event">Current Events</a></li>
</ul>
</li>
<li><a href="/faq.html">FAQs</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4 vcenter"><a href="https://www.apache.org/"><img src="https://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="200"></a></div>
<div class="col-md-4 vcenter"><a href="/"><img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="The Apache Software Foundation Incubator" border="0" style="margin-top: 2px" width="256"></a></div>
<div class="col-md-4 vcenter"><a href="https://www.apache.org/foundation/contributing.html"><img src="https://www.apache.org/images/SupportApache-small.png" style="margin-left: 92px" height="64" width="64"></a></div>
</div>
</div>
<div class="top-container container">
<div class="page-header">
<h1>Guide :: Guide to Successful Community Building</h1>
</div>
<div class="article-body">
Estimated Reading Time: <span class="eta"></span>
<p><div id="toc" class="toc">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#abstract">Abstract</a></li>
<li><a href="#what_is_an_open_and_diverse_community">What is an open and diverse community?</a>
<ul class="sectlevel2">
<li><a href="#people">People</a></li>
<li><a href="#communication">Communication</a></li>
<li><a href="#community_building">Community Building</a></li>
</ul>
</li>
</ul>
</div>
<div class="sect1">
<h2 id="abstract">Abstract</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This document is to help each podling understand the importance of building an open and diverse community for its project. It gives guidelines on how to accept new committers and PPMC members and how to enable more community involvement.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="what_is_an_open_and_diverse_community">What is an open and diverse community?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A major criterion for podling graduation to Top Level Project (TLP) status is to have developed an open and diverse <a href="http://www.apache.org/foundation/glossary.html#Meritocracy">meritocratic</a> community. These kinds of communities are more robust and productive than more closed ones are.</p>
</div>
<div class="sect2">
<h3 id="people">People</h3>
<div class="paragraph">
<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 and strength of the project. <a href="#notes-community">Community building</a> requires energy which could have been spent on code development, but this cost is an essential investment for the future of the project.</p>
</div>
<div class="paragraph">
<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. Community members must learn ways to resolve technical conflicts without destroying personal relationships.</p>
</div>
</div>
<div class="sect2">
<h3 id="communication">Communication</h3>
<div class="paragraph">
<p>Email lists are the lifeblood of Apache communities. They are the primary mode of discourse and constitute a public and historical record of the project. Other forms of communication (P2P, F2F, personal emails, instant messaging platform posts, and so on) are secondary. There are well-founded fears about the use of other forms of project communication. Though some projects successfully blend other forms of communications, projects need to take care since out-of-band communications have led to difficulties in the past. The reason is that conversations on other than the public email list exclude parts of the community. Public instant message communication can be exclusionary due to time zone constraints or conflicting time commitments by community members who would want to participate.</p>
</div>
<div class="paragraph">
<p>Apache project email lists are public, archived and searchable. This allows anyone to monitor (both in real-time and by browsing the archives) what&#8217;s happening. Opinions expressed are in the open and poor behavior risks a poster&#8217;s reputation.</p>
</div>
<div class="paragraph">
<p>Private communications tend to be more candid but also more likely to be ill-judged. Backchannel communication tends to be divisive, excluding some members of the group. This tends to have a corrosive effect on the collective spirit of the community. Trust erodes when opinions backed by blocks of developers appear from nowhere, fully formed, on the email list.</p>
</div>
<div class="paragraph">
<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 email 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 a topic in which they are interested arises on a list. Using public email lists to develop designs allows the chance encounter of ideas which often results in innovation.</p>
</div>
<div class="paragraph">
<p>If a project uses alternative forms of communication, it is essential to try to minimize the chances of problems arising. All matters of substance need to move back to the email lists. Projects need to preserve, and post back to the lists, significatn conversation threads in other channels. Project should post regular reminders that other secondary forms of communication exist.</p>
</div>
<div class="paragraph">
<p>There is a limited number of topics, such as security issues and discussions about people, which it is best to handl in private. As much business of the project as possible should take place on public lists, but the private list is available for matters of a sensitive nature. Good netiquette requires that you seek permission from the poster 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>
</div>
<div class="paragraph">
<p>Learning to use email lists effectively is very important. If your project community can achieve this, it has a good chance to be lively, active and thriving. The future looks bright.</p>
</div>
</div>
<div class="sect2">
<h3 id="community_building">Community Building</h3>
<div class="paragraph">
<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. To address this challenge, committers may need to devote more time to community-building and less to development.</p>
</div>
<div class="paragraph">
<p>The <a href="mailto:community@apache.org">community email list</a> is open to all Apache committers. This is the right list for questions about the Apache community and on community-building. Subscribe using your Apache email address.</p>
</div>
<div class="sect3">
<h4 id="raising_the_profile">Raising The Profile</h4>
<div class="paragraph">
<p>Sometimes a podling is just not well-enough known. There are not enough users to recruit new developers from. Overcoming this means finding ways to raise the profile of the podling. Some ideas:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Improve the website</p>
</li>
<li>
<p>Improve the information you provide within each release</p>
</li>
<li>
<p>Release more often</p>
</li>
<li>
<p>Simplify the build process</p>
</li>
<li>
<p>Improve project documentation</p>
</li>
<li>
<p>Provide getting-started examples and tutorials</p>
</li>
<li>
<p>Use grassroots media</p>
</li>
<li>
<p>Encourage downstream distributions to include a packaged version</p>
</li>
<li>
<p>Submit talks to conferences</p>
</li>
<li>
<p><a href="http://www.feathercast.org">Feathercast</a></p>
</li>
<li>
<p>Write blogs and articles</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="building_a_community_by_stepping_back_a_little">Building a community by stepping back a little</h4>
<div class="paragraph">
<p>If the podling&#8217;s software has lots of users but very few new developers, the community needs to do more work 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&#8217;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 propose solutions to non-critical problems and, thus, become more involved.</p>
</div>
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<p>Try to encourage users to become developers. When they give a good answer that the documentation doesn&#8217;t cover, ask them to submit a patch. When users suggest a good design or extension, ask for volunteers to help implement it rather than just coding it up.</p>
</div>
</div>
<div class="sect3">
<h4 id="helping_developers_become_committers">Helping Developers Become Committers</h4>
<div class="paragraph">
<p>If a podling has no trouble attracting developers but difficulty retaining them long enough for them to become committers, 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. It may also be that the committer bar is set too high.</p>
</div>
<div class="paragraph">
<p>Promptly reviewing patches or pull requests is essential. The way the project applies patches is also important. Provide credit in the commit message and when closing the issue. It&#8217;s also good to encourage developers by suggesting new related work they may like to volunteer to work on.</p>
</div>
</div>
</div>
</div>
</div></p>
</div>
</div>
<div id="push"></div>
</div>
<div id="footer">
<div class="container">
<p class="muted credit">&copy; 2021 The Apache Software Foundation | Licensed under the Apache License, Version 2.0.<br/>
Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks or registered trademarks of The Apache Software Foundation.</p>
</div>
</div>
<script src="../js/jquery-1.11.1.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/prettify.js"></script>
<script src="../js/readingTime.js"></script>
<script src="../js/incubator.js"></script>
</body>
</html>