内容起源:2021 年 6 月 5 日,由 SegmentFault 思否主办的 2021 中国开发者生态峰会圆满闭幕。会上,干流科技 CEO,Apache APISIX PMC Chair 温铭发表了主题为《Apache APISIX 的社区经营和商业化摸索》的演讲。
分享嘉宾: 温铭,干流科技 CEO,Apache APISIX PMC Chair
速记整顿及公布:SegmentFault 思否编辑部
我是温铭,来自 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 和产品。
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 的一个增长曲线。
还有一个问题,就是要不要看月度沉闷?有很多的开源我的项目,它能吸引人过去,然而留不住人,这是一个比拟大的问题。
这是 APISIX 的月度贡献者的曲线,就是每个月到底有多少人给 APISIX 奉献的代码被合并到骨干外面去,咱们大略是 25 集体左右。
比照一些其余的一些我的项目,比如说咱们在美国的一个相似公司 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% 是一样的,然而场景不一样。
最初就是开源其实只适宜局部公司、局部我的项目,它不是一个银弹,不是说我这个货色不行了,我开源一下我就火了。开源商业化有光明的将来,因为它能够真的去帮用户降低成本,去帮它升高运维的老本,工程师的老本,帮他去提高效率,帮他去做数字化转型,帮他去上云,开源我的项目都能帮他去做,然而还是很清晰的一点,从我的项目到产品其实须要做十分多的事件,而这个事件创始人要有一个十分分明的认知。
另外,当初是是工程师最好的一个时代,咱们如果回想到十几年前,或者二十几年前你基本没有这样的机会,去做守业的尝试,比如说当初很多开源我的项目,我开源拿一笔钱去尝试,就算失败了也是一个很好的事件,因为以前你基本就没有这样的机会。当初中国的工程师有了一些积攒,中国的资本也有一些积攒,他能够去做这样的试错,总有一些我的项目和一些商业公司可能跑进去。而后我感觉对于开源我的项目的经营,或者是市场同学来说,这也是一个十分好的时代,如果大家对我方才聊的感兴趣,能够加我的微信,谢谢大家。