开源社区,简化版
社区构建的三个核心要素
发展和维护一个开源社区基本上取决于三件事:
- 让人们有兴趣贡献
- 消除参与项目和贡献的障碍
- 保留贡献者,让他们持续贡献
如果你能让人们感兴趣,然后让他们实际贡献,再让他们留下来,你就有了一个社区。否则,你就没有。
反向实施策略
如果你刚开始一个项目,或者需要改进现有项目的社区,你应该按照相反的顺序处理这些要点。如果你在完成后两个步骤之前就让人们对项目感兴趣,那么人们将无法参与,即使参与了也不会留下来。你实际上不会扩大你的社区。
所以首先,我们要确保能够保留现有和新贡献者。一旦做到了这一点,我们就要消除参与障碍,让感兴趣的人能够真正开始贡献。只有到那时,我们才开始担心如何让人们感兴趣。
保留贡献者
对于Bugzilla项目来说,这是我们最大的挑战。一旦有人开始贡献,是什么让他们持续贡献?我们如何让人们留下来?
我们在回答这些问题时有一个有趣的优势,因为我们是现存较老的开源项目之一,自1998年底以来一直存在。所以我们有大量实际数据可供分析。
我们通过两种方式挖掘这些数据:首先,我们对所有离开项目的过去开发人员进行了调查,询问他们离开的原因。这是一个自由形式的调查,允许人们以任何他们想要的方式回答。然后,我们创建了一个项目整个十年期间贡献者数量的图表,并将图表的起伏与我们随时间采取或未采取的各种行动相关联。
关键发现
不要长时间冻结主干
Bugzilla项目有一个相当标准的系统,有几乎不变更的稳定分支(例如接收错误修复和进行小版本发布的"3.4"分支),以及一个主线"主干"仓库,所有新功能都进入这里,最终成为我们的下一个主要版本。
在过去,在主要发布之前,我们会"冻结"主干。这意味着在几周或几个月内不能开发新功能,直到我们觉得主干足够稳定可以称为"发布候选"。然后我们会从主干创建一个新的稳定分支,并重新开放主线主干以进行功能开发。然而,当主干被冻结时,Bugzilla项目中没有任何功能开发在进行。
图表分析非常清楚地表明,每次我们冻结时,社区都会急剧缩小,在我们解冻后需要几个月时间社区规模才能恢复。这种情况一致地发生,每次我们冻结时都会发生,跨越多年和多个发布。
人员流动是不可避免的
调查发现,贡献者离开的首要原因是他们不再有时间贡献,或者他们作为工作的一部分贡献,现在他们换了工作。基本上,大多数贡献者最终离开是不可避免的。
所以如果社区成员肯定会离开,持续扩大社区的唯一方法是弄清楚如何保留新贡献者。如果你不让新成员留下来,那么随着老贡献者离开,社区将不断缩小,无论你做什么其他事情。
立即响应贡献
Bugzilla项目有一个代码审查系统,要求所有新贡献在成为Bugzilla一部分之前必须由经验丰富的开发人员审查。多年来对这个系统有各种抱怨,但分析调查数据显示,人们离开项目是因为获得审查时间太长,而不是因为审查太难。
实际上,只要在有人提交贡献后几乎立即进行审查,审查可以随心所欲地严格。人们(通常)不介意必须修改贡献。他们甚至通常不介意多次修改。但他们确实介意如果他们发布一个补丁,三个月没有得到审查,然后他们必须修改它,只是再等三个月才被告知必须再次修改。重要的是延迟,而不是质量控制的水平。
极其友善并明显表达感激
对于回应我们调查的几乎每个人来说,除了"我的工作变了"或"我没有时间"之外,不留下来的因素出奇地个人化。我知道我们都与计算机一起工作,也许我们愿意认为工程应该是一个完全冷酷的科学专业,我们都根据机器的要求正确完成工作,而不担心我们的情感或个人参与。然而,没有什么比这更偏离事实了——人们与社区成员的个人互动,他们感到被欣赏的程度,以及他们感到被攻击的程度,实际上是保留社区成员最重要的方面。
鼓励完全不存在个人负面情绪
当人们因尝试做积极的事情而受到个人攻击时,会以闪电般的速度驱使他们离开项目。“个人攻击"可以小到关于他们代码的不愉快笑话,而不是仅仅对错误之处进行直接的技术描述。
消除障碍
下一步是消除参与障碍。是什么阻止人们开始参与项目?
通常,最大的障碍是缺乏文档和方向。当人们已经想要贡献时,他们的下一步是弄清楚如何贡献。
解决方案
简单入门项目列表
每当我们看到一个看起来适合新手解决的错误或功能请求时,我们会在错误跟踪器中将其标记为"好的入门错误”。这提供了一个好的入门项目列表,任何人都可以查看,而不必问我们"我从哪里开始?"
创建并记录沟通渠道
人们几乎立即想与其他人讨论项目。你应该有电子邮件列表和一些即时通信方法,如IRC频道。
优秀、完整且简单的文档
完整记录开发过程的每一步,并将该文档放在公共网站上。不要发明新流程,只需记录现有的实际流程。
使所有这些文档易于查找
这是简单的最后一步,但有时项目会忘记它!你可以拥有世界上所有精彩的开发人员文档,但如果新贡献者不能超级容易地找到它,那么你实际上并没有消除任何参与障碍!
激发兴趣
你如何让人们想:“哎呀,我想为这个项目贡献”?这是他们成为贡献者之前必须采取的第一步。
传统智慧指出,人们为开源项目贡献是因为:
- 他们喜欢帮助
- 他们享受成为社区的一部分
- 他们想要回馈
- 他们认为有些事情不对,他们需要/想要修复它
有效方法
成为超级流行的产品
如果一个无数人使用你的产品,统计上很可能其中许多人会想要贡献。Linux内核和WordPress就是很好的例子——它们有数百万用户,所以肯定会有很多贡献者,前提是项目的"参与障碍"和"保留贡献者"方面也得到了处理。
使用流行的编程语言编写
通常,如果项目是用人们已经知道的语言编写的,他们更可能贡献。WordPress有一个巨大的贡献者社区,它是用PHP编写的。无论你对PHP有什么看法,它非常流行。
总结
开源社区在某种程度上是一个流动的事物——总是会有人因某种原因来来去去。重要的是进入并留下的人的比率大于离开的人的比率。所有这些要点都有助于确保这一点,并希望它们也使我们的社区成为对每个人(甚至我们自己)都有生产力和愉快的地方!