内容来源:2021 年 6 月 5 日,由 SegmentFault 思否主办的 2021 中国开发者生态峰会圆满落幕。会上,支流科技CEO,Apache APISIX PMC Chair 温铭发表了主题为《Apache APISIX 的社区运营和商业化探索》的演讲。

分享嘉宾:温铭,支流科技CEO,Apache APISIX PMC Chair

速记整理及发布:SegmentFault 思否编辑部

image.png

我是温铭,来自 Apache APISIX 社区,我和鹏飞的内容其实有些类似,我们都是基于一个 global 的一个开源项目,也都会在上面做商业化的一些尝试。我们也都是从 0 到 1,但我们不太一样的地方是,他有青云,有在背后的资源,我们什么都没有,刚开始做的时候就只有两个人,一分钱没有。

我们是怎么把这个项目从 0 到 1 做起来的?做到 Apache ,做成一个商业公司,然后做成一个几十人的一个商业公司,并且有商业客户。所以我今天会分享一下我们自己的一些心得。

首先,自我介绍一下,我是 Apache 基金会的 member。Apache 基金会比较特别的点在于它和 CNCF 不一样,它是从 contributor 贡献的代码比较多,然后你就由写权限,就会成为了 Apache 的 commiter。commiter之后,你再继续地贡献、参与社区,就会成为 PMC 的 member。PMC 就是项目管理委员会,这时候你就可以投票、选举,成为 PMC member 之后再往上升就是 PMC Chair(主席)。Apache 基金会有300多个top level project,就有300 多个 PMC 的 vp,也就是 PMC chair。全球大概有 700 多个 Apache 的 member,中国有 30 多个 Apache member,成为 member 之后,就可以选董事会成员。

像吴晟今天分享的,吴晟就是 Apache 基金会九个董事会的成员之一。我自己是 APISIX 的 PMC 主席、Apache 的 member、skywalking 的 commitor,也是 k8s 的 member,这些头衔都是需要你用代码、你对开源社区 pr 的贡献赢得的。今天很多分享的人都是社区的运营,是 marketing 的人,或者是 community 的,但我其实是一个 developer。

关于支流科技

我们在 19 年的时候成立了商业公司,叫支流科技,我们会做 APISIX 的商业化。

支流科技,是我们在 2019 年的时候是一家成立的商业公司,我们会基于一些 APISIX 做商业化,我们现在产品线,包括网关,k8s 的 ingrass,还有我们的服务网格,其实它都是在云源生下面和用户的四层七层流量相关的一些产品,这三条产品线是连在一起的。

差不多在去年我们拿了几轮的融资,现在的员工,全是 remote,我们有 20 多个员工,大家分布在三个国家,十二个城市。我们通过类似于 Slack,腾讯会议,Jira ,GitHub 等这些东西把大家串起来。

所以这其实是一个在中国有一点硅谷范儿的科技公司,我们现在所有的人,除了行政的同学之外,所有的人都是 developer 的背景。可以看到我们和各个基金会的关系,我们是中国唯一一个由初创公司捐献给 Apache 基金会的项目,然后我们是 CNCF 全景图里面 API 网关里面唯一一个中国的项目,同时我们也是 Linux 微服务 TARS 基金会创始成员,TARS 基金会是腾讯发起的一个微服务基金会,所以我们和全球三大基金会都会有一些关联。

这是我们的团队,除了我之外还有一个小伙伴 Yuansheng Wang,我们两个在小黑屋里面写了一年多的代码。然后头哥 (Yeliang Wang),混中国技术圈就知道头哥在负责我们的 BD 和产品。

image.png

Apache APISIX 的社区运营

大概说一下什么是 APISIX,因为很多人其实不知道 APISIX 是什么,也有非常多的人问我们:为什么叫这个名字,因为它其实不是一个单词,是我们生造的一个词 APISIX,我们是做 API 的,API 是一个非常重要的东西,我们现在用到的所有互联网的服务,所有云的服务都是通过 API 暴露出来的。所以 API 是一个非常重要的东西,我们希望让用户把 API 管理的很高效很安全,所以我们选了SIX,然后我们的企业版叫 seven,因为 six 在中国是一个幸运数字,seven 在国外是一个幸运数字。

我们在 2019 年 10 月份的时候进了 Apache Incubator,20 年 7 月份的时候毕业,用了非常短的时间成为 TLP(top level project)。在这个过程当中,我们每个月发一个版本,在刚进入 Apache 的时候,我们只有 20 个comtributor,现在我们已经有 250 个 comtributor。我们只花了一年多的时间,comtributor 的数量就增长了十几倍。

像刚才鹏飞说的,我们做了一个小的开源工具吧,这个开源工具的目的呢就是看开源项目贡献者的一个增长曲线,因为现在非常多的人在做开源项目,那么怎么去评价一个开源项目?有的人看 star,有的人看 comtributor 有的人看 issue,有的人看 pr ,有的人看和同类的一些项目对比的一些功能或者性能。

但是对我们来说呢,不管是开源项目,还是一家公司,它最核心的都是人,所以我觉得只要看人就可以了。比如说你的开源项目到底有多少全球最牛的人在用,在给你贡献。有多少非常大的 logo 的公司在用你公司的产品,其实就看这个就行了。

商业上,哪些大logo的公司用了你的产品?有哪些顶级的人在用?有多少全球不同的地区的人贡献了你的开源项目,了解这个就 ok 了,star 数没有意义。

这是APISIX的一个增长曲线。

image.png

还有一个问题,就是要不要看月度活跃?有很多的开源项目,它能吸引人过来,但是留不住人,这是一个比较大的问题。

这是 APISIX 的月度贡献者的曲线,就是每个月到底有多少人给 APISIX 贡献的代码被合并到主干里面去,我们大概是 25 个人左右。

image.png

对比一些其他的一些项目,比如说我们在美国的一个类似公司 Kong 的员工是 400 多人,他的 comtributor 的月活是 15 个人,我们公司就只有 20 多人,所以月活的大部分的贡献者还是来自于社区。

到底贡献者有没有在关注你的项目?到底有没有在贡献你?这个是我们非常关心的一个点,整个开源项目最核心的就是 developer,之后不管是我们的宣传我们的文档我们的视频等等之类的都是手段。很核心的就是,我能不能吸引全球最顶级的开发者的注意力,因为现在是开源项目非常多的时代,一个开源项目有非常多的竞品,一个公司、一个开发者有非常多的选择,他为什么选择你?为什么不选择其他的开源项目?你有什么东西可以吸引他的。

吸引他之后,他还要使用,然后发现你的 bug 给你贡献代码。这个其实是会形成一个类似于全生命周期的东西,那么我要去做什么事情,能让我的贡献者一直保持很活跃的状态,这个是我们整个做社区里边比较关键的一个点。

再说一遍,我们从来不看 star 数。

很多的开源项目,它都会在他的项目里面加探针,就是我装了之后我会回报一些数据回来,探针的作用就是知道到底哪家公司在用我,他来自哪个城市?数据量有多少?但是 APISIX 作为一个 Apache 的项目,我们不能有任何侵犯用户隐私的地方,所以我们没有探针。我们只能依靠开源用户自己去网上报,所以我们只能知道部分用户,然后,这些用户其实主要集中在互联网公司,在线教育其实和最近疫情的也有关系。然后看一下 APISIX,其实我们觉得自己发展的还是比较快的,从 2019 年 4 月份,我们写第一行代码,过了两个月到六月份,我们就开源了一个 demo。我们早期的 APISIX 的用户都是我们请别人吃饭说你要不要试一下?你看我这个人靠不靠谱?你觉得我人靠谱,那你能不能用一下我的开源项目,能不能上生产用测试环境跑一跑。

当你 sell 你的产品的时候,你是在 sell 你的人。那么 APISIX 怎么保持每月一个版本的迭代?我们怎么让我们的项目有越来越多的公司去使用?

其实我们用的都是笨方法,我们没有用黑科技,我们用的都是很笨的方法。我们把用户问题是放在第一位的,我不知道还有哪一个开源项目的作者,像我们一样每天忙着和用户交流,我们每天都会看用户的反馈,有问题就会直接反馈给开发,我不知道有多少人还能每天都看用户的反馈,但我们是每天都要看的。

还有一个方法就是去布道。布道的东西其实是非常慢热,APISIX 每个月有一次线下的 meetingup,疫情的时候没有,现在是每个月一次线下 meetingup。上一次是在深圳,这个月是在成都,下个月是在杭州,我们会把北上广深杭州成都刷一遍,等于说每个月都会跑一个城市,然后跑城市的时候都是 CTO,CEO 亲自去跑客户。因为只有离客户越来越近,听用户的反馈,你才能知道你的产品到底会做的怎么样?

另外,执念也很重要。很多的开源项目之所以没有坚持下来,核心的原因是因为创始人可能没有兴趣了。这是一个比较重要的东西,不管你这个项目有多大,比如 Redis,当 Redis 的作者宣布退休了以后,Redis 对开源项目、对商业公司其实都有很大的影响。就像 k8s ingress controller,这是在 K8S 里面排名第二的开源项目,当它的作者宣布退休的时候,这个项目就停止更新了 20 多天。一个开源项目不管有多火,它背后最核心的人就那么两三个,如果这两三个人哪一天觉得不想搞这个东西、没兴趣了,或者去做其他事了,这个开源项目一定会死。所以对于我们来说,执念是很重要的,APISIX 的项目肯定是我和王院生一辈子的项目,当我们进 Apache comtributor 的时候,我们去找中国的导师,找姜宁老师,姜宁老师就和我们说,你们进孵化器是有代价的,这个东西的标签会贴在你们身上一辈子。

我们从 Apache 其实学到了非常多的东西。我们进 Apache 的时候是 19 年的 10 月份,我们用了半年多的时间毕业,但是在这半年多的时间之内,有非常多的文化的冲突,也学到了很多东西,我们发现学到的这些东西不仅适用于开源项目,它其实对商业公司其实也是有帮助的。Apache 的信念是社区大于代码,我们认为社区会比代码重要,那么在我们和客户去交流的时候,我们就会想,比如说,他即使不能成为我的付费用户,但是我们能不能培养一个 comtributor 呢?让他来贡献我的代码呢?那么这个公司他其实不是花钱,但是他花人在我的开源项目上的,我们要把整个社区给构建起来。还有一个就是为了公众利益,Apache 其实很重要的一个点就是我做了这么多的代码,我是一个慈善机构,我有这么多的代码,我有 Hadoop,我有 Spark,我有 Kafka,这些东西是免费的,我给整个世界带来了非常多的好处,省了非常多的钱,给人类带来了好处。那么一个商业公司呢,一个商业公司不能只是为了钱,他一定要有远大的目标,一定要为公众利益做一些事,这样才能长远。

在 Apache 里面还有一个公开渠道讨论,我们都是在邮件列表里面讨论的,这个方式很古老。很多人其实都不看邮件列表,或者说在中国很多人都不用邮件,大家用聊天软件,但是 Apache 为什么一直要用邮件列表?其实我们也去问过,说现在大家都这么发达了对吧?科技这么发达为什么我们不能在 GitHub 上讨论呢?因我们所有项目都在 GitHub 上,我们为什么要在邮件列表里面讨论呢?然后 Apache 的人回复了,因为 Apache 有一些项目的 comtributor 在非洲,或者是在一些很落后的国家,甚至是在地域内 GitHub 都禁止访问的国家,那么对于这些人,他怎么贡献代码?他怎么参与讨论?我们要让每一个人都能参与到讨论里面来。邮件就是最可靠的,因为你没有办法去封一个邮件,邮件是纯文本的,不会有图片和视频,所以他在很差的网络下也能参加讨论。所以 Apache 就希望让全球所有的人加入进来,它要所有人都能参与讨论。而且邮件列表没有办法修改里边的东西,但是 GitHub 就可以删掉或者修改你的帖子。

在 Apache,我们讨论一个东西要放 72 小时,也就是三天,这主要是考虑到有人过周末看不到,就是三天的时间后,大家才能继续把这个事情去往前推。在我们公司其实也是一样。因为我们公司也是一个全远程的,大家也是通过 Slack,通过 GitHub,通过谷歌文档,通过邮件把大家内容串起来。所以我们就告诉大家不要着急,讨论一个问题之前,拉着所有人开会之前,一定要把你的 proposal 写清楚,你写不清楚 proposal,不要拉别人开会,你是在浪费别人时间。在 Apache 里面也是一样,你和别人讲一个东西的时候,一定要写的非常清楚,不然是没有人搭理你的。还有 Apache 里面还有一个就是精英民主,就像今天上午堵俊平讲的一样,在 Apache 里面,大家是民主的,谁都可以投票,但是你的一票和我的一票的重量是不一样的,比如说我是 PMC ,我的一票就是有效的,你不是 PMC,你的这票就是无效的,但是有友情的票并不计数。当你贡献越多,那么你的话语权就会越大,所以在 Apache 是精英民主,就是所有人都有这个权利,但是你只有贡献越多,你说的话才算数。在公司其实也是一样的,当你的员工做的事情给你的公司带来的价值越大的时候,他的话语权也就会越大,但是我们希望每个人都参与进来,所以我们也在推类似于 OKR,所有人都能看到所有人的 OKR,所有的事情都是公开的,但是你能不能做成这件事儿,就是另说了。

Apache APISIX 商业化探索

然后我们看一下开源商业化,开源商业化是一个很火的话题,特别是最近一年在中国,好像什么东西开源之后就能商业化,其实是不一样的,很多的项目是没办法商业化的。比如说你在 GitHub 上面看到有几千万个项目,但真正能商业化的、有商业化价值的也没几个,很多比如说前端的项目、工具类的项目,很难去商业化。开源和商业化其实是并没有必然关系的,开源其实本来就只是程序员觉得这个工具很好玩,比如说 Linus,最开始开发 Linux 操作系统的时候,不是为了商业化去的,他是觉得要做一个更好玩的东西。很多的开源项目的初衷不是为了商业化,但是最终商业化获得了很大的成功。还有不能商业化但其实也很好的开源项目,比如一些前端项目,它很难商业化,但是依靠赞助每个月也有几万美元的收入,他当顾问然后拿赞助,也很好,这些项目很难商业化,但是是一个很好很成功的开源项目。商业化很好的软件公司,很多都是不开源的,比如说我们 windows、office,这些全是不开源的,但是他们商业化非常成功,甚至没有可以替代的东西。但是你觉得开源的能干掉他们吗?很难,所以一个东西商不商业化、能不能成功,和开不开源没有必然的关系。

开源项目和商业化产品之间有非常大的鸿沟,其实我一直都在提醒公司的小伙伴不要认为你做了一个很牛逼的项目,性能很好,star 很高用的人很多,因为企业要的是商业化的产品,但是你做的是一个开源项目,商业化产品要的是什么呢,要的是安全、稳定,然后出了问题,你能帮他想到各种类似于高可用,回滚,审计,甚至能去降低成本、提高效率,解决这些在业务上的问题,但是开源项目不能直接解决这个东西,做好一个开源项目只是你商业化的一个基础,也有一个鸿沟要跳,有一本书就是《跨越鸿沟》。当你的一个项目从 Startup 到商业化这道大规模的使用,这之间存在非常多的鸿沟,另外就是开源项目的贡献者和商业公司的管理者角色又不一样。这个对于很多的开源商业公司都是非常大的挑战,因为像我和我的合伙人,我们两个都是 Developer,写了十几年代码,甚至在前公司里边都没管过什么人,就管了一个几个人的小团队,那怎么办?我现在要做商业公司,我要和投资人去聊钱,要去招人,要去和外部合作伙伴聊合作,还要写文章,然后我还要变成一个网红...你要做非常多的事,你还要去发钱、和员工谈期权。所以我觉得其实做 Developer 是最幸福的,因为这些杂事你都不用管,安安心心的写代码多开心。为什么想不开要创业?他的角色之间有非常大的差异,有时候就觉得程序员选择创业也不一定是件好事,那为什么还有很多人出来呢?我觉得最大的吸引力就是挑战会非常的大,就是你会觉得我以前只是一个 developer,但是你现在可以直接决定一些事情,决定公司的方向、开源项目的方向、公司后面的一些战略。你会遇到非常大的挑战,而这些挑战其实会对你带来非常大的快感,所以你如果要从一个开源项目的核心贡献者转成一个商业公司的管理者,很核心的一点是,你能不能体验到其中的快感,或者是你享不享受其中的快感和挑战。就是在这个过程中你爽不爽,如果你爽,那你其实是可以干得过来,但是有些人觉得这个东西太难了不太适合他,那么你就很难完成这个,角色的转变对人的挑战还是非常大的。

然后为什么现在大家都选择开源,其实我觉得选不选择开源和你这个项目能不能成功没有必然的关系。

开源是一种手段,比如说有些人开源是为了 marketing,希望更多人的知道、希望能够上热搜,这是一个方面;还有一个方面,希望能够拿到全球顶级的开发者和更多大 logo 的场景,这是开源的其中一个目的。还有一些开源,只是为了融资。所以开源有很多目的、很多的方式,但是你如果真想要做的长久,最核心的还是看你的核心开发者或者你的创始人,到底你的初心是什么?然后我和我的合伙人去聊的时候,我就会问你为什么会选择我们两个?当时为什么会选择把这个东西开源出来?两个人很苦逼,一分钱没有,写了一年多代码,19 年的时候没有人看开源,投资是最冷的时候,为什么我们选择做这个玩意儿?然后我合伙人的想法就是:我对钱没追求,我只想把自己的名字写在史册上。他每次和别人都这么聊,他也确实是这么做的,他日子过得特别苦逼。其实我也是类似的想法,我第一份工作是在金山干了五年,然后金山的口号就是让我们的代码、我们的软件运行在每一台电脑上,然后我合伙人的梦想是将名字写在史册上,我们都希望能够做出一些有贡献的东西,我们在应用层干了十几年,就像很多的开发者一样,我开发业务开发了十几年,但是开发十几年之后,我的代码在哪呢?现在的代码在哪里?全都没有了,什么都没留下来,但是你做一个 Apache 的顶级项目并且基于顶级项目做一个很好的商业公司,是会被留下来的,这个东西对我们来说是很有快感的。

总结

总结一下,其实开源其实只是一个手段,它取决于你的创始人想要什么。

另外一点,开源项目需要找到能够一起长跑的用户,现在陪我们长跑的像腾讯、微博、贝壳,以及空中云汇,能陪你长跑,他能提出非常多你产品的 bug,然后还能变成你的贡献者 和 PMC,然后有些还愿意给钱给你。然后逐步地你就能从一个场景打到另外一个场景,再打到另外一个场景,不要造空中楼阁,不要闭门造车,让用户的需求带着你跑,你就能保证你永远是最先进的。

我们觉得我们有一个比较清晰的商业路径,因为很多的开源项目没法做商业化,这是因为用户不愿意为他买单。

那么什么样的开源项目用户愿意花钱呢?

肯定是一些非常 critical 的一些数据在你这里,如果你的开源项目挂掉了,他的公司也挂掉了这样东西,他愿意买单,比如说 database 数据库,数据库里面 TP 和 AP 又不一样:TP 的数据库 down 了,用户就挂了;AP 的无所谓,我还可以换,APISIX 是流量入口,流量入口是不能挂的,挂了的话所有的 app 和用户之间的连接就全断了。这也是非常关键的一个地方,只有关键的地方才能收到用户的钱。

还有就是除了 APISIX 之外,我们现在还有 Ingress Controller 推给了Apache,服务网格(Service Mesh)也刚开源。我们从一个开源项目到三个开源项目,这三个开源项目的功能 90% 是一样的,但是场景不一样。

最后就是开源其实只适合部分公司、部分项目,它不是一个银弹,不是说我这个东西不行了,我开源一下我就火了。开源商业化有光明的未来,因为它可以真的去帮用户降低成本,去帮它降低运维的成本,工程师的成本,帮他去提高效率,帮他去做数字化转型,帮他去上云,开源项目都能帮他去做,但是还是很清晰的一点,从项目到产品其实需要做非常多的事情,而这个事情创始人要有一个非常清楚的认知。

另外,现在是是工程师最好的一个时代,我们如果回想到十几年前,或者二十几年前你根本没有这样的机会,去做创业的尝试,比如说现在很多开源项目,我开源拿一笔钱去尝试,就算失败了也是一个很好的事情,因为以前你根本就没有这样的机会。现在中国的工程师有了一些积累,中国的资本也有一些积累,他可以去做这样的试错,总有一些项目和一些商业公司能够跑出来。然后我觉得对于开源项目的运营,或者是市场同学来说,这也是一个非常好的时代,如果大家对我刚才聊的感兴趣,可以加我的微信,谢谢大家。


思否编辑部
4.3k 声望117k 粉丝

思否编辑部官方账号,欢迎私信投稿、提供线索、沟通反馈。