微信号:infoqchina

介绍:有内容的技术社区媒体

Apache基金会总裁:Docker是善意的社区“独裁者”

2015-04-14 12:00 郭蕾

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


社区重于代码


Apache曾经调研过200个大型开源项目,结果发现排名前九的开源项目不管是从参与人数还是活跃度上,都是十倍于其它一百多个开源项目的,并且这几个成功的项目都是由非盈利组织治理的,而非某个厂商。随着开源项目的发展以及参与人数的增加,开源项目的社区治理就变得非常重要,所以Apache社区的理念一直是社区重于代码。


要治理好一个社区,需要两个方面的东西,一个是法律框架,一个是治理模型。在Apache中,法律框架其实就是指开源许可证,许可证非常重要,它能够很好地保护代码贡献者的利益和权力。但是开源许可证只能够提供一个合法的法律框架,并不能持续推动开源项目的发展。治理模型是由一些规章流程以及文化组成的,Apache会制定一些最为常用且最优化的社区流程,以为社区未来长期的发展找到一个最优化的发展方法或道路。流程是必须的,但是Apache也明白社区应该是以人为本而不是以流程为核心,所以他们并没有所谓的领导者来对社区的参与者发号施令,却有驱动者、激励者,来帮助社区的每一个人找到自己所需要的东西,从而满足需求。


不通过投票的机制来决策


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


那么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。而在中国,很少有这样的可以借鉴的成功案例,中国需要有这样的公司或者开源项目来教育市场和用户。




如果想要评论本篇文章,想看下其他读者都有什么话想说,欢迎点击“阅读原文”参与讨论。



 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 共建手机页游生态圈 腾讯助力Cocos秋季峰会 Android屏幕适配方案,直接填写设计图上的像素尺寸即可完成适配,最大限度解决适配问题 10个iOS开发常见错误,你中招了吗 再议携程Android动态加载框架DynamicAPK 静态代码扫描——Log日志文件中敏感信息输出的检测实现