Apache的社区治理之道

Ross Gardler是Apache 软件基金会现任总裁,在开源技术领域拥有丰富的经验,长期致力于开源技术的推广和开源社区的治理工作。Ross Gardler是开源项目的积极贡献者,指导了大批开发者融入开源社区理解并遵从开源社区规则。在开源社组织的一次媒体见面会中,InfoQ有幸采访到了 Ross Gardler先生,听他阐释了Apache的社区治理之道。本文根据采访内容整理而成。

没有领导者,但有驱动者

Apache曾经调研过200个大型开源项目,结果发现排名前九的开源项目不管是从参与人数还是活跃度上,都是十倍于其它一百多个开源项目的,并且 这几个成功的项目都是由非盈利组织治理的,而非某个厂商。随着开源项目的发展以及参与人数的增加,开源项目的社区治理就变得非常重要,所以Apache社 区的理念一直是社区重于代码。要治理好一个社区,需要两个方面的东西,一个是法律框架,一个是治理模型。在Apache中,法律框架其实就是指开源许可 证,许可证非常重要,它能够很好地保护代码贡献者的利益和权力。但是开源许可证只能够提供一个合法的法律框架,并不能持续推动开源项目的发展。治理模型是 由一些规章流程以及文化组成的,Apache会制定一些最为常用且最优化的社区流程,以为社区未来长期的发展找到一个最优化的发展方法或道路。流程是必须 的,但是Apache也明白社区应该是以人为本而不是以流程为核心,所以他们并没有所谓的领导者来对社区的参与者发号施令,却有驱动者、激励者,来帮助社 区的每一个人找到自己所需要的东西,从而满足需求。

不通过投票的机制来决策

在Apache社区中,决策是通过统一共识来决定的,而非投票机制。虽然达成共识是一个非常耗时和耗精力的过程(需要反复听取意见并讨论,也可能是 争论),但Apache还是坚持这样做,因为他们认为投票会导致分裂。这样的做法称为“默认共识”,也就是默认大家都是为了社区共同的利益来做某一行代码 的修改,而对于谁对谁错,就让代码去说话。

QCon全球软件开发大会上海站,2016年10月20日-22日,上海宝华万豪酒店,精彩内容抢先看!

那么Apache是如何实现开源社区代码的沟通讨论呢?一个软件并不能满足所有用户的需求,所以社区可能会基于同一套开源代码,并根据自己的个性化 需求开发不同的软件。但是随着衍生软件的不断更新,它们之间的共同代码可能就会越来越少,为了避免过于分化,Apache会采用一定的措施让它们进行代码 融合。假设在社区中有两种方案,第一种方案有更高的效率,但是第二种方案提供了更高的灵活性。就选择第一种方案还是第二种方案,无休止的争论可能只是浪费 时间,这个时候让代码说话最合适。随着两种方案的演进,胜负自然会有,然后Apache再出力干涉,设法把它们融合起来。但也并不总是这样,有的时候两种 方案可能永远无法再融合,这种情况也是可以接受的,也正体现了社区的多元化。

Apache项目的组织架构

Apache软件基金会和项目的运作是分开的,基金会主要是为项目的运行提供保障,比如法律帮助、代码托管。而各个开源项目都是独立运转的,在技术 细节上他们有完全的自主权。一个典型的Apache开源项目,通常都有四个角色,或者四类人:第一类人就是用户。用户表达自己的需求,想要要什么功能,并 提供一些反馈。第二类人就是贡献者,他们会根据实际情况来贡献代码,并解答用户的一些问题。当贡献者参与项目足够长的时间,并充分了解项目之后,他就会升 级为Committer,Committer和贡献者是不一样的。贡献者所贡献的代码是补丁,但是要应用这个补丁,就必须经过Committer的同意。 最后一个角色,叫项目管委会。项目每一个参与者都有表达意见的通道,但是当争论不休的时候,项目管委会就会出面做出最后的决定。

如果项目管委会被认为是违背了Apache之道,比如违背了大部分的项目参与方的意见,擅自作主,Apache就可以把这个决策再升级到软件基金董事会,让董事会来做最后的裁决。

开源项目中的二八定律

纵观Apache下的开源项目,二八定律也是成立的:80%的代码都是来自20%的贡献者。反过来也是这样,20%的工作都是由80%的人来做的。 在西方的开源社区中,基本上是20%的人做了80%的工作,并且这20%的人都是被雇佣来做这些事情的。而那些做了20%工作的80%的人,他们都是利用 自己的周末、闲暇的时间来做的。

Docker社区有善意的“独裁者”

从治理方式上来说,Docker和Apache之道是不一样的,如果是在Apache的开源项目社区中出现争议,最终可以由Apache软件基金董 事会来统一做最后的裁决。但如果是Docker,他会有一个叫做善意的独裁者的角色,也就意味着你提了很多的建议,但是如果这个“独裁者”觉得不行,他一 个人就可以做决定。当然他会听取社区的意见,所以应该把他叫善意的“独裁者”。这是二者最大的区别。

总体来看,在具体的执行过程中,Docker和Apache的开源项目本质上是一样的,都是要促成共识。当然在极少见的情况下,如果发生了争议,Docker可以独裁,但Apache不能。

如何促进开源在中国的发展

从Apache基金会的发展曲线中可以看到,西方的开源项目在一开始的很多年其实并没有大的突破,一直都是铺垫期,而中国现在正处在这一铺垫期。中国可以学习国外的经验从而缩短铺垫期,争取尽快进入发展期。另外,在西方的开源项目发展初期,就有爱好者参与推动它的发展,随着时间的推移,这样的人就会越来越多,大家的意识也就会改变。目前中国就缺少这样的人或者组织。

在西方的开源历史上有三个大的里程碑,第一个里程碑是开源的MySQL数据库;第二个里程碑是第一个达到了数十亿美金身价的开源公司Red Hat;第三个里程碑是最近的一家基于开源的成功的创业公司MongoDB。而在中国,很少有这样的可以借鉴的成功案例,中国需要有这样的公司或者开源项 目来教育市场和用户。

http://www.infoq.com/cn/articles/ross-gardler-talk-open-source