大咖访谈 | 做开源,最核心的就是要随缘 —— Apache SkyWalking 创始人吴晟

南门焱
2023-12-01

本期访谈阵容

嘉宾:吴晟 ShengWu,Tetrate 创始工程师,Apache 软件基金会首位华人董事,开源 APM 项目 Apache SkyWalking 创始人,分布式追踪与诊断技术专家,骨灰级开源社区爱好者

主持:庄表伟,开源社理事、华为开源管理中心开源专家。常年参与社区各类活动,热心开源治理、开源成长、开源学术等方面的研究与分享。

Q:最早接触开源是基于怎样的机缘,有些什么值得分享的趣闻轶事?

吴晟 ShengWu:我大概是从 2015 年开始做开源,其实就是从 SkyWalking 开始的。在 2010-2015 年期间,我参加过很多运营商的全国级项目,由于项目涉及较多企业之间的合作,所以接触到了较为早期的分布式系统。

SkyWalking 最初是为了解决手上的问题,也是因为自己的爱好,希望能用开源的方案来做这个东西。但其实当时不管是软件基金会,还是对开源应该怎么做,都没有太多的概念,就是自己写了点代码,放在 GitHub 上面,娱乐性质地参与一下。

庄表伟:其实我挺好奇的,因为我也做过好几个开源项目,但是非常令人惊讶的是,你的第一个开源项目就能够做到这么高的用户量,成为非常著名的 Apache 顶级项目。开始做 SkyWalking 的时候是怎么想的,为什么一开始就选了这个领域,还一下子就选中了,这其中有怎样的故事?

吴晟 ShengWu:当时,我们在网上找了很多应用性能监控项目,做了半年的调研,发现市面上有商业的,有非商业的,但并没有开源的。其实,我们了解到 Zipkin、Pinpoint 可能有开源,但试用后发现它们并不能满足我们的要求,不是一个完整的 APM 解决方案,基本上就是基于非常简单的诉求做出来的。既然没有,我们又想做,那干脆做一个好了。刚好公司侧也不涉及这方面的商业、战略等问题,就说如果业余时间我们愿意做,那就做,日后公司也可以拿来用。在这样一个契机下,做了决定把这个事情做起来。

但我们真正认真做这件事情,大概是在项目开始一年后。当时,OneAPM 关注到了 SkyWalking,他们很认可我们的技术,觉得我们写的东西和他们公司的非常像,所以就把我们招过去了。当年更多的是工作角色,OneAPM 认为,既然我们能写出来 SkyWalking,是不是能帮助他们把公司的 APM 的探针和后端也进行优化。

OneAPM 不反对我们继续做 SkyWalking,且提供了很多一线 APM 公司面临用户相对较为苛刻的生产环境上的一些要求,让我们在早期就了解到未来会面临的环境是怎样的,这对我们后面迭代开源产品来说,是一个很好的背景。

Q:什么时候决定把 SkyWalking 捐赠给 Apache 的呢?

吴晟 ShengWu:把 SkyWalking 捐赠给 Apache 和之前我在华为的经历有关系。早期在 OneAPM 跟姜宁姜老师是同事,他告诉我要跟公司签备忘录,以保证我做的开源项目和公司的知识产权是分开的。到华为后,因为华为是支持开源基金会的,所以就有了两种想法,一个是让华为参与这个项目,由华为主导;另一个是把项目捐赠给基金会,不论是我个人还是华为,都不对项目进行控制。评估之后,觉得捐赠给基金会既能最快速执行,又能保证中立性,所以就选择了这个最简单可行的模式。

其实大家现在在 Google 上搜,还能搜到当年 SkyWalking 申请 CNCF 孵化项目的邮件,CNCF 也给了做 Presentation 的流程,但我们看到 CNCF 的流程跟企业关系太大,做起来会很麻烦,还是觉得干脆快一点,所以就把 SkyWalking 送进了 Apache。

Q:开源项目的捐赠其实有很多选择,可以捐赠给 Apache,也可以捐赠给 Linux Foundation、CNCF 或其他基金会。通常来说,开源项目捐赠时选择基金会的逻辑是什么?这几家基金会背后的气质或者说它们的倾向性有什么区别?对于开源项目的捐赠,有什么好的建议吗?

吴晟 ShengWu:其实区别还是比较大的。Apache 基金会偏向于个人团体或者小团体,在没有非常强烈的公司背景下,一个开源项目想在更为开放的环境做开源,个人会比较建议选择 Apache 基金会。CNCF 很明确的是多家厂商做联盟项目,从 Kubernetes 到现在任何一个国内的项目,基本上都是 3-5 家厂家一起抱团做开源项目。Linux Foundation 的目标是做子基金会,基本上背后都有会员企业 Sponsor 项目。Linux Foundation 最大的优势是它会管理子基金会,可以省掉很多麻烦事。

Q:SkyWalking 发展到今天,已经非常的成功。它大概经历了哪些阶段?目前的阶段和状态是怎样的?

吴晟 ShengWu:第一个阶段大概有两年的时间,SkyWalking 当时在 GitHub 上的文档、注释等,所有东西都是拿中文写的,算是一个比较娱乐性的环节。第二个阶段大概有三年的时间,我们把主要精力放在了 APM 里基于分布式追踪的探针技术方向。第三个阶段,大概从 V6.0 到 V7.0 开始,我们社区有了足够的资源,也真正决定做 APM 的软件。我们现在处于第三阶段的尾部状态。同时,我们也在计划第四阶段向更庞大的生态发展,比如说我们开始有自己的数据库,开始更多的和其他技术栈做融合,做生态概念的项目。

大概是这样的四个阶段。最终的目标,希望 SkyWalking 能在开源领域是一个很好的原型,不管是想做商业的 APM,还是想借鉴以后自己去做相关的东西,都可以从它上面看到一些经过很多复杂场景验证、使用之后的一些结论或经验。

Q:在四个阶段中,你的个人角色有什么变化?

吴晟 ShengWu:因为起初我们一共就两三个人,所以第一个阶段我和普通的 Developer 是一样的,就是埋头写程序。第二个阶段更多的是和最初的种子用户做沟通,我开始想知道大家对 SkyWalking 是怎么看的,想知道大家觉得我还能做什么,或者怎么做会让 SkyWalking 做得更好,有点像 Product Manager。

第三个阶段更多偏 Social 一些,基本疫情之前全球到处走,国内更多的是参加各种会议,走访各大公司等,国内外的商业公司也好,其他的项目也罢,希望知道 SkyWalking 在他们这种超大规模的公司里是怎么应用的?他们的项目和 SkyWalking 是如何集成的?SkyWalking 在全球、在中国,有哪些典型的使用的方式?

第四个阶段,到目前为止,更多的是两方面。一方面,SkyWalking 作为我们公司创业商业化的一部分,我们会花更多的时间在商业化上。另一方面,我们会花更多时间挖一些很细节的功能,例如 SkyWalking 基于 APM 的专有数据库,或者用 Linux 内核的一些技术做性能监控,和传统的探针做集成等等一些比较深入到生态里面的话题,反而对 SkyWalking 本身的控制或者状态,相对以前会少一些。

Q:在这几个阶段当中,SkyWalking 社区发生了什么变化?

吴晟 ShengWu:第一阶段可以先跳过,因为当时也不存在所谓的社区。第二阶段会碰到一些比较爱技术、爱折腾的人,给我们很多鼓励。他们不会参与这个项目,但是会和我们做点对点的沟通、反馈,对我们来说更多的是鼓励。个人认为,第二阶段没人敢拿 SkyWalking 上生产,当时也确实不具备相应的能力,但是大家会认可 SkyWalking,觉得 SkyWalking 的方向很好,是不是能做的更好一点?反而我觉得这个阶段是最有用的,今后的商业用户,或者说潜在的购买者,都是从那时候来的,也是他们告诉我们要站在用户的角度思考,什么是用户想要的,什么是市面上稀缺。

第二阶段我们一直有问大家一些问题,想要了解为什么大家想要用 SkyWalking,当前市面上的有哪些点是不符合他们要求的?是觉得我们不收钱,还是就是觉得它们功能或性能做得不够好、不够细致?国外的巨头们,他们又做到了什么程度?

第三阶段其实是整个 Apache 孵化期,以及毕业后的很长一段时间。前期,我们会偏向于比较鼓励大家是不是能参与进来写代码吗?三个人肯定是干不成这个事情的。所以我们需要鼓励更多的人进来,所以会去更多的精力会和大家交流的时候,识别大家是不是有能力?或者是有时间参与到这个项目里面来。这个过程相对来说会比较疲惫,因为大家有走的,有来的,有做几个月的,有做几年的,有做了几年走了又回来的,我们都有碰到,所以,这个阶段就是和大家去讲程序了,我觉得这可能目前经历过时间比较长的这三个阶段,参与社区的人的角色不一样了。

Q:第四阶段的社区是种什么感觉?

吴晟 ShengWu:现阶段,整个梯队以及大家的职责是很分散的,SkyWalking 也有将近 30 个涉及不同技术栈、编程语言、使用环境的子项目。目前我在 SkyWalking 里并非 Leader 角色,这么多项目对于我来说也是不可能完成的任务,我只会了解 SkyWalking 作为 APM 主线的一部分,例如我会花较多的时间在 SkyWalking 的后端以及 Java Agent,及其他我比较感兴趣的技术。可能有时候会提醒有些地方是不是可以优化一下,但绝大部分的决定是对应项目管理的 PMC 或 Committer 处理的。

Q:如何看待社区里的人员流动(留存率)?

吴晟 ShengWu:我的想法是,除了我自己,所有人都会走。也许有一天我也会走。

举两个可以在 GitHub 上可以看到的例子。第一个例子是 SkyWalking 在 3.0、5.0、6.0 时期,有一位非常重度的贡献者,甚至现在他的提交在主库仍然排名第二,但是他离开项目已经有两三年时间了。他在那个阶段有很多个人的诉求,他想借这个项目完成他个人的证明题,在他完成后就离开了。第二个例子是 SkyWalking 的 .net 探针。.net 探针是 SkyWalking 的第一个子项目,也是  SkyWalking 在 Apache 孵化期第一个吸纳的 PMC 成员,他在 2017 - 2018 年为 SkyWalking  写了 .net 探针,但中间有很长一段时间因为工作原因没有时间和精力维护,交给了其他人,后来忙完又回来继续做了一段时间。

其实有很多这样的人在一个项目进进出出,所以更多的还是需要调整好自己的心态,没有必要一定把大家都绑在里面。另外,一定不能觉得离开了或不贡献代码有什么不好,其实和表伟我们俩都认识的朋友,绝大部分都没有人帮 SkyWalking 写过代码,但在平时很多的活动上都会提到 SkyWalking。口口相传对项目是非常有帮助的,因为绝大部分人更愿意相信朋友的分享,而非从新闻媒体里面看到一个离自己很遥远的东西。

Q:有没有哪些你觉得很离谱的故事可以分享的?

吴晟 ShengWu:在已经推广开源这么多年的情况下,很多普通工程师依然认为开源软件的作者对开源软件负有责任。维护、修BUG的责任也好,答疑的责任也罢,这种强加给开源开发者的责任是我觉得最离谱的一件事情,会从本质上最大范围的破坏相对比较少数派开源软件的开发者。

庄表伟:开源项目有一个地方叫 Issue List,创作开源项目的人难道没有义务回答问题吗?

吴晟ShengWu:个人而言,我会回答,但我不认为那是我的义务。在北美公司的四五年,我最大的收获是:如果你疲于应付一件事,那么这件事一定做不好。我不强求改变其他人,但我觉得一个好的开源项目作者,要有那种我就是不想回答的勇气,如果别人一提软件哪里有问题,你就非常焦虑的想去解决这个问题,我觉得项目不到 SkyWalking 这么大就会被拖死。

Q:除了这种离谱的事情,有没有什么让你气愤的?

吴晟 ShengWu:比较让我气愤的有两点。第一点是把语言和爱国捆绑,处理技术问题就够麻烦了,还要在这些问题上浪费时间,这个对于项目本身或者我们平时的日常工作来说,是很令人气愤的。

第二个是环境上变化比较大的点。很多公司以前不做开源的时候会疯狂的贬低开源,但可能因为有竞争关系,也发现了开源目前是趋势所向,决定自己要开源,就说开源能解决所有问题。开源只是一种合作模式,并不能仅凭是否开源来评判软件的好坏。

Q:有没有其他想分享给大家的故事?

吴晟 ShengWu:分享两件事吧,首先说说基金会里最常见的一个事情:达成共识。共识是大家一直在推崇的概念,但我觉得达成共识是一件很难的事情,很多时候我们达成的所谓的共识,其实是一个妥协的产物。是否能够真正的做到换位思考是我们面临的最大的挑战,特别是走出国门做开源,和国外的人在宗教和价值观上面的差异会是一个很大的障碍,需要我们更多的换位思考、妥协。

第二件事是在开源的推广上,我们可能太标榜一些事情。任何一个开源项目都有其好与不好,但开源项目本质上是多元的,对于成功的标准也应该是多元的。所以我认为,想让更多的人能更客观地看待开源,应该更多讲讲多元。

庄表伟:聊得差不多,正好跟你介绍一下开源雨林。开源雨林跟你所秉承的多样性理念非常契合,为什么叫雨林?因为我们觉得雨林是全球范围内生物多样性最好、最健康的地方,我们非常希望开源的生态能像热带雨林一样蓬勃发展,做这样的访谈也是希望能够跟更多的朋友一起,聊聊开源生态相关的各种话题。我们也想听听看,你对开源生态,对开源雨林,有哪些意见或建议?

吴晟 ShengWu:我们参加过很多开源相关或文化相关的活动,我觉得有两个点。一个是怎么能更多的听到大家想要什么,因为我一直感觉开源文化这个话题听众是比较有限的。首先,它是一个相对小众的话题,其次,很多做开源的人其实不太喜欢听文化这个话题,所以如果我们能有更多的活动或者是沟通的机会,多了解一下开源新人的困惑或者是他们能分享的一些感受,我觉得可能会产生很多共鸣。

今年,ApacheCon 把 Panel 完全让出来,把 Keynote 的位置拿出来给了 Apache 项目里面的学生。他们之间如果没有我们这些人在那坐着,是不是会更多的表达他们比较有共性的情感,我很想看看那样一期大家会有什么反应,甚至我觉得他们可能会对普通的开源开发者产生更多的启示。我不太希望开源是少部分人管理开源项目的过程,因为创建项目、带项目,和很多人参加项目的体验感差别还是蛮大的。作为新人,参与感受会很不一样,可能给学生做访谈或采访,那样的主题对新人来说会更有教育意义。 

 类似资料: