大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

Apache 软件基金会总裁:Docker 是善意的独裁者

  • 2015-04-10
  • 本文字数:2276 字

    阅读完需:约 7 分钟

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

2015-04-10 00:133009
用户头像

发布了 219 篇内容, 共 147.1 次阅读, 收获喜欢 195 次。

关注

评论

发布
暂无评论
发现更多内容

Newbe.Claptrap 框架如何实现在多种框架之上运行?

newbe36524

Docker 云计算 微服务 .net core ASP.NET Core

对待一件事,从不喜欢再到喜欢,转变需要多大

良知犹存

程序人生

精美前端UI(VUE)界面,ASP.NET通用工作流开发分享

雯雯写代码

工作流 可视化

大数据技术发展(一):大数据技术的起源

cristal

Java 大数据 hadoop

超超超全递归技巧讲解,这次带你拿下递归

多选参数

数据结构 算法 递归 数据结构与算法

误执行 rm -fr /*,我删删删删库了,要跑路吗?

小林coding

Linux 程序人生 Shell linux命令

优化教育体验 智微智能高品质录播系统

InfoQ_967a83c6d0d7

修改系统时间,导致 sem_timedwait 一直阻塞的问题解决和分析

小林coding

Linux 编程 问题处理

音画同步体验有多好,来看看即构的自研互动白板就知道啦

ZEGO即构

在线教育 SVG canvas

HTTP协议-进阶

Jaykey

大前端 HTTP

为什么你做的 Excel 表不好用?

Tony Wu

效率工具 产品设计 Excel ER图

Spring Boot Actuator微服务服务监控

xcbeyond

Java 微服务 springboot actuator 服务监控

2020大厂web前端面试常见问题总结

华为云开发者联盟

CSS 面试 响应式 大前端 浏览器

全球移动服务生态的暗涌与新机

脑极体

直播技术的背后--RTMP协议

soolaugust

直播 RTMP

「C++ 篇」答应我,别再 if else 走天下了可以吗

小林coding

c++ 编程 设计模式 编程习惯 编程风格

为什么直播系统不用RTP协议

soolaugust

WebRTC 直播 RTMP rtp

HTTP协议-基础

Jaykey

大前端 HTTP

Web 全栈开发利器: 强大的在线 Cloud IDE

华为云开发者联盟

Web python3.x 全栈 编码 CloudIDE

gRPC在Spring Cloud中的应用

xcbeyond

Java gRPC SpringCloud

国内首家 ABM 营销技术服务商火眼云完成5000万元A轮融资

人称T客

为什么使用Portainer,而不是Docker CLI来管理Docker环境

xcbeyond

Docker 运维 Portainer

从根上学习Git

书旅

git 工具 版本控制 版本管理工具

第二次推荐笔记:wolai

申屠鹏会

字节跳动想招什么样的技术人?

池建强

C++ 深入浅出工厂模式(初识篇)

小林coding

c++ 设计模式 工厂模式

C++ 深入浅出工厂模式(进阶篇)

小林coding

c++ 设计模式 工厂模式

让类/进程/脚本「单身」的方法

小林coding

c c++ Shell 设计模式 单例模式

C++ this指针的理解和作用

小林coding

c c++ 指针

老张「原创小说」

瓜藤老祖

个人成长

SpringCloud(Netflix)-技术专题-微服务入门介绍

码界西柚

Apache软件基金会总裁:Docker是善意的独裁者_开源_小盖_InfoQ精选文章