从 0 到 1:Apache APISIX 的 Apache 之路

2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,本次活动,邀请了来自Apache APISIX、又拍云、腾讯云、HelloTalk 等企业的技术专家,分享网关和高性能服务的实战经验。Apache APISIX PPMC 温铭作了题为《Apache APISIX 的 Apache 之路》的分享。html

温铭,深圳支流科技创始人,Apache APISIX PPMC,《OpenResty 从入门到实战》专栏做者,创业以前在互联网安全公司工做了 10 年,主要从事服务端的开发和架构,负责开发过木马云查杀、反钓鱼系统和企业安全产品。曾在奇虎 360 担任架构师,开源委员会发起人、委员。支流科技是一家开源底层技术初创公司,致力于微服务相关技术的创新和实现。安全

如下是分享全文:微信

Apache APISIX 是一个很年轻的项目,今年 6 月份开源,7 月份加入到 CNCF 全景图,10 月份进入 Apache 孵化器,因此我会和你们分享一下 APISIX 是如何从 0 到 1,进入 Apache 孵化器的。架构

Apache APISIX 如今有 17 个 committer,分别来自 16 家不一样的公司,是一个很是社区化的项目。每一个 committer 有一票,决定版本的发布、选举新的 committer 和 PPMC 等比较重大的事情。微服务

Apache Way

Apache Way 是你们都比较熟悉的概念:社区大于代码。烂代码能够改,Apache 的导师并不会指导你怎么写出更高水平的代码,他们更关心的是社区是否在健康的发展,只要有一个好的社区,烂代码必定会有更高水平的人进行重构,变成更好的代码。因此只要社区在,那这个项目就可以一直存活下去,这在 Apache 是最重要的。性能

邮件列表优先是另外一个重要的点,没有在邮件列表中出现过的,就当作不存在。这在中国实际上是一个很是大的挑战,你们在文化上和习惯上都不太喜欢用邮件:第一是时间不够及时,可能发一封邮件后隔 1-2 天才能收到回复;第二是邮件列表的不少东西是公开的,有些人喜欢私聊;第三邮件列表里面只能出现英文,但其实中国人的英文是不差的,咱们比大部分其余国家的人的英语已经好不少了,毕竟咱们学了不少年英语,还有各类翻译的软件,即便出现语法错误,都不是大问题。翻译

第三是精英治理,在 Apache 社区中你们用贡献来得到更多的话语权,更高的 title 意味着更多的付出和责任。视频

第四是民主,全部人均可以参与 Apache 的投票,即便你不在 Apache 社区,但不是全部人的票都是有效的。好比 APISIX 当时进 Apache 孵化器的时候须要投票,我也能够投支持票,但后面要写 no binding,表示我支持并关注这个项目,但我是一个观察员的身份,但这一票对于项目可否进 Apache 是没有决定性的。只有对孵化器作了贡献并获得社区承认的人,即 Apache 孵化器的 PMC,他们的票才是有效的,这就是 Apache 社区的民主。htm

开源社区的治理模式

咱们知道不少开源项目有一些是在基金会下面,有一些则不是。在基金会下面的项目,好比 Linux 基金会、Apache 基金会,他们的治理模式叫作“社区共识”,须要先在社区内讨论,在达成一个共识后进行投票,而非直接投票。若是直接投票,没有前面的讨论和共识,那这个投票是没有意义的。这个效率可能会很慢,但只有整个社区达成共识,后面才没有异议。项目管理

第二种是商业公司共识,只要商业公司的人达成共识,那么这个 PR 或者 feature 就能够被合并,而社区的人说话是没有用的,由于它是被商业公司控制的一个项目,而若是你给商业公司贡献代码,可否被合并决定权在商业公司手里。这对于我的开发者可能无所谓,可是对于参与项目的企业则是有所谓的,一般企业会有私有版本,企业想把本身的 feature 贡献回社区,但商业公司可能由于这个东西和本身的商业版本冲突,就会拒绝掉。

第三种是仁慈的独裁者,最典型的就是 Python,我的决定着开源项目的发展。

上述是开源社区的三种模式,若是是企业选择项目,通常的咱们会推荐 Apache、Linux 基金会的项目,它首先在法律上是没有隐患的,其次它是一个社区共识,咱们能够经过向社区贡献这种方式得到更多的话语权,这样就造成了一个良性的循环。

如何进入 Apache 孵化器

Apache 如今有接近 50 个孵化器的项目,其中来自中国的有 10 个,APISIX 是如今国内惟一一个由创业公司进入 Apache 的项目,其余不少是来自华为、阿里、百度等大公司的项目。

一个项目要想进入 Apache 孵化器,须要明白如下名词和步骤:

  • Champion:他是你项目的引荐人,这是你首先要去联系到的最重要的角色,他须要熟悉你以及这个项目。
  • Mentor:项目的导师,在项目进入 Apache 孵化器以后,Champion 就转换成导师的角色,一个项目至少须要 1 个 Champion,2 个 Mentor,因此至少须要找到 3 个合适的人选。Mentor 会指导项目怎么从孵化器里边的一个项目,一步一步地成长为 Apache 的顶级项目,这其中包括发布 Apache 版本、品牌管理、壮大社区等。若是变成了顶级项目,那么这个项目之后就是社区自治了。
  • Proposal:找到 Champion 和 Mentor 以后,下一步须要写一个 Proposal,即一个提案,介绍我是谁,解决了什么问题,为何要加入 Apache,项目如今的代码文件有没有和 Apache license 冲突的地方,初始的 committer 有哪些人、来自哪些公司,有没有什么潜在的风险,后面要如何发展等。
  • Discuss:接着会发起一个讨论的邮件,看有多少人对这个感兴趣,这个阶段也能够找到一些有兴趣的 PMC 来加入 Mentor 指导项目。
  • Vote:最后是投票,投票经过,项目就能够进入 Apache 孵化器了。

Apache Way 和国内开源文化的冲突
国内的 Apache 项目会遇到不少不同的挑战,这和国内外的开源环境和文化有关系。

好比国内的工程师会以为太忙,常常 996 加班,因此没有时间和精力去作开源。但其实很多工程师在工做中也会使用到开源项目,写过开源项目的 feature,可是他们并不会主动提交 PR,也不会在写代码以前在社区内发起讨论,这就是不少文化上不一样的地方。

沟通方式上,Apache 提倡的是在邮件列表中公开讨论,可是国内的不少开发者更喜欢微信、QQ、电话等非公开的方式来沟通。特别是若是一个项目的 PPMC 大都来自同一家公司,那么可能开早会的时候就把一个功能敲定了,但在邮件列表里也没有出现,这就不符合 Apache 的文化。

关于投票,不少开发者可能以为本身英语很差或者人微言轻,不太愿意在邮件列表中发表本身的意见,也不参与投票,那么最终他就会被忽略掉。因此你须要积累一些”功绩“,去帮助别人,慢慢地增长本身的影响力。Apache 是一个由我的组成的基金会,每一个人的行为都只表明本身,不表明公司,每一个PMC 的一票都是对等的。

关于 Title,在 Apache 里,最高的职位叫作 Apache 基金会主席,每一个项目的管理者是 VP,而后是 PMC(项目管理员会)、 Committer、 Contributor ,他有一个相似于咱们企业内职称晋级的通道。可是在 Apache里,即便你的职位变得很高,也并不意味着拥有更多的投票权,更多的是义务,好比对于 Apache APISIX 选举新的 committer 的投票而言,孵化器主席的票和个人票是同样的。Title 在 Apache 里面更多的是一种荣誉,由于 Apache 基金会是一个非营利组织,它强调的是贡献,这就是文化上的冲突。

版权问题

版权是一个很是重要的问题,前段时间发生的 Nginx 做者被抓就是由于版权问题。一个项目在正式加入 Apache 孵化器以前,全部 committer 和公司都要签署 CLA,说明将这个项目的版权,所有捐给 Apache 基金会。加入 Apache 孵化器以后,最重要的里程碑就是发布第一个 Apache 的 Release,这个版本就是要理清 license 上的风险,让用户能够放心的使用。因此,商业公司使用 Apache 的项目是有保障的,不会涉及到版权不清晰的问题。

最后,Apache APISIX 是一个正在快速发展的开源项目,但愿你们多多参与和贡献,多谢。

演讲PPT下载及视频观看:

基于 Apache APISIX 的下一代微服务架构

相关文章
相关标签/搜索