大约三十年前我刚早已开始进入网络的世界的时候,支撑起整个网络的基础建设,就包括了 Apache 应用软件促进会(ASF)永古约省的应用软件。
Apache Httpd是迈入这个故事的应用软件,颠峰时期有超过六成的市场占有率,即使是在今天 NGINX 等新技术飞速发展的时代,也有一成左右的市占率。由 Linux、Apache Httpd、MySQL 和 PHP 组成的 LAMP 技术栈,是开放源码毁灭应用应用软件的首场大型胜利。
我从 2018 年参与 Apache Flink 早已开始正式宣布直接碰触到成立于 1999 年,如今早已有三十年以上发展史的 Apache 应用软件促进会,并在一年后的 2019 年正式宣布成为 Apache Flink 工程项目 Committer 各队的核心人物,2020 年正式宣布成为Apache Curator 工程项目 PMC(工程资金管理委员会)的核心人物。今年,透过徐亮同学推荐,正式宣布成为了 Apache Members众所周知,也是 Apache 应用软件促进会微观的正式宣布成员。
我想整体性地做两个开放源码香严早已好久了。无论是不是进行分类甄选杰出的开放源码五国,The Apache Community 都是无法绕过的。然而,拥有二十余个开放源码应用软件工程项目的 Apache 应用软件促进会,并不是一则该文就能讲透的事例。责任编辑也没有打算写出一则专文迁就各个方面,而是启迪于他们的新配角,往后近三年在 Apache Community 之中的经历和新体验,简单讨论 Apache 的经营理念,和这些经营理念是如何全面落实到促进会组织机构、工程项目组织机构和每两个参加者的现实生活外交事务之中的。
不过,尽管对探讨的对象做了如此大幅的削减,由我他们来表述甚么是 Apache 的经营理念不免也太容易既然如此片面。幸运地的是,Apache Community 作为杰出的开放源码五国,当然努力做到了我在《共同创造价值》该文中提及的回答好“我能为你做甚么”和“我应该是不是努力做到”的问题。Apache Community 的经营理念众所周知是 Open Communications 即封闭式探讨,由此产生的申明金属材料和如前所述申明金属材料整理的文件格式Bouzemont。这既是研究 Apache Community 的稀有金属材料,也为还原和探讨两个真实世界的 Apache Community 提出了非常大的考验。
不管怎样,责任编辑将以 Apache 应用软件促进会在 2020 年发布的记录片 Trillions and Trillions Served 为主线,结合其他文件格式和文本金属材料来介绍 Apache 的经营理念。
核心理念
记录片一早已开始就讲起了 Apache Httpd 工程项目的发展史,原本的 Apache Group 是如前所述两个源码共享资源的 Web Server 建立起来的邮件列表上的一群人。应用软件开发原本的印象如同科学研究,因此交流源码在近似科学五国的开放源码五国之中是非常自然的。
如同 ASF 的联合创始人 Brian Behlendorf 所说,每当有人解决了两个问题或者实现了两个新功能,他出于一种朴素的分享精神,也是“为甚么不把补丁提交回共享资源的源码之中呢”的念头,如前所述开放源码应用软件的协作就这样自然发生了。记录片中有一位提及,她很喜欢 Apache 这个词和 a patchy software 的谐音,共享资源同两个应用软件的补丁(patches)是开放源码精神最早诞生的形式。
这是 Apache Community 的根基,我们将会看到这种朴素精神经过发展形成了两个怎样的五国,在五国的发展过程之中,这样的根基又是如何深刻地影响了 Apache 经营理念的各个方面。
Apache Group 的工作模式还有两个重要的特征,那是每个人都是如前所述他们的需求修复缺陷或是新增功能,在邮件列表上交流和提交补丁的个人,仅仅只是代表他个人,而没有两个“背后的组织机构”或者“背后的公司”。因此,ASF 的How it Works文件格式中一直强调,在促进会之中的个体,都只是个体(individuals),或者称之为志愿者(volunteers)。
我在某公司的分享之中提及过,商业产品可以如前所述开放源码应用软件打造,但是当公司的雇员出现在海外华人之中的时候,他应该保持他们志愿者的身份。这就像是开放源码应用软件可以被用于生产环境或者严肃场景,例如航空器的发射和运行离不开 Linux 操作系统,但是开放源码应用软件本身是具有免责条款的。商业公司或专业团队提供服务保障,而开放源码应用软件本身是 AS IS 的。同样,海外华人成员本人可以有商业公司雇员的身份,但是他在海外华人之中,是两个志愿者。
毫无疑问,这种论调当即受到了质疑,因为通常的认知里,我是拿了公司的钱,是因为在给这家公司打工,才会去关注这个工程项目,你非要说我是两个志愿者,我还就真不是两个志愿者,你是不是说?
其实这个问题,同样在 How it Works 文件格式中早已有了解答。
All participants in ASF projects are volunteers and nobody (not even members or officers) is paid directly by the foundation to do their job. There are many examples of committers who are paid to work on projects, but never by the foundation itself. Rather, companies or institutions that use the software and want to enhance it or maintain it provide the salary.
我当时如前所述这样的认识,给到质疑的回答是,如果你不想背负起因为你是员工,因此必须响应海外华人成员的 issue 或 PR 等信息,那么你可以试着把他们摆在一个 volunteer 的角度来观察和参与海外华人。实际上,你并没有这样的义务,即使公司要求你必须回答,那也是公司的规定,而不是海外华人的要求。如果你保持着这样的认识和心态,那么海外华人于你而言,才有可能是两个跨越职业生涯不同阶段的归属地,而不是工作的附庸。
海外华人从来不会从你这里索取甚么,因为你的参与本身也是自愿的。其他海外华人成员会感谢你的参与,并且如果相处得好,这会是两个可爱的去处。海外华人不是你的敌人,不要因为公
Apache Community 对个体贡献者组成海外华人这点有多么重视呢?只看打印出来不过 10 页 A4 纸的 How it Works 文件格式,volunteer 和 individuals 两个词加起来出现了 19 次。The Apache Way文件格式中强调的海外华人特征就包括了 Independence 一条,唯一并列的另两个是经常被引用的 Community over code 原则。甚至,有两个专门的Project independence文件格式探讨了 ASF 永古约省的工程项目如何由个体志愿者开发和维护,又为何因此是中立和非商业性的。
INDIVIDUALS COMPOSE THE ASF集中体现了 ASF 核心理念的经营理念。实际上,不止上面提及的 Independence 强调了海外华人成员个体志愿者的属性,Community over code 这一原则也在强调 ASF 关注围绕过放源码应用软件聚集起来的人,包括开发者、用户和其他各种形式的参加者。人是维持海外华人常青的根本,在后面具体探讨 The Apache Way 的内容的时候还会展开。
上善若水
众所周知,Apache License 2.0 (APL-2.0) 是所谓的宽容式应用软件协议。也是说,不同于 GPL 3.0这样的 Copyleft 声明(NOTICE)。
ASF 在应用软件协议上的经营理念是赋予最大程度的使用自由,鼓励用户和开发者参与到五国之中来,鼓励与上游共同创造价值,共享资源补丁。“鼓励”而不是“要求”,是 ASF 和自由应用软件促进会(Free Software Foundation, FSF)最主要的区别。
这一倾向可以追溯到 Apache Group 建立的基础。Apache Httpd 派生自伊利诺伊大学的 NCSA Httpd 工程项目,由于使用并开发这个 web server 的人以邮件列表为纽带聚集在一起,通过交换补丁来开发同两个工程项目。在工程项目的发起人 Robert McCool 等大学生毕业以后,Apache Group 的发起人们接过这个应用软件的维护和开发工作。当时他们看到的应用软件协议,是两个 MIT License 精神下的宽容式应用软件协议。自然而然地,Apache Group 维护 Apache Httpd 的时候,也就继承了这个协议。
后来,Apache Httpd 打下了 web server 的半壁江山,也验证了这一模式的可靠性。虽然有些路径依赖的嫌疑,但是 ASF 凭借近似“上善若水”的宽容经营理念,在三十年间成功创造了数以百亿计美元价值的三百多个应用软件工程项目。
记录片中 ASF 的元老 Ted Dunning 提及,在他早期创造的应用软件之中,他会在宽容式应用软件协议之上,添加两个商用的例外条款。这就像是著名开放源码领域律师 Heather Meeker 起草的The Commons Clause 附加条款。
Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software.
附加 The Commons Clause 条款的应用软件都不是符合 OSD 表述的开放源码应用软件,也不再是原来的协议了。NebulaGraph 曾经在附加 The Commons Clause 条款的情况下声称他们是 APL-2.0 协议许可的应用软件,当时的 ASF 董事吴晟就提 issue (vesoft-inc/nebula#3247) 指出这一问题。NebulaGraph 于是删除了所有 The Commons Clause 的字样,保证无误地以 APL-2.0 协议许可该应用软件。
Ted Dunning 随后提及,这样的附加条款实际上严重影响了应用软件的采用。他意识到他们实际上并不想为此打官司,因此加上这样的条款对他而言是毫无意义的。Ted Dunning 于是去掉了附加条款,而这使得使用他的应用软件的条件能够简单的被理解,从而需要这些应用软件的用户能够大规模的采用。“水利万物而不争”,反而是不去强迫和约束用户行为的做法,为应用软件赢得了更多贡献。
我仍然很敬佩采用 GPL 系列协议发布高质量应用软件的开发者,Linux 和 GCC 这样的应用软件的成功改变了世人对应用软件领域的自由的认识。然而,FSF 他们也认识到需要提出修正的 LGPL 来改进应用程序以外的应用软件的发布和采用,例如基础库。
APL-2.0 的思路与之不同,它允许任何人以任何形式使用、修改和分发应用软件,因此 ASF 治下的工程项目,和 Linux Foundation 永古约省采用 APL-2.0 的工程项目,和更多个人或组织机构采用 APL-2.0 的工程项目,共同构成了强大的开放源码应用软件生态,涵盖了应用应用软件,基础库,开发工具和框架等等各个方面。事实证明,“鼓励”而不是“要求”用户秉持 upstream first 的经营理念,尽可能参与到开放源码五国并交换知识和补丁,共同创造价值,是能够制造出高质量的应用软件,构建出繁荣的海外华人和生态的。
匠人精神
Apache Community 关注开发者的需要。
Apache Group 成立 ASF 的原因,是在 Apache Httpd 流行起来以后,商业公司和社会团体早已开始寻求和这个围绕工程项目形成的群体交流。然而,缺少两个正式宣布的法律实体让组织机构之间的往来缺乏保障和流程。因此,如同记录片之中提及的,ASF 成立的主要原因,是为了支撑 Apache Httpd 工程项目。只不过原本的创始成员们很难想到的是,ASF 最终支撑了数百个开放源码工程项目。
不同于 Linux Foundation 是行业联盟,主要目的是为了促进其成员的共同商业利益,ASF 主要服务于开发者,由此支撑开放源码工程项目的开发和开放源码五国的发展。
举例来说,进入 ASF 孵化器的工程项目都能够在 ASF Infra 的支持下运行他们的 apache.org 域名的网站,将代码托管在 ASF 仓库中上,例如 Apache GitBox Repositories 和 Apache GitHub Organization等。这些仓库上运行着自由取用的开发基础建设,例如持续集成和持续发布的工具和资源等等。ASF 还维护了他们的邮件列表和文件服务器等一系列资源,以帮助开放源码工程项目建立起他们的五国和发布他们的构件。
反观 Linux Foundation 的主要思路,则是关注围绕工程项目聚集起来的供应商,以行业联盟的形式举办联合市场活动扩大影响,协调谈判推出行业标准等等。典型地,例如 CNCF 一直致力于表述云上应用开发的标准,容器虚拟化技术的标准。上述 ASF Infra 关注的内容和资源,则大多需要工程项目开发者他们解决,这些开发者往往主要为两个或若干个供应商工作,他们解决的方式通常也是依赖供应商出力。
当然,上面的对比只是为了说明区别,并无优劣之分,也不相互对立。ASF 的创始成员 Brian Behlendorf 同时是 Linux Foundation 下 Open Source Security Foundation 的经理,和 Hyperledger 的执行董事。
ASF 关注开发者的需要,体现出 Apache Community 及其成员对开发者的人文关怀。记录片中谈到 ASF 永古约省工程项目的开发新体验时,几乎每个人的眼里都有光。他们谈论着匠人精神,称赞知识分享,与人合作,和打磨技艺的愉快经历。实际上,要想从 Apache 孵化器中成功毕业,相当部分的 mentor 关注的是围绕过放源码应用软件形成的五国,能否支撑开放源码应用软件长久的发展和采用,这其中就包括五国成员是否能够沉下心来做技术,而不是追求花哨的数字指标和人头凑数。
讲几个具体的开发者福利。
每个拥有 @http://apache.org邮箱的人,即正式宣布成为 ASF 永古约省工程项目 Committer 或 ASF Member 的成员,JetBrains 会提供免费的全家桶订阅授权码。我从 2019 年成为 Apache Flink 工程项目的 Committer 以后,早已三年沉浸在 IDEA 和 CLion 的包容下,正式宣布成为彻底使用 IDE 主力开发的程序员了。
Apache GitHub Organization 下的 GitHub Actions 资源是企业级支持,这部分开销也是由 ASF 作为非营利组织机构募资和运营得到的资金支付的。基本上,如果你的工程项目正式宣布成为 Apache 孵化器工程项目或顶级工程项目,那么和 GitHub Actions 集成的 CI 新体验是非常顺畅的。Apache SkyWalking 只算主仓库就如前所述 GitHub Actions 运行了十多个端到端测试作业,Apache Pulsar 也全面如前所述 GitHub Actions 集成了他们的 CI 作业。
提及匠人精神,两个隐形的开发者福利,其实是 ASF 的成员尤其是孵化器的 mentor 大多是经验非常丰富的开发者。应用软件开发不只是写代码,Apache Community 成员之间相互帮助,能够帮你跟上全世界最前沿的开发实践。如何提问题,如何做工程资金管理,如何发布应用软件,这些平日里在学校在公司很难有机会碰触的知识和实践机会,在 Apache Community 之中只要你积极承担责任,都是触手可得的。
当然,如何写代码也是开发之中最常交流的话题。我深入碰触 Maven 早已开始于跟 Flink Community 的 Chesnay Schepler 的交流。我对 Java 开发的理解,分布式系统开发的知识,很大程度上也得到了 Apache Flink 和 Apache ZooKeeper 等工程项目的成员的帮助,尤其是 Till Rohrmann 和 Enrico Olivelli 几位。上面提及的 Ted Dunning 早已开始攻读博士的时候,我还没出生。但是我在工程项目之中用到 ZooKeeper 的 multi 功能并提出疑问和改进想法的时候,也跟他有过一系列的探讨。
谈到技艺就会想起人,这也是 ASF 一直坚持核心理念带来的海外华人风气。
我跟徐亮同学在一年前认识,交流 The Apache Way 期间萌生出相互认同。徐亮老师在 Apache 孵化器之中帮助众多工程项目理解 The Apache Way 并予以实践,德高望重。在今年的 ASF Members 年会之中,徐亮同学也被推举为 ASF Board 的核心人物。
我跟吴晟同学在去年认识。他经常会强调开发者尤其是没有强烈公司背景的开发者的视角,多次提及这些开发者是整个开放源码生态的重要组成部分。他作为 PMC Chair 的 Apache SkyWalking 工程项目相信“没有下两个版本的计划,只知道会有下两个版本”,这是最佳实践的传播,也是伴随技术的文化经营理念的传播。SkyWalking 工程项目出于他们需要,也出于为开放源码世界添砖加瓦的动机创建的SkyWalking Eyes 工程项目,被广泛用在不止于 ASF 永古约省工程项目,而是整个开放源码世界的轻量级的应用软件协议审计和 License Header 检查上。
主要贡献在 Apache APISIX 的琚致远同学今年也被推选正式宣布成为 Apache Members 的核心人物。他最让我印象深刻的是在 APISIX 海外华人之中积极探讨海外华人建设的议题,和作为 APISIX 发布的 GSoC 工程项目的 mentor 帮助在校学生碰触开放源码,实践开放源码,锻炼技艺。巧合的是,他跟我年龄相同,于是我痛失 Youngest Apache Member 的噱头,哈哈。
或许,参与 Apache Community 是这样的一种新体验。并不是甚么复杂的叙事,只是找到志同道合的人做出好的应用软件。我希望能够为提升整个应用软件行业付出他们的努力,希望我(参与)制造的应用软件创造出更大的价值,这里的人看起来大都也有相似的想法,这很好。仅此而已。
原本还想聊聊 The Apache Way 的具体内容,还有介绍 Apache Incubator 这个保持 Apache Community 经营理念常青,完成代际传承的重要机制,但是到此为止似乎也很好。Apache Community 的故事和经验很难用一则该文讲完,这两个话题就留待以后再写吧。