Apache APISIX 的快速之旅(全文版)

引言

本周我们推出了 Podcast Episode #3: Apache APISIX 的快速孵化之旅(音频版),为了能够让更多的习惯于文字阅读的成员们熟悉我们的故事,特别推出了全文实录的文字版,请笑纳!

Apache APISIX 或 APISIX 在下文中均指称:Apache APISIX

正文

适兕主持人

Hello,大家好,欢迎来到ALC 北京 PodCast。这次我们请到的是 APISIX 的核心成员,请各位嘉宾跟我们听众打个招呼。

温铭

大家好,我是温铭,Apache APISIX的PPMC成员。我之前是在互联网公司工作了有10年,主要是在做安全方向,然后最近三年都是在做开源软件的商业化,也就是说我最近三年是全职做开源项目,非常庆幸今天有机会和大家一起聊聊 Apache APISIX,以及APISIX背后的一些故事。

王院生

大家好,我是王院生,我算是年纪比较大的一位了,05年毕业之后做了近10年的传统金融行业,在(20)14年之后进入互联网。在那一年认识了温铭,也开始做一些非常有意思的事情,从(20)15年开始做比较多的开源方面的事情,确实在做的过程中,开源、(过程很)开心让我是比较享受的。最近两三年也在尝试做一些开源方向的创业,正好跟大家一起来聊一聊我们在创业过程中的一些收获。

姜宁:

我叫姜宁,熟悉ALC Beijing Podcast 应该比较了解,我好像每次活动我都会在场,今天很高兴能跟同学们一起来聊聊,有关孵化以及后面创业商业化相关的一些事情。

适兕主持人

我们先从项目开始,目前来说, APISIX,它是什么样的状态?花简单几分钟时间介绍一下这个项目是干什么的。

温铭

Ok,我先来大概说一下APISIX是干什么的。简单的来说 Apache APISIX它是一个API网关,它可以帮你来处理南北向以及东西向的流量。如果不太熟悉网关的同学,就可以把APISIX简单的认为和Nginx做的是同样的事儿,只不过 Nginx是靠静态的配置文件来驱动的,你修改了任何配置的话,都是要reload服务才能生效的。 但是在APISIX里面,我们一直在强调的,它是一个动态的实时的这样的一个网关。你所有的修改包括路由、证书、以及这种限流限速以及插件的各种配置,它全都是动态的。 你可以非常容易的去修改它的内容,而不用去重载它的服务。简单来说它就可以帮你动态的管理流量。 APISIX 现在的状态, 它是在去年10月份的时候进入了Apache孵化器,到现在我们有7个多月的时间,我们发布了6个Apache release,差不多是每个月会发布1个 apache 的 release,在进入Apache之前我们只有20多个contributor,到现在我们82 个contributor, 20多个 committer, 所以我们的发展速度还是比较快的。不管是从社区的发布版本,以及我们吸收更多的贡献者,和我们对贡献者一些快速的认可,我觉得我们这方面速度都是比较快的。

王院生

我简单补充一点,在APISIX 之前其实也有一些API 网关,因为 API 网关实际上是一个非常成熟,并且是被大家了解了很久的一个概念的存在。是在2000年之前就在普及的一个概念,我们当时之所以要开发网关类产品并捐赠给 Apache, 是因为我们发现已有的网关并不适合云原生,结构也比较臃肿复杂、弹性伸缩支持不好,性能上也不能满足现在 IoT、5G微服务等低延迟、高并发的要求。基于以上考虑我们希望能做一个真正是社区化的,如Apache这样的组织,能够持久的做大家都需要的产品,所以我们发起了 APISIX 这个项目,我们当时发起这个项目的目标,要把它的性能、扩展性等方面做到一个极致。这是我们一开始的目标,现在来看我们距离这个目标越来越近。而且对 Apache 的文化也有了进一步的认识,尤其是多样性、多元化,是非常契合我们当时的愿景的。我们 PPMC 里面除了少数几位我们公司的,其余都是来自各个不同公司的,将近有20多家公司都在参与,这还只是committer部分,如果算上contributor的话,还有更多的人参与。

姜宁:

我这边有一个问题。去年差不多是这个时候,我们正好是在上海开OpenSource Summit,温铭找到我说有项目要捐给 Apache。我回过头来看的话,实际上你们从有点子然后进入Apache,到发展到现在这个程度,作为我接触过的Apache项目孵化来说,算是做的走的比较快的。 从最开始跟你接触的时候,感觉对开源其实已经有一些了解了,而且社区怎么玩其实是比较清楚的,以至于后面很多事情实际上你们都自己做了,我觉得我基本上没帮上什么忙。 所以反过来的话我就想问一下,作为发展的时间其实挺短的一个项目,但是比较成熟。我觉得和你自己背后的那些开源经验会有很大关系。以上是作为问题的铺垫,二位可以介绍一下这方面的经验,以便为后面的想加入到 Apache,参与到孵化项目的同学也能提供一些参考。

温铭

没错,其实我和院生做开源确实比较早,我可能会更早一些。我是07年毕业,当时去了金山毒霸,我所在的部分其实就有很多在开源社区的,基本上是从那个时候我就接触到开源社区,知道原来开源不只是可以贡献代码,比如说我们去组织一些活动,去翻译一些文档,写一些技术的文章,其实也是参与开源一个比较好的这样的入门的一种方式。所以当时我们算是种下了一个开源的种子。 然后在15年左右的时候,我们开始去做 Open Resty社区, 包括写电子书,当时并没有想到这个居然最终能做成一个社区。当时我们只是说我写一本电子书,方便我公司的同事能够更好的去学一门技术。我自己对后来的同学培训的时候,我也不用去给他讲很多的东西,让他直接看书就ok了。 我们所以当时算是无心插柳,就进入了Open Resty这个社区里面去,在这个过程中从零把社区给搭建起来,认识了很多不同公司的人。对,这个算是我们之前的一些积累,所以APISIX也不算是零启动。 虽然我们之前有了一个社区的热身,但是 Apache 和我之前参与其他社区,比如说Python的社区,Open Resty社区,给我的感觉是完全不一样的,因为在 Apache 里面其实并没有一个人是说了算的,比如说我和院生对 APISIX 贡献了很多的代码,但是这个社区并不是说我们两个就可以说我们要做这件事,或者说我们要做那件事,并没有一个独裁者的存在,这是我觉得我非常喜欢 Apache 一个很主要的原因。因为在里面其实大家都是平等,然后互相讨论问题的时候都是很友善的这种方式,所以我感觉就像程序员的 “桃花源” 的存在。 Apache 对我来说就像一个发现了非常美妙的地方。我很认同 Apache 的文化,比如说大家都投票,一人一票的去决定某一个事情,或者是说所有的事情都要在邮件列表里面公开讨论。在做一件事情之前,先要 discuss,然后再 Vote,都是异步的,还要等三天时间等等,可能国内的一些同学觉得不太适应,但是我觉得你如果经历过一些其它社区的痛的话,就非常能感觉到 Apache 的做法其实非常的好。Apache 给出了体现平等和自由的流程,而且是用基金会的形式帮你把这个东西固定下来。 我记得有一个Apache APISIX 的贡献者,我给他发 committer 邀请的时候,他问我的第一个问题是:我会不会因为有了 committer 的身份,后面就需要花更多的时间和精力在这个项目上面 ?我说其实是不用的,这个committer 是对你历史做的贡献的一个认可,不会对你后面有任何这种要求。 然后他第二个问的问题是:会不会因为我后面没有做贡献,committer 的身份就被取消掉**?**我说 Apache 里面的这种贡献是永久的,大家没有权利把你的 committer 的身份给拿掉,因为它是对你历史做的贡献的一个认可。 对,所以这两个问题其实也是很多国内做开源经常碰到的一个问题。我做的贡献会不会能够被公平的对待,我会不会因为背上我一些这种思想上的包袱,我觉得 Apache 在这方面会做得比较好。 我举得我蛮喜欢Apache文化的。

适兕主持人

温铭你刚才提的 committer 的问题,他是以公司的这种思维来思考ASF和Open Souce Community,我觉得相当典型。

温铭

他其实也一直在玩开源。也一直在给开源社区去贡献。但是从来没有说我突然给你一个官方的认可。

姜宁:

这块我可以补充一下,为什么Apache 有这样的要求或者这种practice,其实他更多的是你是以个人的身份参与进来。我们在签 CLA的同时,如果你是受雇于公司同时加入Apache的话,需要公司那边还要再签一个协议,就是说允许你在上班的时间也能给Apache这边做贡献,而且你做这些贡献是捐给Apache的,相当于是公司派你去给Apache打工,所以他后面的所有的任职都是以个人身份,这样就带来一个好处,如果这个人换公司的话,不会对他有什么太大的影响。 对我自己来说的话,我可能前前后后可能换了三四家公司,然后因为但都是在Apache这边,以前的话只是公司名发生变更,但我们 team 是整个就被收购来收购去,具体的工作内容没有变,但是 manager 那块的话,其实他们需要去签协议了,但跟我没有什么太大关系,我反正我大概知道是有这么一个过程,然后到华为为这块的时候其实也是一样的,就相当于我们也去签公司的CLA,我觉得这样的话相当于从法律框架上面把怎么说就变成“包产到户”了。 你做的所有的东西其实是一直可以存在的,也给了程序员一个机会,我们现在能看到做比较成功的一些项目,他们其实是在大的互联网公司创建这么一个原型,然后后面逐步的商业化,例如像Kylin,Kafka 这样的公司。这些创业公司其实也是基于一帮人,在大公司工作的过程当中做的这些事情变成开源项目,后面他们基于这些开源项目成立了商业公司。我觉得捐基金会可能也有好处,基本上是把IP这个事情理清,然后有一定的法律框架去保证这个东西,就是你做的事情和公司这个事情能有一个比较好的切割,然后保证这些项目能够持续不断的得到演进。 只要你愿意啊,以个人为单位的这种权力授予的话,是去保证你在任何时候都可以回来,而且之前刚刚温铭提到的就是你得到这个title,其实是和你以前做的工作有关。如果想维持你的 credit,或者想保证你在社区的影响力的话,其实你还是要持续不断的去做这个事情,不是说你做完了就到头了。但是我觉得这种积分或者这种对你认同的这种机制是保证了你做的这个事情是得到公平对待的,然后和你的雇佣状态是没有直接关系的。Apache就一直在坚持厂商中立的这么一个原则,尽量去避免这种商业影响,这一块做的还是比较好的。

王院生

我也有这方面感触,我说一些自己做开源社区的一些体会心得。我们在做 APISIX 之前就已经做了几年开源社区经营,他们之间确实有一些共性的东西,这让我们适应 Apache 文化确实比较容易。 我举几个小例子,比如说你怎么看待社区中的一些抱怨,这是永远都存在。你做一件事,不敢说你永远做的都是对的、完美的,比如说我使用体验不好或者安装很麻烦、文档写的不清晰等等这些问题。那么社区可能散发的是一种不友好、或者是一种不开心的状态,上次我们和Craig 聊的时候 ,Craig Russell 主席告诉我们:抱怨也是爱。没有无缘无故的抱怨,是因为喜欢想让他变得更好才会来抱怨,在你和一个人没有见过面,很多时候文字理解偶尔会有情绪传达偏差,社区管理者要永远往往好的方向想。 这个就是我们以前做开源的时候,得到的一些基本的东西。 开源项目的文档是非常重要的,对于国际化项目英文文档就更必不可少。我们从一开始就对 GIT 的提交记录、Github issue 等默认使用英文,这样对于所有社区爱好者,大家会有意识的保持前后一致使用英文贡献。偶尔会有一些 APISIX 会私信我,他说不好意思去写 ISSUE,为什么呢?是因为英文不好。所以一个项目,创始人从开源第一天是怎么想的,如何带队的,就非常重要。 这种影响其实是双向的,说一个比较有意思的事情,APISIX 可能是第一个外国朋友帮我们写中文文档的项目。这位贡献者来自奥地利的,在提交的 PR 中除了必要的英文文档他把中文文档也写好了。在我们进入 Apache 基金会开始孵化,无论是邮件还是 ISSUE ,我们基本没遇到大的坎,尤其是沟通语言上。 还有一个比较关键的点就是要引导社区在公共平台上交流,避免线下的单向联系,期望用户多到公共频道交流把知识沉淀下来的复用。非常推荐用大家去用邮件列表,但由于中国人的沟通习惯,很难说由一两个项目都把用户的沟通习惯改过来,需要多去引导。让这种公开讨论的习惯逐步养成,困难虽大,但确实非常值得。 有了之前对社区的经营积累,当我们再去适应 Apache 文化时,除了邮件讨论这块花费了一些时间外,其他都感觉到特别适应,甚至可以说是二次的强化。APISIX 之所以能够比较快的能够达到现在的状态,除了有贡献者比较多,参与公司比较多外,上面这些点也发挥了不少作用。

姜宁:

刚才正好院生说的这边可能习惯的力量还是挺大的,之前的 APISIX大部分的参与者是不是都有开源的一个经验,然后可能社区里面也形成了这样的习惯,导致于我们的做事方式可能也反过来去影响了老外,但这里面可能会有一个问题,你总会有从 0 开始的,可能最开始是你们两个温铭和院生你们两个,然后你后面怎么去扩展到让更多的人去接受这些习惯或者这些Best Practice?

王院生

这些习惯其实,我觉得所有的程序员,Ta在看你在用的东西,它首先都要有一个学习的过程,我觉得所有人都一样,比如说我给别人贡献,我都要先看看别人这些大致的什么样的习惯、方法,甚至包括提一些issue怎么提,已有的issue大概写成什么样子的, 我举个特别简单的一个例子,我前两天在使用 Tengine 我发现了问题,我准备给他提一个问题,打开它的 issue 列表全是中文,我就不动脑子直接写了中文。但是中文写完后,感觉不对还是默默的在下面又翻译了一个英文版本。如果项目一开始没给大家传达正确基本规矩,后面很难改。如果你想要成为一个国际化的项目,那么从第一行代码、第一个 issue 开始就要传达这方面的信号。这是我一个个人的理解。

姜宁:

其实跟coding style 或者是 code of conduct的这些就是可能最开始要把规矩立好。我自己经验如果我要去融入到别人的社区的话,也要 follow 别人的那些东西,但的确这个标杆是一个很大的问题。

王院生

是的。

姜宁

温铭你这块有啥需要补充的?

温铭

这块我和院生差不多。但是APISIX 它加入 Apache 之前并不是一个冷启动的一个状态,我们是在2019 年6月份开源,然后10月份进Apache 孵化器。 APISIX在疫情之前,它都会保持每个月有一个线下的 meetup,然后我们也会写一些宣传的文章,去讲我们这个项目,所以我们大部分的贡献者其实是通过这种包括线上文章的传播,然后线下的meetup这种形式,慢慢地启动起来的。等于说最开始是参与APISIX的一批人,等于说是被我和院生的之前在社区里面做的一些事情,然后觉得我可以他们之前做的还不错,然后他们新开了一个项目,我们可以去参与,差不多冷启动,是这样一个状态。 所以都是知道我们认识我们的这一批人,然后可能会先跳这个坑里面先看一看。

姜宁:

我这边问题是做启动的有什么好一点的经验可以分享给大家,因为我们可能后面也会有很多的项目开源,怎么去吸引人。

温铭

我觉得我上一次和Justin和Craig见面的时候,我当时和他们说了,我们现在想捐给Apache,然后他说我们现在的初始的PPMC的数量太少了。 我当时的疑问就是:我们现在的项目就只有20多个贡献者,而且很多的贡献就只是一个两个PR,我如果把这些人都邀请进入PPMC,我会有一些担心。比如我不知道他们的能力怎么样,后面会不会持续贡献,但是当时Justin和Craig给我的反馈,刷新了我的一个认知。他们说:“当你把他们邀请进来,如果他们同意加入进来,会不会贡献更多的commit?” 那么很大概率上他们会因为我邀请他进来会继续贡献,那么这个其实就够了。 committer,是对他历史贡献的荣誉,是一个称号,并不是一个在公司里面的是一个职位。对,所以我们为什么后面就很积极的去邀请一些贡献者,能够很快的升成committer或者PPMC,我们觉得我给了你这份荣誉和title,那么你会更积极的去回馈社区,这个就是我们的目的。 所以我觉得可能会需要这个项目的最开始的几个代码的贡献者的心态能够更open一些,自己去往后站,然后把更多的人给往前面去推,这个可能会比较重要。

姜宁:

之前第一期跟吴晟那边聊的时候,那里面就有一条适当往后退一退,然后特别是那种项目的创始人,大部分大家觉得都可能顶着有这种光环,但是你要让更多人能够成长起来,特别是这种新鲜血液,能够觉得他是项目很重要的组成部分,这块的话是会持续让他让能够贡献,然后我觉得因为我们之前跟Justin也聊得比较多,而且上次的话应该是9月份在上海的是一个 Apache 的meet up。对,那次我们正好是做华为的HC然后就正好把Justin和Craig请过来,然后我们就弄了一次meet up,还下着雨,我就赶着赶紧回去,然后你们还帮着招待一下,请他们吃烤鸭我记得。

王院生

对。看来烤鸭很管用。

姜宁:

而且我觉得因为我之前跟Justin聊的比较多,他是对这个Committer的门槛有比较多的想法,基本上尽量要把门槛降低一些,然后让更多人能够进来,(让更多的人有)committer的权限,我们并没有失去什么。 但是因为这个鼓励可能会让更多人能够更好的参与到开源来,为项目来做贡献。但这里面也不排除就是有些人为了打卡什么之类的,得到 committer 之后就消失,但这种人可能还是会比较少。 因为在社区里面更大的一个程度上,就是你的credit,你的 reputation,你的 influence 其实是靠你日常的这些工作赢来的,如果你不做这些工作的话,可能这些东西就会慢慢的离你而去,然后你也就会淡出了。 如果你持续来做这件事情的话,你的 credit 是在不断的在增加,我觉得这可能也是我愿意拉着一票人的搞 ALC Beijing 的一个很重要的原因,然后我发现现在我做mentor,我感觉我没有之前的那么强的动力是因为是觉得现在已经有很多人起来了,然后我觉得我可能要做一项更有意思的事情。就是项目带动更多的项目来,因为其实 Mentor 的工作这块,我们就常用就是那几板斧,我觉得你们其实已经玩得都很顺了,我也希望你们毕业之后,院生、 温铭,我觉得还是挺希望你们能够帮助其他的这些,然后把你们的这些成功经验继续传递过去,这几板斧我还是以有些作用的。 只不过我现在觉得,我们社区还有很多没有做到的事情,比如我们能让更多的项目能够合作起来,把我们开源这些理念,这些好的 practice 能让更多人知道,这也是我们找大家聊一聊的一个很重要的原因,把大家做项目的一些心得传递给大家。我觉得你们的项目为什么能发展得这么快,然后孵化效果又这么好的一个很重要的原因,也是因为你们前期的铺垫工作真的是做的比较好,因为你之前在社区里面做的那些影响力带动了一票人,然后这些这票人又过来来支持 APISIX就这块可能是比较好的。 另外一点的话我想问一下,因为我们能看到 APISIX也有很多以英语母语的这些开发者,不同母语的开发者就是他们有什么样不同?

温铭

我这边看到 Apache APISIX 有一些在欧盟的贡献者,他们应该都是学生,他们会对开源项目,对APISIX会问很多问题,不管是在github的issue里面,或者是在邮件列表,甚至他们也会经常发邮件私信发给我会问很多问题,比如说APISIX的功能点为什么要做,然后它的某一个技术点具体是怎么实现的?如果我要实现这个功能,我应该怎么去做然后呢,他还会把自己的一些看法很详细的给你列出来。 所以我觉得这些都是能够接触到的形成正向反馈的这样的一些事情。而我接触到了其他的一些贡献者,比如说讲中文的一些贡献者,他可能更多的会是直接就给你提一个pr上来,或者直接来一个 issue 说我这个地方出了问题,而很少会去给你去详细的描述一下他这个问题的原因,或者是给出一两个解决方案。

姜宁:

这个是我觉得可能不太一样的一些点。贡献者里面是学生的,也大部分是一些英语的这种贡献者会居多一些。这个可能会有一个现在我们想向学校扩展,因为Apache在国内,在学生团体里面就是他的影响力还是有的,只不过大家还不知道怎么参与到项目中来。一般来说我们借助google Summer of code,还有编程之夏这些活动来让大家深入参与到开源项目中来。对,你这边应该也有人报名编程之夏的活动。

温铭

简单说一下情况。暑期 2020 是中科院软件所主办的,我们现在报名的有两个同学,都是大二的学生。他们其实有一个是之前就已经参与了APISIX前端的一些开发,已经给APISIX提了一些pr。另外一个完全从他们的学校的宣传里面知道了APISIX这个项目,然后参与进来的。

姜宁:

好像另外我可能也认识,可能也是ALC北京的一个志愿是吗? 二夕, 因为我订的邮件我大概能知道,我能看到他在那发邮件。对。我觉得可能真的是会有这种reference,他在这块晃一晃,然后在其他地方晃一晃。因为我记得上次播客的时候,我们有一个例子,好像也成功“安利”了一个 ShardingSphere 的 committer,这个人是在知乎上面去问问题,然后说贡献什么样的开源项目会比较好,然后我就在知乎上跟他说了一下,你可以看一看ShardingSphere,然后就成功把他“安利” 成committer的了。我觉得这个其实是挺有意思的一件事情,而且我觉得是可以拿去吹一下牛的,就怎么让大家的入坑。

适兕主持人

温铭,我正好我们的用户发现很多啊, 这个短短的一年,而且还有半年疫情期间,你怎么做到?我看见用户还不仅是一些互联网公司,还有一些传统的公司。

温铭

对,其实是这样的,我刚才有提到APISIX在疫情之前,每个月都有一个线下的Meetup,通过线下,其实我们能够和用户能够面对面的去聊,这样的话其实比线上沟通的效率会更高一些,这是一个方面。 第二个方面是APISIX它的底层是基于Ngnix+Lua,然后这个技术站去做的。而我和院生之前做开源社区的几年都是在Ngnix+Lua这个技术栈架构上去做的社区,所以我们能够比如说APISIX发一个版本,然后我们写了一篇文章,我都能够很快地触及到技术站里面的大部分的开发人员,这个可能是其他开源社区没有的一种优势。 然后另外一点,APISIX是个开源项目,但是我和院生也会基于APISIX做一些商业化的版本,我们会基于它做一个开源的商业公司,所以我们也会去去找自己的这些渠道,去把开源项目推到更多的像传统的公司里面去,去尝试去解决他遇到的一些痛点和问题。 其实我们是有多个渠道去推广项目的。

适兕主持人

APISIX的现在网上网站上公布的用户, GitHub 仓库列出来的,是你们努力推广的结果。

温铭

是这样子,我们在 github上面有一个issue,然后issue就是说你正在用的话,你可以把你的公司名,然后你的联系方式,你的使用场景写在Github的issue上面,给大家参考。然后所以我列出来的那些都是从issue里面给拿出来的一些公开的信息。

姜宁:

对,我觉得你这块是这种方式会比较好,让用户主动的去说这件事情,因为以前我们维护的Apache项目的话,基本上都是在邮件列表里面,可能某个人他有公司的邮箱,问了一个问题之后,我们可能才能推断哪一个公司做了这个事情,但我们其实原来也没有专门去列用户墙这么一件事情,是不是这种原因?

适兕主持人

就说原来是我们分邮件列表的一个列表,然后Developer出一个列表,然后就没有去跟他们这样一种issue去贴一个标签,或者这是专门是放有事 use case,有这个原因吗?

姜宁:

以前的项目的宣传可能完全是靠口碑,你要想在一年的时间内打开市场的话,其实还是比较难的,我觉得 APISIX相对来说给了我们一个比较好的启发,我们可以借力打力,在一个成熟的社区,为我们的(新项目)做一些导流的事情。其实最难的是要找到你项目对口的那些用户还有开发者,社区其实是建立可能是需要一段时间的,但如果你能直接找到你的目标用户的话,我觉得前期其实温铭那边,它有公众号,然后还有一个是加了微信,然后你基本上能知道你们又在做meetup,而且哪些meetup基本上是到用户现场,要么就大厂,要么其实可能是一个用的比较多的用户的场景里面去。 我记得好像有公司去赞助吧, 就是Meetup,你们简单说一说,因为我们可能 ALC 北京可能后续等疫情好一些的话,我们也会做一些Meetup,你们 Meetup 这方面的经验可能对我们会有一些帮助。

温铭

Meetup我们去年是一直和又拍云一起来合作的。因为我们当时没钱,等于说是又拍云出现场地费之类的,会Cover费用这一块,然后我们通过我们的社区去找一些当地的讲师出来。 关于话题的话,我们其实并不限定在 Open Resty 这里面,我们比如说讲Nginx,讲 Kong ,讲微服务的等等。它其实都是围绕着一个大的主题,比如说云原生,微服务,网络之类的。围绕着比较大的一个主题,大家还是比较愿意来听的。其实我们这边也一样,如Apache是一家慈善组织,也没有钱给你做这种活动,类似meetup的费用之类的,更多的需要的是在金钱上资助的一家厂商,这样会好些,公司也可以导入一些新鲜的血液进来。

适兕主持人

我正好有一个感慨,就说其实是我们在线上的这种协作,其实是是现实当中的一个增强。不知道在座的几位有没有什么新的看法,就是我听温铭的故事,我觉得线下更为重要一些,就是说面对面的交流,然后去推广自己的用户和潜在的开发者,交流更加的充分,也更能获得信任。是不是这样子?

温铭

你如果是站在开源项目的角度来说,线上和线下的区别不是很大。但是在线下的一个好处就是你能沟通的更充分,比如说有些问题他可能在线上不太方便问你,或者是觉得表达的不是很清楚,那么在线下的时候他就可以拉着你面对面的去聊,会聊得更透彻一些。我觉得可能会是这样一种大家能够没有顾虑的去聊一些事。

王院生

我稍微展开一下,我们经常会遇到类似问题。当时是四川成都的一个开源用户做调研,起 、初他决定使用 APISIX,后来他放弃了,放弃的原因他在网上留言一笔带过,然后我也就理解他留下的文字内容。但实际上当我跟他见了面后,才发现真正的原因与文字内容相距甚远。很多时候只能面对面沟通后,才能够把他的真实情况表达完整,线上交流比较容易出现理解偏差,不是所有人都有清晰的表达能力。 貌似中国人的害羞是与生俱来的,做社区会特别能够感受这一点,很多用户都特别喜欢单聊,为什么?因为他单聊他不害怕跟你说错话,说错了也无所谓,因为只有你一个人看到了。但是他如果在群里边聊,如果问了一个很特别特别小白的问题,他就会觉得自己丢面,然后所有的人面前他都觉得没有没面子,所以就喜欢单聊。但是你在线下的时候往往就不太一样,因为他可能当时脑子又没那么快没转过来,又着急的一个问题,能把他所有问题都都给抛出来了。我们与我们的商业客户沟通,也有类似的问题,这个应该就是线下沟通的独有优势,他确实跟线上有一些不一样。 刚刚你有一点说的我很认同,就是说是谁更合适或者哪个更好,其实这个很难说,我们现在也不敢说是不是线上的一定比线下好,但是他们两个的相互结合肯定更好。由于沟通方式很不一样,也能够从对应的角度看出不同问题。比如线上交流可能更多暴露的是文档问题,如果用户犯错,大概率是文档没写清楚,这时发现后,就要去新建 issue 或更新文档了。

温铭

线上私聊的我基本上都不回。即使回也是让他到GitHub开个issue之类的,但是线下私聊可能会和他聊两句,但是线上就是QQ单独找我的,院生可能会回,我基本上都不会回。

姜宁:

以前也有好多人跟我单独发邮件,说找我要demo或者什么的,我觉得回了就没有什么价值的,我也是往那边推,然后我还有一个是说是你要给我单独付咨询费吗? 对,这里面其实有一件事情跟创业有关,因为我以前接触到的聊着很多国内的开发者,然后很多时候他们可能也会存在潜在的这种商业支持,但是感觉他们不是 decision maker,其实这一块我不知道对APISIX这块有没有什么影响?

温铭

确实在做to b的话,特别因为APISIX是最终如果有用户买单的话,他是有一个走to b的这种决策链儿,一般去问你问题的,一般都是对一些具体的开发人员,他一般没有这种决策的权限,所以如果我们觉得他可能会是一个潜在的付费用户,我们就会问你们现在是处于一个什么阶段?是属于一个互联网公司,自己去玩玩,还是会是一个传统的公司,现在在去选型,可能我们会做一些这种筛选之类的。 确实to,b的,比如说我们已经有了一些付费的用户,其实他的决策链都是要在半年以上的,都是会比较长。

姜宁:

其实是如果要维护客户关系的话,其实你额外的还需要做一些。并不是说跟那个人聊嗨了就签了,有没有成功的案例?

温铭

这还比较远,因为和我们能聊嗨的都没有决策权。因为有决策权其实可能对技术的理解,就是它不只是站在技术层面去考虑问题了。

姜宁:

你觉得对你来说或者对现在的公司来说的话,你做的那些meetup或者发展的这些开发者,然后反过来对你的商业成功会有多大的帮助?

温铭

其实帮助还是挺大的。因为APISIX真正去开源,然后成熟能够在生产上用,其实也就是不到一年左右的时间。 但是通过比如说开源社区的,我们做meetup,我们做开源项目的一些传播,能够让更多的人知道APISIX。后面要做网关,去处理南北向、东西向的流量,我会有一个更好的选择,可以把 APISIX 放到他考察的列表里面去。 我们现在主要是在做这一步,因为最终去做选型,做选型对比的还是具体的开发去做,我们现在至少能够从下往上这样的,去先把具体的开发人员能够影响到。

姜宁:

其实这块我以前经验的时候,我们有接触到很多开发,但是中间我觉得可能就是商业的支持。因为那时候我们在红帽,然后其实我们在红帽的国内的支持力度其实并没有那么大,导致于其实如果我要去创业的时候,其实会有一些问题,那条路我们不清楚会是怎么样的,而且特别在国内体制里面的话,你这个公司能进到人家的采购目录里面,你可能国内很少有那种咨询公司能去搞这种事情,现在这块情况有没有好转?

温铭

如果是一些央企或者一些政府的话,确实还是一样有这个问题。其实你的资质什么的都没有,没法去纳入他的供应商的采购目录里边去,你根本连招标的资格都没有。 像一些互联网公司或者是一些那种流量比较大的一些传统行业公司,其实他们对技术这一块,比如说他们会有一些创新项目的招标,或者是一些比如说他们会为类似于云原生,微服务、分布式数据库,类似这种比较新的技术会单独去开一些绿灯,它会让一些之前没有办法满足它招标的这样一些公司的产品也可以进到里边来。

姜宁:

我觉得可能和现在提的这种自主创新或者是并不是简单的去采购,因为以前选的话,我记得10年前的话可能就 IBM,反正你要有钱的话,你就买IBM就没有错了,反正有的给你背锅,IBM都解决不了的问题,世界上应该没有其他公司能解决了。现阶段的话你选IBM可能就并不能完全达到解决问题的目的,你自己有没有尝试去解决这样的问题,我觉得小一点咨询公司或者创新型的科技公司的话,反而是不是机会就多一些了?

温铭

我觉得应该是的,因为其实现在技术发展得很快,一般的话比如说一个技术的问题,现在的开发看到的第一个点,就是说这个东西我能不能用开源的方案给解决掉,而不是说我买一整套商业公司的产品。

姜宁:

因为可能大家会有更多的拿工具拿开源去解决他实际问题,到这个时候的话,开源项目的背后的公司可能就它的价值就体现出来了,

温铭

对,至少我们是原厂的。

适兕主持人

我是根据刚才线上线下的差别,然后引申出一个问题,就是说我记得你在去年的COSCon, 开源社组织的大会有一个分享,怎么玩基金会,从你是一个基金会的发起者或者是整个的创造者,然后最后加入ASF这么一个过程,你对比你能给说一下一些感慨。

温铭

软件基金会其实有很多类,像asf —— Apache 基金会,它是个人会员参加的,像Linux基金会其实是企业会员参加的,所以 Linux基金会就特别有钱。 而我们之前做的 Open Resty 基金会,其实我们也是希望做成一个 Apache 式的这样的一个基金会,个人参加,然后我们去用个人之前的一些开源上的一些经验去能够孵化一些项目出来,这是我们当时的一个初衷。 但是最后基金会只是说我们接受了老罗,锤子科技的一些捐款,但是并没有真的像我们想的一样去做一些孵化的项目,我觉得其中可能的问题是因为你没有办法去建立一个像 Apache 基金会的那种大家都能公平参与,没有门槛,没有独裁者的这种环境,这其实是比较困难的。 当时的 OpenResty 其实是以中国人为主,大家都不愿意退后一步,这是我们当时没有想到的一点,往后退一步对大家的要求实在是太高了。 有一种声音,说中国也应该要建自己的软件基金会。其实我觉得不太确定它是一个能不能真的去孵化出来一些世界级的项目,但是我觉得在建立自己的这种基金会之前,更应该参与到其他的开源项目上面去。比如说参与 Apache 基金会,参与Linux基金会这种成熟的基金会,在里面去把更多国内的开源项目放到里面,孵化出更多好项目,其实我觉得可能会是一个更好的选择。

王院生

这块跟你想法是一样的,我可能唯一要说在接触 Apache 文化之前,当时Justin说我们要往后退一步,然后通过人进来的时候,其实刚开始我也确实是犯嘀咕的,有些犹豫。但是从我们真正去落地实施之后的结果,其实本身我之前完全是想多了,因为等于说我没有在放下之前,我总觉得比如说在这个是我跟温铭或者少数几个人写的,我就觉得他可能就是我的孩子会有这种情节在里面,当实际上你放开了以后,其实它依然是依然还是你看他是宝贝,你永远看他是宝贝。

温铭

有一点不一样,我记得我当时进 Apache 孵化器,我不记得是谁和我说过,说你进入孵化器就意味着一个重要的选择,这个项目可能是你一辈子的开源项目,但是他并不是你的,你知道吗? 就是从所属权上来说它不是你的,但是你对他的这种情节其实可能会更深一些,因为会有更多的人参与进来,更多的公司在用,这个其实才是创办这个项目最有意义的一个点。

适兕主持人

我想问一个可能跟你们的未来有关,就是说因为我们做的比较专和精,在现在微服务现在整个的软件架构里边分得很细,你打算未来的跟这种后边的生态,包括跟其他开源的community或者是项目,你们对其他的相互支撑这种比如像 Kubernetes 等等这些项目你们是怎么考虑的?

温铭

APISIX 现在已经对 Apache SkyWalking、Zipkin等进行了插件支持,因为APISIX 其实是一个流量入口,他天生的就需要和其他的一些开源项目去做一些配合,然后它才能自己变的,其生态才能会更好一些。 所以我们后面比如说我们会支持像Apache Dubbo,然后还有像腾讯 TARS 之类这种在微服务里面经常会用到的一些 RPC 的框架,会和他们去做一些对接。我们现在支持 Kafka,以及Apache 基金会的另外一个类似的项目,Pulsar。 还有云原生和k8s,APISIX 本来就叫做云原生的网关,我们会天生希望支持K8s这样的项目,比如说我们希望有基于APISIX的 K8S 的控制器,其实社区已经有一部分实现了。 说到 k8s 今天还有一个同学在邮件里面发邮件,他希望去贡献 Helm Charts 的一些APISIX的一些支持,也是希望能够把APISIX 更好的在k8s的环境上面给跑起来。这些生态我们会做一些。 经常有人会问,APISIX 为什么要把它的性能做得特别的好?对于API 网关的场景来说,其实不用把它的性能做到这么好,我们现在的性能已经做到和原生的 nginx 的性能是差不多的,甚至在某一些场景下,我们的性能比nginx性能还要好。 为什么我们要以性能在主打了呢?其实我们不只是想把 API 网关这层面给吃掉,我们其实更希望的是 APISIX 后面能够把自己扩展到 k8s的网络层,所有七层流量都通过 APISIX 来处理,这个可能就是一个比较大的比较长远的这样一个计划。

姜宁:

我刚才听到实际上因为 APISIX 其实也在跟其他项目在做合作,你觉得有什么困难的地方吗?或者是 ALC 北京能帮帮着做什么样的事情?

温铭

我觉得可能是我们的扩展的这种东西越多,越能感觉到自己不懂的东西太多了。 比如 Kafka 插件,是奥地利的一个 contributor 贡献的。如果让我自己从头写的话,我可能要花很长时间才能写出来。比如要对接Dubbo、pulsar等更多的项目,其实对我来说就是一个完全全新的领域,可能我需要那边的同学来给我大概的去讲解一下,可能我才能会比较好的去上手,或者他愿意贡献回来。就像吴晟去贡献了Nginx 的 Lua 库,如果没有那个库,我是没有办法在 Apache APISIX 里面对Skywalking 做支持的。 我们希望能够有这种更多的一些其他社区的贡献者,然后能够了解APISIX,然后把它们对应社区的功能,反哺回来,可能比我自己去了解他再自己写这种效率会更高一些。

姜宁:

Meetup这一块你可能可以去谈一些点子,我觉得更多的后面可能办一些类似于Hackthon的活动,因为在ApacheCon举办的前面三天,有一个是叫Hackthon的活动。 这个活动就是一票人说互相坐在那聊聊之后,有可能代码就写出来了,我觉得我们可以试图后面去搞搞这一活动。

温铭

对,其实难度也不是很大。

姜宁:

其实就互相把大家把接口说一说,然后把原理聊一聊,然后可能就会非常高效的(开发),因为当时我参加过一次大概做了有两天,正好那段时间正好是iPhone刚开始发的时候,我都不知道iPhone到底咋样,我就看到有几个人去买了,但是我就坐在那,我觉得那两天效率好高,写了好多东西。

适兕主持人

温铭和院生,你们俩还有什么需要去跟我们的听众去要说的?

温铭

希望有更多的中国的项目能够去进入 Apache 孵化器,然后我们也很愿意提供这种帮助。

姜宁:

你们作为过来人,下一棒就交给你们了。

(一阵欢笑)

在最初做的时候我们除了希望为大家能够容易使用好的软件作品,其实也是想减少社会冗余开发。如果大家都在做相同的事情,就有必要把它给公共化出来,这样也就容易释放社会资源,

姜宁**:

让我们有空去攻克一些更个性或有深度的工作,帮助提升整个社会的运转效率,

王院生

开源的本质也如此。而且很多大企业它也在考虑一个被锁定、退路问题,开源就是一个非常好的解决方法,而且他对个人的成长,无论是技术、朋友圈、眼界等,都是一个非常好的提升方式。 你不进来,永远体会不到,进来之后,哇,原来是这么一个好的、新的世界。

适兕

我觉得今天你们是作为过来人,总结的太棒了各位。感谢各位。我们今天就到这里。