揭秘!开源软件背后的神秘组织
每谈及开源、开源社区,就不得不提及 Apache 软件基金会(Apache Software Foundation,ASF),作为全球最大的开源组织,它究竟是如何运行管理的?
Flink 社区将分享“走进 ASF”系列内容,先从宏观介绍 ASF 是如何运作的,然后详细解说如何参与 Apache 具体项目做贡献,如何成为某个项目的 Committer、PMC 成员,如何选择多个 Apache 项目进行多领域贡献并成为 ASF Member 等,希望有助于你真正了解开源、参与开源。
我的开源之旅
我2011年加入阿里,经历过若干组织架构调整,做过行为日志 OPlog,阿里郎,云转码,文档转换等若干产品,在2016年10月份由于团队需要有幸接触到 Blink 的开发,开始了解 Apache Flink 社区,由初期的参与社区开发到后来逐渐主导具体模块的开发,到负责 Apache Flink Python API(PyFlink) 的建设。目前是 ASF Member, PMC member of @ApacheFlink and a Committer for @ApacheFlink, @ApacheBeam, @ApacheIoTDB 。我的开源之旅如下:
为何要写《走进 ASF 系列》文章?
为啥要写《走进 ASF 系列》文章?核心考虑是发现国内大多数人都听说过 ASF,同时我们国家也是世界上使用开源最多的国家之一,如下图展示了在 ASF 2019 年年度报告中披露的 ASF 软件在全球各国家的下载量排名:
中国已然成为 Apache 软件基金会项目下载量最大的地区。但是真正了解并参与 ASF 贡献,并且成为 ASF Member 的人非常稀少。这个现象并非我们没有能力参与 ASF 贡献,更不是没有能力成为 ASF Member,而是对 ASF 了解的渠道比较少,同时或多或少的还可能有一点语言上障碍的原因,国内对 ASF 的参与和世界其他西方国家相比来说,参与的人数非常稀少!分享一些具体数字给大家:
ASF 拥有7000+代码贡献者,然而为 ASF 项目提交贡献的中国工程师仅千人规模,不足七分之一。
ASF 项目约350个,然而由中国发起的 ASF 项目仅19个,已成为顶级项目的比例更是不足5%。
ASF 孵化器拥有导师200多个,然而活跃的中国导师不超过5位。
ASF 每年在美国、欧洲等地举办 ApacheCon ,然而迄今为止,ASF 尚未在中国举办过一次 ApacheCon。
最新统计(2020.04.05) ASF Member 全球有765名,华人有40名,其中在中国的有22人。
作为全球最大 Apache 开源消费国, ASF 在国内有广泛的用户基础,近年来国内个大互联网公司也逐渐参与了Apache 开源建设,我们很有必要思考如何让中国的工程师有更多的有机会了解 ASF,有更多的机会参与 ASF 贡献,有更多的机会成为Apache 开源项目的 Committer,PMC ,甚至是 ASF Member。
所以《走进 ASF 系列》文章就是将我对 ASF 的认识和参与 ASF 贡献的经验与大家进行分享,大力推动 ASF 在中国的发展,竭尽全力让国人在 ASF 开源领域占有一席之地~~
《走进 ASF 系列》会有哪些内容
《走进 ASF 系列》文章会从 ASF 组织架构,ASF 公司和 ASF 项目治理方案入手,宏观了解 ASF 如何运作。然后分多篇进行各个细节的介绍,比如,如何参与Apache 具体项目做贡献,如何成为某个项目的 Committer,如何成为某个项目的 PMC 成员,如何选择多个 Apache 项目进行多领域贡献,如何成为 ASF Member 等等进行分享。
下面将跟大家分享 ASF 的组织架构及治理方式。
ASF 是什么?
我想“ ASF 是什么?”是一个最简单的问题,也是一个最难回答的问题。简单是因为你可以以任何一个角度去描述,就像盲人摸象。而困难是因为你很难用一句话就完整全面的定义“ ASF 是什么?”。所以面对这样的问题我的考虑是,先描述表象,再探究其细节。就像我们回答宝马是什么,我们会说“别摸我”,奥迪是什么?我们会说“四个圈”。那么 ASF 是什么?我想说,ASF 是下面这个漂亮的羽毛 ;)
了解 Logo 也许是欣赏一个新事物最好的开始。那么下一秒你将有一连串的问题浮现出来?她多大了?干什么的?怎么运作的?和我有什么关系?接下来我们慢慢道来…
与阿里同龄
Apache 软件基金会(ASF)是在美国注册的503©3非营利的公共慈善组织,于1999年成立。那么成立的最终目的是什么呢?ASF 最核心的目的如下:
通过提供硬件、通讯工具以及业务基础架构,为开放式协作开发软件项目提供基础。
建立独立法人实体,任何公司和个人可以向其进行捐赠,并能够确保这些捐赠将用于公共利益。
为个人志愿者提供避免针对基金会项目的法律诉讼的手段。
保护应用于其软件产品的 “Apache” 品牌免受其他组织的滥用。
所以 ASF 是有着美好愿景和伟大使命的公益性组织。ASF 和阿里巴巴一样都成立于1999年,而且在利他方面可谓英雄所见略同,阿里巴巴以“让天下没有难做的生意”为使命, ASF 则致力于开源软件生态的营造,让软件技术能够在全球共享,这是 ASF无比耀眼的魅力所在!
逐本溯源
ASF 的成立并非凭空出世,在 ASF 的前身其实是叫“ Apache 小组”,这个小组当时在维护由 NCSA 编写的 HTTPD Web 服务器。从1995到1999年,由 “Apache 小组”所领导开发的 Apache HTTPD web 服务成为了市场的领导者,一直持续到现在,目前仍占据了市场65%的份额。当年使用该服务的人越来越多,但是最初的开发人员对该项目失去了兴趣,并转移到其他项目上,从而使用户失去了支持。
于是一个叫 Brian Behlendorf 的大牛在自己的计算机上创建了一个邮件列表,供这些用户协作以修复,维护和改进该软件。从1995年2月不到12位软件工程师通过电子邮件共享代码补丁开始,到后面的有了 Apache 网站,网站上又托管了很多关联项目(例如 mod_ perl 项目,PHP 项目,Java Apache 项目),这样的情形面临的问题越来越多,比如,潜在的个人被法律攻击等,进而越来越需要一个更加协调和结构化的组织来解决这些问题。于是到1999年6月 ASF 便注册成立了!:)
成长的苦恼
随着软件产品的不断成熟,用户越来越多,反馈的问题和软件增强的建议也越来越多,同时参与进行代码修补的人也越来越多。问题也随即而来,最初的几位创始人根本没有办法处理所有的问题,Review 所有的代码补丁,Merge 所以的提交,那么怎么办呢?
当时 Apache 成员认为如果某位开发者,已经“赢得”了成为社区的一员的资格时,他们就授予此开发者对代码仓库的直接访问权限,也就是目前我们说的 Committer,这样不断的增加团队的力量,也提高了团队开发项目的能力,进而更有效地维护和发展了团队。当然这只是冰山一角,ASF 的治理当然不仅仅是 Committer 的发展了,下面章节我们进行系统的介绍。
ASF 治理
目前 ASF 拥有超过140多个跨技术范围的项目,涉及350多个具体项目,7000+的代码贡献者,参与人员覆盖了全球230多个国家,为保障其健康的发展必须有一套简单高效的组织架构和治理手段。那么 ASF 的治理将涉及到ASF组织本身的治理和 ASF 对 Apache 网站所托管的项目的治理。
公司的治理
总的来看,ASF 的治理相当简单:由成员 (Member) 来选举董事会;董事会任命各种管理人员并创建 PMCs;PMCs 定期向董事会报告,大多数其他管理人员向总裁然汇报,然后总裁向董事会报告。
组织架构
ASF 公司治理首先要有一个完善的组织架构,和分工明确的角色职责。如下图所示:
上面的组织架构整体围绕的“董事会”进行角色构建,董事会有主席 (Chair) 和副主席(Vice Char)。公司设有总裁,副总裁,秘书,财务总监,法律顾问等职位。每种角色各肩其职。作为初识 ASF 的文章,我们简单了解如下宏观的内容即可:
ASF 由董事会来管理,董事会由成员构成。
现有成员(Member)会定期提名和选举新成员,每年提名并选举9名董事加入董事会。
董事会任命业务成员,并将特定政策或业务领域的责任分配给每位成员。例如,法律事务委员会副总裁负责为 ASF 和所有 Apache 项目设置法律政策,并与公司顾问进行合作。
董事会任命执行官,包括总裁,秘书,财务总监等,他们负责 ASF 的特定领域运营。
大多数官员每月直接向总裁报告,而总裁则每月向董事会报告 ASF 的整体运营状况。
基础设施副总裁向总裁汇报,并对基础设施团队的运营进行宏观监督。在团队中,带薪的基础设施管理者角色有助于管理日常操作,带薪人员确定工作优先级,并维护所有 Apache 项目中使用的服务。
那么这些角色是如何产生的呢?ASF 还需要一套选举任命的机制来保证整个组织的健康运行。
选举和任命
董事会负责创建并更新项目管理委员会( PMCs )。董事会只是批准孵化器的合理构建请求(毕业成为 TLPs )或来自 PMCs 自身(添加或删除 PMC 成员)的请求。在每种情况下,向董事会建议进行的变更都已经由相关的 PMC 完成了投票。如下图所示:
董事会 (Board)
董事会由9名懂事组成,负责管理和监督 ASF 的各种事物。包括人员,资产(资金,知识产权,商标和支持项目所需要的基础设施)以及为项目分配资源。
项目管理委员会(PMC)
项目管理委员会由董事会决议设立,负责具体一个项目的事务管理。每个 PMC由至少一名 ASF 官员组成,并指定一名成员为主席。每个 PMC 中的主席就是 ASF 在各个项目中的眼睛和耳朵,对 ASF 至关重要。当然 PMC 负责发展各自新的 PMC 成员和发展项目的 Committer。
各种 VP
ASF 有这种 VP,他们大多数官员每月直接向总裁报告,而总裁则每月向董事会报告 ASF 的整体运营状况。
也许这些内容对于刚刚了解ASF或者刚刚加入 ASF 开源建设的同学简单了解一下即可,因为似乎距离还很“遥远”。(加引号原因是,我认为是思想认为的遥远,不是真的那么远)。接下来我们看看和具体项目贡献者密切相关的内容 - ASF 项目治理。
项目的治理
每个项目都由项目的 PMC 进行独立管理,PMC 以 Apache 的方式,遵循由所有官员为所有项目设置的一些核心原则。如下图所示:
上图我以 Apache Flink 项目为例勾勒了项目治理的概要图。每个 PMC 都由 ASF 董事会进行管理,每个 PMC 都会负责制定自己项目的技术方向。
PMC 每季度直接向董事会报告一次。董事会对 PMC 进行监督,以确保 PMC 健康发展,顺利的管理社区,确保 PMC 遵守 Apache 的原则。项目的技术方向由 PMC 指定,董事会不对项目提供技术治理。
每个 PMC 的主席都是该项目的副总裁,因此也是 ASF 的官员。主席的主要职责是确保项目报告全面,并提交到董事会。
PMC 对软件版本发布进行投票。PMC 进行适当的发布治理,进而确保了所有的源代码版本发布都是 ASF 官方行为。
PMCs 为项目提名并选举新提交者 (Committer)。PMCs 还负责提名并投票新的 PMC 成员,然后 PMCs 向董事会汇报建议的变化。
Apache 孵化器 (Incubator) 是一种特殊的(I)PMC:它的工作是指导新建立的 Podling 社区,以帮助他们学习 Apache Way。在每个 Podling 对他们的软件发布进行投票后,IPMC 成员也对该 Podling 的发布过程进行监督和投票,以确保 Podling 逐渐成长为一个合格的 Apache 项目。
根据政策,只有个人可以充当会员,提交者 (Committer) 或 PMC 成员(Member) 或管理人员。这是 ASF 和 Apache 项目保持其独立性的一种方式。
同时每个项目都有不同的参与角色,比如:用户(Users),贡献者(Contributors),提交者(Committers),新的 PMC Members 等等。不同角色的职责如下:
用户 (Users) - 就是使用项目的大众,他们以错误报告和功能建议的形式向开发人员提供反馈进而为项目做贡献。
贡献者 (Contributors) - 就是开发人员,以写代码或写文档的形式为项目做贡献。开发人员可以多种方式共享社区,比如参加者邮件列表讨论、提交代码补丁、提交文档等等。
提交者 (Committers) - 提交者是一批特殊的贡献者,他们是拥有代码仓库写操作权限的开发者。
PMC 成员 (Member) - 项目管理委员会(PMC)成员,是由在项目的开发中表现突出的提交者(Committers)选举出来的,他们拥有写入代码仓库的权限、拥有社区相关事务的投票权、以及有提名新的 PMC 成员和 Committer 的权利和职责。
ASF 董事会现状
今年 ASF 年度成员会议, 在 3.31~4.2 期间举行, ASF 董事会选情相当激烈,有 16为 ASF Member 参与竞选。竞选结果是去年的九席董事换了七位,二位董事 Craig Russell 和 Shane Curcuru 获得了连任。目前同时会成员如下:
Shane Curcuru (连任董事)
Bertrand Delacretaz(原董事)
Roy Fielding(原董事)
Niclas Hedhman(新任董事)
Justin Mclean(新任董事)
Craig Russell (连任董事)
Sam Ruby(原董事)
Patricia Shanahan (新任董事)
Sander Striker (原董事)
2020 新晋 ASF Member
上面的竞选和任命章节已经介绍过,ASF 一年一度的成员会议中,不仅仅会选举9名董事成员,也会提名和投票新的 ASF Member 。
恭喜他们(当然也祝福一下我自己的幸运)!据最新统计(2020.04.06) ASF Member 全球有765名,其中在中国的有20+人。
ASF 一张图
对于初识的用户来说,上面的内容也许太多了,记住一个 Logo 容易,记住一张图似乎比上面的文字要简单许多:)
ASF 金字塔描述了不同角色的群体特征,越上面人群越小,但对 ASF 肩负的责任越大,越下面人群越大,但对 ASF 的责任越小,参与越容易!记住 “ ASF 是什么?” 从 羽毛 Logo 开始,参与 ASF 贡献从用户开始。
ASF 一句话
图可以描述表象,文字可以表述内涵,开篇的羽毛代表了 ASF,但怎么描述这个漂亮的羽毛呢?“ASF 是一个成立于1999年,有完整的组织(董事会)架构管理,以软件(140个领域)技术全球(覆盖230个国家)共享为使命的公益组织”。
小结
本篇是《走进ASF系列》的第一篇,我努力尝试在我自己身上体验“费曼技巧”,从概要介绍了什么 ASF,进而推进介绍 ASF 组织架构,ASF 公司治理和项目治理,意在让想要或 刚刚参与 ASF 贡献的同学对 ASF 有一个初步认知。最后介绍了目前 ASF董事会成员和2020年新晋的中国 ASF Member。同时,为了方便大家记忆,以一张图,一句话的方式收尾本篇内容。
同时《走进 ASF 系列》与我之前的《 Apache Flink 漫谈系列》不同,讨论 ASF 更多的是非技术的分享,容易变成无重点,无内容,无收获的乏味分享,这是我最不愿意看见的现象。所以恳请大家在本系列的初期多给我一些或好或坏的评论建议,以便我们共同成长!谢谢大家~
参考资料:
[1] http://www.apache.org/foundation/governance/orgchart
评论