开源社区,简而言之
构建和维护一个开源社区本质上取决于三件事:
- 让人们有兴趣贡献
- 消除参与项目和贡献的障碍
- 留住贡献者,使他们持续贡献
如果能做到这三点,你就拥有了一个社区。否则,就没有。
反向操作:从留住贡献者开始
如果你刚启动一个项目或需要改进现有项目的社区,应该按反向顺序处理这些问题。如果在完成后续两步之前就吸引人们关注项目,他们将无法参与,即使参与了也不会留下来。实际上,社区并不会扩大。
因此,首先确保能留住现有和新贡献者;其次,降低准入门槛,让有兴趣的人真正开始贡献;最后才考虑如何吸引人们参与。
如何留住贡献者?
对Bugzilla项目来说,这是最大的挑战。一旦有人开始贡献,是什么让他们持续参与?我们如何留住他们?
作为1998年就存在的开源项目,我们拥有大量实际数据。我们通过两种方式分析这些数据:
- 调查所有离开的开发者,询问他们离开的原因(自由形式回答)。
- 绘制十年间贡献者数量随时间变化的图表,并将波动与项目采取(或未采取)的行动关联。
研究发现:
- 不要长期冻结主干代码:每次冻结主干(例如为准备发布候选版本),社区规模会急剧缩小,解冻后需数月才能恢复。
- 贡献者流失不可避免:调查显示,贡献者离开的首要原因是时间不足或工作变动。因此,留住新贡献者是关键。
- 立即响应贡献:代码审核延迟(而非审核难度)是导致人们离开的主因。快速反馈(甚至简单致谢)能显著提高留存率。
- 极度友善与公开赞赏:开源贡献者的“报酬”是认可和成就感。即使贡献不完美,也要先感谢再指导修正。
- 杜绝个人负面行为:对贡献者的个人攻击(哪怕是玩笑式批评)会迅速驱离他们。需设立调解机制(如“社区调解员”)化解冲突。
降低参与门槛
下一步是消除参与障碍。通常最大的障碍是缺乏文档和方向。我们通过以下方式解决:
- 标记“新手友好”任务:在问题跟踪器中标注适合新手的Bug或功能请求。
- 建立并记录沟通渠道:提供邮件列表、IRC频道(含网页版入口),并确保核心成员活跃其中。
- 完善开发流程文档:清晰记录代码获取、补丁提交等步骤,并确保文档易于查找(例如在网站添加显眼的“贡献”按钮)。
如何吸引贡献者?
传统观点认为,人们参与开源是因为:
- 喜欢帮助他人
- 享受社区归属感
- 希望回馈
- 认为存在问题并想修复
因此,项目需传递“需要帮助”“社区有趣”“贡献会被赞赏”“问题待解决”等信息。此外:
- 成为流行产品:用户基数大(如Linux内核、WordPress)自然带来更多潜在贡献者。
- 使用流行编程语言:PHP的流行助力WordPress吸引了大量贡献者。
其他方法包括技术演讲、博客宣传等“接触与鼓励”策略。
总结
开源社区如同流动的活水——总有人因各种原因进出。关键是流入率高于流出率。遵循上述原则不仅能实现这一点,还能让社区成为对所有人(包括我们自己)高效而愉快的场所。
——Max Kanat-Alexander