2022 年初,与 思为、小马哥、Rick 一起录制了播客,欢迎收听 👏 大家可访问 喜马拉雅 或 Apple Podcast。
思为:欢迎大家来到新的一期《开源面对面》!我是古思为,今天我们的 Host 有 小马哥 和 Rick,今天的主角是 琚致远 同学,致远 同学是 Apache APISIX 项目的 PMC 成员,是一位年轻的“老”开源玩家,我们请 致远 先自我介绍一下。
致远:大家好,我是致远。我在 2019 年毕业之后参与到了 Apache APISIX 项目中,在此之前与 Miya 做 freeCodeCamp,主要是面向国内的社区;毕业之后开始参与 Apache APISIX,其中也有很多故事,待会会分享。
思为:我们进入正题,经常关注开源圈子的同学,或者在推特上经常关注开源的同学,应该也知道 致远。之前我们私下接触,知道 致远 的成长经历非常非常的有意思,你能给我们介绍一下,你是怎么样一点点接触 CS、编程、开源的吗?
致远:好的,我于 1997 年出生,在 2003 年的时候,我的叔叔在北京中关村为我拼了一台主机。当时抱回家的时候,我会沉浸在诸如 300 个 Flash 小游戏中,玩游戏时间久了之后觉得是不是自己可以做一个,因为它都是一些 SWF 文件,我就去和妈妈讲能不能买一本 Flash 教程?这套教程当时挺贵的(大约 120 元),我在妈妈身边哼哼唧唧好久,最终妈妈给我买了一套,紧接着我跟着教程边看边做,许久之后,发现好像这个事情不太适合我,就继续去玩一些其它的游戏,例如跑跑卡丁车。我记得是 2008 年时候,2008 年暑假,我的 QQ 号被盗了,被盗了之后我就想着看一看怎么给它找回来,那找的过程中,发现好像有一个词叫做 Web 安全,有一个词叫做渗透,还有什么木马、钓鱼,然后就了解到了一些平台,像黑客帝国,叫什么?黑客帝国就这种平台,当时有很多这种教 hacker 这种技术的站点,还有收费的那种,我就自己在网上下载各种各样的脚本去执行,去渗透别人的站什么的。后来才发现原来这个叫脚本小子,我觉得不够酷,于是就想着去学一些再深一点的,就开始从头开始去学一些编程语言,当时那个时候还流行着 Delphi,还有易语言,就你可以做一个很简单的框框,放到网吧的,把它的 QQ 点 exe 文件替换掉,别人只要一填账号密码,它就给你发封邮件,发到你自己的邮箱里面,就当时做这种事情,再到后来了。对,再到后来就了解到有个词叫社工,我觉得社工这个事情它比较依赖于你的一个同理心,你擅长跟人打交道,当时就恶搞我的同桌。他给游戏里面充了很多钱,在我这边炫耀,但是我又不玩游戏,我就说你等着,我试试能不能给你把账号拿过来,我就跟他聊着聊着,套了一些信息之后。把他的《穿越火线》、QQ 账号,把密保什么的全都给它解掉。当然,后来我把这个又还给他了。在中学的时候,当时看到我们初中的校长他在整理学生的一些信息的时候,都是在几十个,可能有四五十个 Excel 表里面一个一个去搜,我说能不能给他做一个程序,让他一输名字或者一输学号就可以找到的。我就跟他聊了这个想法,他自己也比较支持,给了我那些事例数据,我就拿走。我知道了 Excel 表的它的一个结构之后,就用了有一个很老的数据库叫什么?Microsoft Access,是叫 Access,好像是叫 Access。
思为:Office 套件。
致远:对,然后就找了一门,当时觉得易语言不够酷,我就用去学了 Visual Basic,通过托托拽拽,做了一个系统出来,一个小系统出来。你可以在上面登录、注册个账号,还可以去搜学号,增加老师的一些信息、学生的一些信息,做了这么一个系统,给了校长,至于他没用我就不清楚了。高中的时候学校管得比较严,接触电脑的时间就少了很多。当时只是一心想着在大学的时候可以去做一些自己喜欢的事情,比如继续去做 Web 渗透这样的事情。真的上了大学的时候,高考一考完我就让家里面人又给我买了一台 MacBook,当时还是 MacBook Pro。我的第一台笔记本就是 Mac Book Pro,就去网上找了很多教程在学,但是学的时候会发现,你想做 Web 渗透,你就得懂 Web 它的整套理论体系以及一个 Web 服务它是怎么搭建起来的。所以我想着想学生的话,不如说去学一学外部研发的这套东西,我就开始从 html、css 和 GS,从 0 开始一点点敲,一点点敲。在大学的时候,我觉得还是蛮幸运的,大一的时候就能接到学校的一些项目,这个也是因为我们系的一些学长他推荐项目给我,把学生处的一些项目就分到我这边。我也不懂,当时连 Web server 我都不知道怎么搭建起来,就把活给揽下来了。揽下来之后,真的是花了好长时间去查各种各样的资料,去看,他们会告诉我说,为什么这个域名 DNS 这些是怎么回事,你的 Web server 是怎么搭起来,windows 和 Linux 上面什么区别。总之,在学校里面做了各种各样的项目来磨自己的一些 Web 研发技术,结果一磨就是好多年,一直到大学毕业的时候是这么一个状态,大学之后就参与到了 Apache APISIX 社区里面。
思为:你很早接触电脑,你天生对那些 Flash 的游戏非常好奇,你想的它是怎么存在的,你接触了 Flash 的开发,看了一些书。因为我小的时候,我在中学的时候也买过 Flash 的书,我觉得那有关键点什么的,最后的结果就是用它做了一个我个人网站的,特别丑那种,闪闪的。所以我知道那个东西其实还是作为入门,其实真的很难,你想可编程的那些部分,但是你从那其实也了解到一些概念,之后因为兴趣的原因开始做所谓脚本小子的事,不满足于脚本小子,你就开始利用易语言、Delphi 做了一些 fashion 的东西。后来,中学的时候你还自告奋勇帮校长做 VB 的 Access 的这样的一个系统,自己是第一次从 0 到 1 做了一个 production 的小应用,上大学之后,这个其实还是蛮酷的一个 mindset,并且你真的把它践行,坚持实践下来,我相信驱动着你可能就是心里的成就感。然后上大学,因为你之前所接触的那些技术相关,其实直接是跟 Web 相关,包括你做渗透,所以你想要知道更底层的东西,你就开始接触 Web 开发。之前当你说到有些人给你介绍了 DNS,什么 Web server 这些东西,你是在一个社团里吗?还是说有学长,还是什么的?
致远:没有,当时主要是在学校刚上大学认识的第一个男生,这个哥们儿也是一个技术大牛,他除了前端不做之外,其他都搞,因为他本来自己的理论都比较好,他会搞什么密码学,或者说一些底层的东西。然后我俩就配合着,前端对他来说是一门高级语言,我做这些更靠上的,他做更靠下的,我们俩就一起做项目。
思为:其实我们知道,现在你已经远非当年自己自学的状态,你也有很多有意义的、厉害的输出。后来一步步你怎么样,因为我知道你在大学里就碰到了一个比同龄人特别厉害的人,好像你比较愿意去能够接触到那些很厉害的人,能够给我们讲一讲你是怎么样去成长这些经历吗?
致远:上大一的时候,因为真的是很偶然的原因,当时在学 Web 就了解到有一个项目叫 freeCodeCamp,通过这个项目就认识了米亚。在 2016 年的时候,在上海那边有一个什么 Web 峰会,当时米亚在那边,我就跟另外一个朋友,我们就直接坐飞机过去见了个面,聊了聊,在之后也见了在上海和其他地方的组织者, freeCodeCamp 的城市组织者。回到学校之后,就跟身边的一个小伙伴就开始聊,什么是 freeCodeCamp,你要不要学一学 web,这个很有意思,你就一点点敲就好了,这是第一。第二的话,就是说从 freeCodeCamp 经历里面能感觉到你去学一门东西,或者你去交朋友的时候,去认识一些比自己要厉害的人,他不一定是那种特别牛的人,他只需要比你厉害就行了,去跟他们聊,跟他们做交流,他们其实会很乐意跟你聊。第三件事就是说当时在做各种外包项目,在学校里面因为接了各种各样的外包项目,有纯前端的,也有那种需要你全站开发的,那个时候哪里接触过服务端?只能拿(听不清 00:11:40)往上怼,对吧?还有拿那种 LeanCloud 的这种 BaaS 平台往上对接,会减少你很多的维护成本。在做这些事情的过程中,发现有一个词是叫做架构,做了几个项目之后,发现有一个词是架构,就了解到了 Xsummit,了解到之后自己肯定很想去,但是又苦于说它价格实在太高了,一张票可能是四五千块钱,我当时在想,我说什么公司会派人去这种活动,但是我不管,我就觉得这个价格很高,但是我又想去,我就去联系到这个组委会,联系到了凯文,就给他发邮件,看能不能便宜一些,他就真的给我便宜了。他让票务联系我,问我大概能接受多少钱,我看了看票价是 4000 多,我说那就 2000 块钱。 OK,那我就拿了 2000 块钱买张票,就跑到国家会议中心去那场活动上,在那场活动上见到了石建强、池老师,还见到了王坚博士,当时我觉得这票迟了,当时挂的胸卡,上面写的是我们学校的名字,但是我一瞅旁边的全都是华为怎么样,阿里怎么样,什么阿里中间件的团队的那些人,我说反正不认识,那就跟他们聊一聊。然后他们是来这儿,来这儿有什么收获或者做什么事情?然后就留了一些微信,留了一批微信。后来我就发现,好像参加这种活动认识很多大牛,就感觉像是一个飞轮一样会上瘾。包括后来参加的,可能是在此之前参加的什么乌云峰会,这个是在 2015 年的时候办的一场乌云峰会,还有后面的一些其他相关的活动。总之就这些活动我都没有错过,都会去参加,然后认识各种各样的大牛,跟他们做交流。当然这个也在后来会证实,我说一个例子,在池老师的有一个群里面,他这个群是付费的,当时付费的时候,他问我,他说对于一个学生来说这个价格太贵了,其实也没多少,好像是 1000 块钱,我想都没想,我就加入进去,加进去之后。其实就只是进了一个微信群,但那个群里面,他们会定期做一些分享,我就看一看,其实有很多东西我看不懂,但是我把里面的人,微信加了一遍,我想既然他们愿意付费来加,说明我们可能是能聊得来的。后来其中有一个人联系到我,给我介绍了一些项目,其实赚的收益,赚了很多,我觉得挺值的。之后再有类似的一些渠道,比如说像生财有术,可能有些人不喜欢,但这个渠道我是加过一次,我是自己已经赚回那个票价了,远远赚回那个票价。对,但是其实毕业之后,可能也是因为自己的事情在逐渐的变多,我会觉得加入更多的信息的时候,我现在已经有点信息饱和了,所以我会先排斥这类事情,然后确定说我真的需要这些资源的时候,不管说它需要花多大的成本,我就去 touch 他们就好了。
思为:其实我听下来,我挺多感触的,我感觉尤其是给很多年轻人或者想要换赛道的人来说,你是在一种 Cold Start 就是冷启动的状态,你的信息是不够的,或者说你是极其负面的、不对称的。获得信息的方式,其实就是读书或怎么样。认识很厉害的,在那个领域很厉害的人,其实就跟读很好的一本书一样。
致远:没错。
思为:并且能够同步的一个交互,建立一个连接。所以我觉得你能够很果断地看到,能够加那种私域,其实是非常有价值的,还是挺酷的一件事情,这是很新奇的一个经历。你能再给我们讲一讲,因为我们作为朋友已经知道你通过,就是十大的群,已经后来跟你很多后续的一些经历有连接的地方,你再跟我们分享一下这部分的部分吗?
致远:OK,其实我觉得最印象最深的,其实我刚才已经提过了,里面有一位小伙伴给我介绍了一些外包的项目,我就帮他来做,当时可能就是 1000 块钱加入进去的,但是通过后续的项目赚回来的可能有几十倍。也通过这个项目去学了,因为也是在做自己没有做过的事情,所以通过这个项目在技术上面也得到很高的提高,但具体是什么项目不方便聊。
思为:我们知道你后来已经参与了一些开源的工作,你还有很多远程的工作经验,不止这一份,能给我们简单介绍一下这一段经历。
致远:其实在大二的时候,当时就会觉得自己毕业的时候一定要做一个 freelancer,做一个自由职业者,而不是远程工作,但当时我没有搞清楚这两个之间的区别。2018 年的时候我在法兰克福待了半年,因为那边其实欧洲消费会很高,自己虽然带了家里面给了一些钱,但其实在那边消费还是蛮高的。我觉得借这个机会去,当时有一个远程工作的社区叫做一早一晚,但现在我不知道还有没有了,后来好像就变成电压了,电压的创创始人应该是知道这个的。在社区上面找到了一个工作,兼职远程的,对方是在加拿大,帮他们做,每个月会给你一笔钱,通过这笔钱我在欧洲过得非常滋润。不是抱着攒钱的目的,但是我过得会非常滋润,那个时候那是我第一份远程工作。7 月份回国的时候,我当时去面试阿里的河马的部门技术,面试都通过,但是被 HR,因为 HC 的问题,因为面了 40 多天,HC 到最后已经不够了,所以没有进阿里。没有进阿里之后,当时在网易待了一段时间,我就从网易跑了,觉得网易那边我有点不太喜欢,所以又找了美国的一家远程团队,叫 Team247。远程团队里面有一些很强的工程师,会有那种远程意识的这些工程师也是从大厂过来的,所以跟他们也学了不少东西,也接触到很多项目。比如说帮助 visa 做一个在美国地区的信用卡发售的一套系统,当时是包给了远程团队,其他工程师都是比我有经验的多的,那种工程化能力非常强,架构能力也很强的一些公司,我跟他们一块做这个项目。我觉得我是被带的那个。做这个项目做远程工作一直做到 2019 年的 5 月份,当时是要毕业了,毕业之后去了深圳的一家团队,这个团队在深圳这边是在办公室的,具体我就不讲了。但是因为当时毕业的同时也接触到了现在 Apache APISIX 项目,当时纯粹是以开源的方式来做这个事情,会觉得很酷,也是一个很新鲜的东西。它是一个纯服务端的应用,我觉得很新鲜,当时 温铭 联系我说能不能帮他做一个 Dashboard,好,虽然我不知道 API 网关是什么,既然你来找我,我就来做,我们就聊了很长时间开始做 Dashboard 的项目,结果就一直做下去了。到 2020 年的时候 温铭 找我说好像我们是不是可以做一家公司?是不是可以来做以后的商业化这些内容。当时我其实没有太 care 这些事情,我只关心说可以全职来做开源项目,所以我就跑过来了。这是一直到 2020 年加入这家公司之前的事情。
Rick:我有一个问题,其实刚才就想问,跟这个话题其实很相关,你开始接了一些私活对吧?可以这么理解,其实我身边的很多人也做过类似的事,至少也想过这样的事情,因为大家觉得我能有点外快,不管说你可以拿这个钱,你当时在欧洲可以过得滋润,或者说我买个 iPhone 或者去搞个什么东西还是挺好的,我们现在又切换到开源的话题,所以说如果在你现在来看,如果说给一些在学生阶段或者已经工作一段时间的人的一些建议或者你的看法的话,你是怎么看待我把我的业余时间我去接一个外包私活,挣个几千一两万的这样的事情,还是说我去参与一个开源社区, Apache APISIX 或者 Apache 或者 Linux Foundation 下的各种开源项目,你是怎么来看待这些?我一个是可以拿到一笔钱,另外我好像是看起来在免费的帮别人去打工,去写一些代码,你这个是怎么看的?
致远:OK,这个问题问的我觉得特别好。其实还有一种方式是可以找到一份工作支持你来全职做远程,来做开源项目,这个是更理想、更棒的一种状态,我会觉得接外包也好,或者你做开源项目也好,接外包你想赚更多的钱,其实问题点就在于你想赚更多的钱,让自己过得会更舒服一些,你可以花得更多。但从我个人过去的一些经历来看,我会更建议如果你是工程师的话,去真的花一段时间深度参与到一个比较知名或者比较流行的开源项目里面,是可以拿到一份很不错的全职做开源项目的 offer 的,而且这个回报会远比你接外包会更稳定,更有那个词叫怎么说?是更能复利。比如说我的那哥们儿他跟我是一样,是 2019 年毕业的,他本科不是学计算机的,毕业之后去做了一些其他不相关的工作,他联系我说看能不能,好像觉得我这边做得还蛮有意思的,他在 2019 年、2020 年我会经常分享我自己的一些故事,他看到之后可能是有这个想法,但是没有勇气踏出去这一步,他就找我聊,我说你就不要想了,你就过来深圳,我来教你学 Web 技术,因为我自己会更擅长 Web 相关的一些东西。再加上当时我在维护的 Apache APISIX 的 Dashboard 这个项目也需要有新的贡献这,我们公司也正处于一个爬升期,需要更多的人。我说看你能不能通过这个项目,能深度参与到这个项目,把你邀请到我们公司里面。从 2020 年 10 月份开始,他就真的跑到深圳这边过来,我就从第一行代码教他写。当然我不是手把手地教,我会给他定一系列的任务,就是一点一点一点的任务,可能一周、一个月,顶多是到一个月,再往后的我自己都没有想过。让他把那些基础的东西学完之后,因为我自己在学外部技术的时候,或者其他技术的时候,都是通过实战项目去学新的技术的。对于他来说,正好手里面有一堆事要做,我就把我的事分给你来做好了,因为都是开源的,都是开源 Dashboard 上要做的一些功能。他就从一个刚能把 HTML、CSS 写得比较漂亮的状态,直接上手到说要了解什么是工程化,你要了解 React 的那套东西,你要了解 Ant Design 的那套组件是怎么用的,它为什么会这么做,它到底什么情况该用什么东西。还有 Ant Design Pro 它基于的那些框架,它们到底是怎么运作的?还有这个任务具体是什么,到底实现什么样的需求?其实他踩了很多坑,我自己也踩了很多坑,因为这是我第一个带的人。总之经过大概三四个月,真的是拿项目把他的经验给堆了起来之后,跟他一块儿去找一些工作。结果还是挺顺利的,一下子拿了四个 offer。虽然说不是那种特别大的大厂,但是在深圳这边都是本地的创业公司,还都不错,因为我会帮他来挑。最后他去了一家公司,也在那个公司里面学了不少东西。再往后,我觉得这小哥还挺不错的,正好我这边也缺人,我就把他给捞过来了。他当时是以外部工程师的身份进来的,但是进来之后,我们 Apache APISIX 是一个偏服务端的软件,他就开始去学 Apache APISIX 里面那些的这些知识。这个远远不是外部工程师要学的,他开始帮 Apache APISIX 来做很多服务端的东西。我觉得他进步是非常快的。如果说放在 2020 年的时候,当时他只是说去找了一些外包兼职,或者学了一些 HTML、CSS 之后,去帮别人做一些纯静态页面,虽然也能赚到钱,可能一个页面做得好,一个静态页面就得 1000 或者 2000,做这样的单子,但是远没有现在稳定。而且他加入一个正在高速发展的创业团队,我觉得是他很难得的一个经历。整体上来讲,我会更推荐说加入一个开源项目的方式,还是一个比较火的开源项目的方式。
Rick:你其实也刚刚脱离学生的时期不是很长,所以我对另外一个也很感兴趣。你觉得如果是对一个学生,因为你之前通过一些外包去接了一些活,也许你买了不少的电子产品。你再回过来想,如果你当时像现在一样,开源这么流行,你觉得作为一个学生去接一些外包活,给自己买些手机,其他的单反或者电子产品好呢?还是说另外去参与开源项目?这个利弊可以帮我们去分析一下吗?
致远:OK,这么说,当时在学校的时候,我们有一些外包项目,我去找我另外一位朋友,我现在想想真的很廉价,其实你做了很多的事情,你没日没夜的在帮别人做事情、做东西,但是对于学生好像几千块钱就可以把你打发掉,你时间会变得非常廉价,这个是对学生来讲,但是对于当时的我们,包括我自己,我会觉得好像很酷的样子,因为什么呢?因为当时还停留在一个月只有 1000 块钱生活费的这样的一个前提下,你想要交朋友,你想要社交,你想吃好的,不想吃食堂,这么多花销从哪来,怎么解决呢?你找父母要,起码我身边的这些人他们都不是这种人,都会比较独立,他们会选择去送一些外卖或者去做一些辅导、家教,有些同学他是真的很喜欢这些事情,他不考虑别的,不考虑那些收益,但是大部分同学,包括我自己其实都会去算一下,好像正好选择的计算机这条路,好像赚钱、来钱比较快。刚才 Rick 问到的问题,假如我还是一个大学生,现在有一笔钱给我,跟让我去做一个开源项目,因为我自己接触开源项目比较早,我是 2012 年就开始注册我的 getup,2012 年注册 getup,当时是初三,后面多多少少会接触到开源项目,会觉得把这些东西做出来让别人用,会非常的酷,这个远比那些金钱上面给我的那些刺激会更强一些。如果是我,我可能会去选择后者,但是我当时接了外包项目之后,因为当时有时候一个人接了两个项目,项目也不是说几千块钱的,是可能已经到五六万那种水平的,五六万那种价格的,我就需要更多的人手了,这个时候我就去找身边的朋友,让他们来做,我就分给他们。他们做的其实很开心,因为为什么呢?老师教的都是一些很基础、很薄弱的,让你做一做静态页面这样的内容,这个项目是广东省什么什么局要用的,这套系统是要全国的相关什么,我们有一个项目是做的广东省木材运输系统,这个系统是整个广东省都会用的,正好被我接到了,我拿到之后就分给那个哥们了,那个哥们会特别高兴,因为我做的东西人家在用,你一个月给我 3000 块钱,行,没问题,我就做,我不会我就学,在过去我也尝试去带很多新的朋友,比如就说我的室友,我想带他们去学一学 web,但是那个时候大家会觉得好像这个东西我毕业之后,反正我要考研,我考研大概率应该没问题,我为什么要学这个东西呢?我现在缺钱,可以,我先去找一个临时工作,先做一做,如果作为一个毕业生来说,我会希望大家会考虑的更长远一些。如果你是做计算机、做互联网的,真的可以考虑起码参与一个开源项目里面,而且国内现在的开源风气会比较好,像中科院南京研究所,它每年会举办叫什么开源之夏这样的活动,世维应该知道,因为我们每年都会参与进去,这个活动它就会鼓励国内的高校学生去申请报名,选择你心仪的开源项目,去找这个项目的 Maintain,作为你的导师。大概是从 5 月份到 7 月份,还是 10 月份,它会结项,会给学生一笔奖金,他会按照任务的高、中、低难度来分,高的可能都能到 15000 这样的一个金额,其实学生既学到了新的一些技能,参与到了你的社区,你的 GitHub 上面起码有半年都是小绿点,你还能拿到一笔奖金,也通常作为开源项目的社区或者社区背后的一些商业公司,他们都会从开源之夏活动中选择他们吸引你的学生来做实习。
小马哥:其实我听一下,我有一点很好奇,你 1997 年出生,2003 年就开始玩电脑,后面给老师做的这些项目,你是什么时候知道开源这个词?
致远:我的 GitHub 是 2012 年注册的,那个时候只知道 open source,不知道开源是这么翻译的。当时知道 open source,但是什么是 open source 呢?当时我自己的理解就是把自己写的东西公开出来,别人都可以用,你可以用别人的,别人也可以用你的,应该是在当时初高中的时候。
小马哥:你是什么时候有真正的对开源有比较深刻的深一点的认识,它不仅是 open source,是个开源,你知道它怎么玩的这个。
致远:OK,这个应该是在参与 freeCodeCamp 之后,因为是 2015 、2016 年的时候,在 freeCodeCamp 比较活跃,Miya 就邀请我加入 Core Team,作为一个 Core Member。就了解到,其实你不光是在为 freeCodeCamp 来国内进行步道,你是真心希望大家来参与到这个社区里面。当我有社区这个概念的时候,我才意识到我们 freeCodeCamp 这个项目它是一个叫做开源项目,我们去邀请别人来参与,希望鼓励别人通过参与这些项目让自己变得更好的时候,我后来有一种感受就觉得这好像就是一种开源精神的诠释,是其中一种。包括在大学的时候,就在宿舍,在自己的身边朋友,会在学校去办一些计算机相关的,主要是 Web,Web 相关的一些教别人怎么学 Web,因为当时我们有一个机房,机房正好让我管,我就每天中午的时候捞一帮学生过来给他们讲,正好在机房里面你可以练一练。
小马哥:我觉得从你身上有一条线很清楚,比如说你可能是 2003 年,比如那时候你可能六岁,六岁的时候你玩电脑,到后来你让你妈给你买 Flash 书,这也是第一个你主动的点,你主动要求你妈给你买书,到了后面上学的时候,你主动去找老师说我给你写一个程序,到了后面你又主动去参加王坚博士的活动,最后你又是主动找了 Miya,你把你一整条线,从你参与开源历程,当然你最开始可能就是你的好奇心,我见到怎么玩,由你的好奇到认识开源这两个字,到后面你对它有一个更深入的了解。比如加入 FCC 到现在一个全职,就一整套有一个关键词,主动。其实我们做开源的,大家做出来的很多人,就是什么事你要去主动,没有等。比如说你想假如说当初你没有主动要求你妈给你买书,你就不会去倒腾,假如说当初你没有要求老师把那个数据给你,你去做个 VB 程序,你可能不会去学习一些东西,是不是?整个过程有一个主动,这是一个很好的点,做开源我们一定是主动。现在很多人可能都习惯了,因为我们习惯了被动,上面给我分配任务我就能完成,我完成得很好,一定会完成得非常漂亮,你给我 100 分,我能做出 120 分效果。但是你让我主动去做这个非常少,我从你身上看到这一点,主动,特别好。
Rick:小马哥总结得非常棒,我想补充一个,我们今天这个节目的小背景,其实致远同学可能在一些 Twitter 或者朋友圈里面看到有我们开源面对面节目,就直接帮我们在,他可能已经看到我们 GitHub 有个 Issue 就直接提交 PR,四位也正好又认识致远,然后有了今天这个节目。所以小马哥就提的主动,我觉得真的是非常棒。你主动可以带来很多东西,尤其是在开源的领域里面,特别需要大家去主动地做一些事情。所以说现在可能也是,很多公司在 JD 里面会讲,你热爱开源或者什么,我觉得其中一个特质或者特点,其实大家在用人的一些单位就看到,做开源的人通常都会比较主动。
思为:我的感受,包括小马哥也总结,就是你主动的那股劲,包括你从小就很喜欢去,好奇心驱使你去了解这些东西,就认识一些人,去做一些东西出来。我觉得你是有一种很好的心智,让你去能够调动适合的资源,包括可能你在学校的时候你会选择又创造东西,又赚掉一点点钱。后来我也了解到,比如说你在学校的时候,你就已经能通过你自己的资源造福其他同学,并且在阿里云 OSS 把你 2 个月的生活费都扣掉的情况下,你还能自己 hold 得住。包括后来你在有经济能力,独立的情况下,你又很热心地去,你非常喜欢去做很多开源贡献者的一些捐助。因为我是看到,你甚至给一个其他国家的贡献者,因为他没有很好的电脑设备,你还给他捐了一个 M1 的 Macbook Pro,是吧?还是 Mini?我不确定,我感觉这个还是挺酷的,你是能够意识到怎么样去撬动哪里的资源,然后去做很酷的事,你又很喜欢奉献,我觉得非常可贵。而且我特别赞同的是你有一句话,就暴露出来你的 Motivation,能够全职的做开源,你觉得这件事是不言自明的,第一优先级的事。其实我相信我们在座的几个人,包括我们听众可能也是这么想的,但是我还想知道你是怎么样建立起来这一套理所当然的,如果能够全职对被付工资做开源这件事就是第一优先级,你是怎么样做出这样的一个决定,就经历了什么事情?
致远:全职做开源最重要的还是去做开源,因为我觉得做开源这个事情会非常酷,而且它其实是有收益的,大家会觉得我凭什么要把我做的东西免费给别人用,为什么你要把代码开放出去?而且除了代码之外,我们生活中像我们看 Netflix,看 YouTube,或者看国内的爱奇艺这些平台的时候,大家会去找一些第三方的,不是官方的一些资源,可能就是盗版资源,大家会觉得我明明能靠实力找到,为什么还要去给他进行付费?其实大家想过没有,我如果不付费的话,这些创作者怎么办?我这个时候我是刚才突然想到,我很小的时候,当时零几年的时候,大家电脑上会装金山独霸,当时是一个月 10 块钱,当然也有破解版的金山独霸。从它开始收费那一天开始,我就拿我爸的手机一个月发 10 块钱的短信费,给它来用正版的,我会想很享受这种感觉。包括那些操作系统,虽然后来知道买的那些 Windows 也是假的,很便宜,它正版应该是很贵的。但是当时我觉得那种意识应该是比较好的,支持正版,再回到代码上面,开源这块,这个就不言自明了,我做的事情我希望它被更多的人使用到,希望更多的人因为这些项目而受惠。比如说可能有人经常会问我说,你做开源项目的话,你怎么养活好你自己,你怎么去赚钱?这些 GitHub,或者像 Python 它的 Sponsor 的这种机制,以及它在实际的一个表现,比如说像 Vue.js,它每个月收到的 Sponsor 赞助费有多少,可以完全来养活尤雨溪跟他的整个团队,还有一些其他的像就自己常用的那些工具,那些作者,你用他们项目的时候他们帮你解决了很多的问题,我想通过一种方式来表示感谢,我觉得 Sponsor 是一种很直接的方式。我也希望自己真的在未来有一天也有一些很酷的开源项目,大家会喜欢,大家会觉得因为喜欢你,给你打个赏。
Rick:我想提一个问题,我相信其实很多做技术岗,尤其是研发岗,它都内心多多少少有那么一个冲动,说我想参与到开研里面,因为大家做技术,都想做很酷的事情,比如说我之前做 Java,写了好多年,大家都在用,就觉得几乎是 Apache,甚至比 Oracle 的贡献都更多,所以如果能参与到很多 Apache 的一些 Java 的开源项目,这个非常非常酷的,但是大家觉得我好像的能力好像没有到那个层次上,另外说我加班很多,有一些好的公司 996,什么 007 没有时间,我完全没有时间去参与开源,我也想参与开源,甚至我也想全职参与开源,但是大家觉得他现在一个状态到他期望的状态之间的鸿沟特别的深,特别的大,这一点我不知道你有没有深刻的感觉到这一个或经历过,但你能不能从你的一些自身经历去阐述一下,或者表达一下你的一个观点。
致远:其实 Rick 刚才说到的这个例子,我每天我都很忙,我没有时间去做一个看起来没有收益的事情。这就好比说,我之前那个哥们他不是计算机相关的,那哥们叫郭奇,我就算名字叫郭奇,有很多这样类似的朋友,他会觉得我要去考研,我要通过考研的方式来进到研究生里面,可能未来会找工作更容易一点。或者说现在我觉得我有更重要的事情,虽然我想赚钱,我想有更多的收入,但是我有更多的事情,总会找各种各样的理由拒绝掉。我觉得建议要走出这一步。打破这个怪圈,因为你不打破这个怪圈,你不开始第一步你永远也不会开始。回到我一个很具体的例子上面,因为从 2019 年之后,我是自己主要活跃在 Apache APISIX 这个项目里面的,在这个项目里面也的确会遇到很多国内的开发者,他们可能第一是年纪,我是 1997 年的相对于我会大很多,加上最近两年开源在国内一下子流行起来,对他们来说都是一个很新的东西,他们再用你的项目,他们想给你做贡献,他们看到你的代码,他们用你代码,他们能够通过一种比较快的方式把你的代码下载下来,但是他们遇到问题的时候想反馈给你,或者说我能不能把这个东西改掉贡献给社区,他不知道怎么做。针对这些用户怎么办呢?我主要是指国内的这些开发者用户,我们会有一些交流渠道,像 GitHub 我们当然都很推荐大家用英文在 GitHub 上交流,但是按照国内现在开发者的情况,其实不能 100% 要求,遇到这种第一,如果说跟他们在 GitHub 上面聊几次之后,发现你写了一些东西,他们就回来简单的几句或者回复你中文,明显能感觉到对方不耐烦,但是对方会觉得这种异步沟通的方式会很难,他们不能理解,但他们又真的想帮你改掉这个问题,想推进你社区进步的时候,我会主动去 Touch 他们,就是翻他们 getup 的邮箱,如果没有邮箱的话,就找找其他方式,社工出来他们的一些信息就找到他们,我们能不能约一个腾讯会议,15 分钟就行,聊一聊。这是第一,GitHub 只是一种渠道,类似的还有邮件列表,微信群、QQ 群,因为我们会持续 Watch 这个项目它各个渠道的用户反馈,当我看到你真的很活跃,你真的想解决这个问题,你真的是在为这个社区考虑,而不是说我在这就想白嫖你,他真的是想帮你做事,但是不知道该怎么迈出第一步的时候,我觉得作为社区的一些维护者,或者比较积极的可以主动的去联系他们,建立这种连接,因为你做社区你就是要建立各种各样的连接,你社区之间成员与成员之间的连接,成员和项目的连接,以及你社区跟其他项目其他社区的连接,这些都是要做的。针对 Rick 刚才提到这种问题,如果我的话我会主动的去联系他们,真的会约很多的会议,不厌其烦的跟他们聊,当然我们也会在文档上面去写,你发现一个问题,文档类问题,你一步怎么做,两步怎么做,一、二、三跟着走,如果是代码问题的话,我如果不懂,我会帮他们搭个桥,因为我知道社区里面谁懂,我就帮这个用户跟懂得这个人建立一个连接,搭一个会议,大家把问题解决掉。这样子新人他知道说社区的流程是怎么样了,知道有人在关心他,对于这个项目来讲,这个项目它更完善了,其实都是有互惠互利的。
Rick:我稍微总结,后半截的话,智元可能讲的更多是从角度来讲的,当然我一开始的问题想帮想要参与开源的一些人提的一个问题。反过来讲,比较健康活跃的开源项目或者开源社区的都在正在关注,正在监控,监控这个词不太好,就是尝试着关注大家的一个状态。如果说你表现出来这种积极的话,每个人都很乐意地帮助你去真正参与到开源社区里边。所以说其实结合致远讲的第一部分,你要迈出第一步,打破这个怪圈。打破了之后你要干什么,不见得需要写代码,只要表现出你的热心,你的积极态度,会有人来联系的。
致远:是的,而且我自己是在 2019 年末的时候,当时 Apache APISIX 这个项目捐给了 Apache 软件基金会,因为捐给基金会的时候,它会允许你去选择一批最早的这些,叫 initial committer,最早的一批 committer,我就收到邮件说,你要不要加入 Apache 这个项目,你的 GitHub 上面可以有一个 Apache 的羽毛的 Logo。那肯定加入,当时我认为这个事开心的不得了,然后我就很骄傲地把自己的名字签上去,拍照传给他们,有了自己的 Apache ID,我觉得这是非常酷的一件事。
Rick:很酷。
致远:后来才知道什么,后来才知道像很多开源软件,也不是开源软件,很多公司都在支持开源项目,像,它们对于你有 Apache 邮箱,对于这种比较有名的项目,你是他 member 的话,他会给你很多福利的,这是我后来才知道的。
Rick:我今天才知道,更羡慕了,羽毛虽然轻,但是它代表的意义还是很重。
致远:而且你去跟外国的贡献者或者外国的这些用户,你 follow 的那些 Twitter,你跟他们聊的时候,你说我是 Apache Member,因为 Committer 和 PMC 都是 Member,都是属于 Apache 成员,跟他们聊的时候,他们会表示觉得很惊讶,会觉得你很厉害,他们更愿意跟你聊。这是无形中,就你没有很直接的金钱上的回报,因为我觉得做事情的时候不用太图这种金钱上面的回报,你专心做好你想做的事情,财富什么的都是一些附赠品。
小马哥:我还有一个点,你前面提到的参与开源,现在也有一些问题,大家很多人都想参与开源,也有个卡,大家都会上,我一定要是贡献代码才行,但是你前面也提到了,不一定是写代码才参与会员,从你个人角度或者你身边的一些故事,有没有给大家一些建议?
致远:有。
小马哥:我不写代码也可以参与会员的。
致远:先说 Apache,它有一个网站叫做 community.apache.org,这个里面写了 Apache 社区里面的各种规则,其中就提到说你不一定非得贡献代码,才能成为他的 Committer 或者 PMC。他会觉得你凡是为 Apache 这个项目考虑的,你在帮助 Apache 成长的,这是一句很通俗的,是很宽泛的一句话,就是你帮助这个项目发展成长的,都算是贡献。具体点,对于开发者来讲,最直接就是代码,对于一个非计算机相关从业人员,比如说我喜欢读书,我看了很多很多的书,我看到你这个项目的文档的时候,虽然我不懂里面你到底说了什么,但是我能看出来有些项目它的文档是直接机器翻译的,我是不是可以去帮忙?如果你的英语不错,你是不是可以去帮他做一些更地道的翻译,这是一种文档上的非代码贡献。还有第三种是做布道师,OK,我了解你这个项目是做什么的,我不需要关心里面到底实现了什么细节,我只需要知道你有什么功能。我去跟 Rick 讲,我去跟小婉哥讲,Apache APISIX 是做什么的?它能解决什么问题?它的用户有哪些?到底这个项目帮助他们解决什么问题?你在做什么事情的时候,用到了这个东西可以帮你解决问题,就这种也属于布道,你不需要写一行代码,你只需要去像了解一个新的 APP 一样,你去了解它,对它比较熟悉,然后去对外讲就好了。还有像对于 Apache 基金会来讲,你去帮基金会来做布道,你去讲 Apache Way,讲 Apache Way,去讲它的一些故事,对外做分享,这也算是一种贡献。大家都喜欢听故事,你在给大家分享开源故事,然后越传越多,这也算是有贡献。比如说 Apache APISIX 就遇到很多开发者,他会说你这个项目做得不好,他就真的会写你这个项目做得不好,但他不会告诉你说这个项目到底是你在用什么事情的时候,用什么功能时候做得不好,因为我们可能对 Apache APISIX 比较熟了,所以我们 get 不到你的点,但如果你能描述得更清楚,社区这边会有人来帮你把这个东西给你解释清楚,然后看一看到底是文档写得不好,还是代码写得不好。然后我们再反补到项目里面去,这样子后面的人他们可能就不会再遇到这类问题了,这其实也是一种贡献。
思为:比如说你会在社区里边看有些人想要贡献,但是他好像没有时间,或者是不知道该怎么走 Flow,你会人肉他的邮件,找到那个人跟他建立同步的一个 15 分钟的 Meeting,我觉得我理解这是一个典型的,你作为 Community Manager,社区经理这样一顶帽子的工作,你能给我们介绍一下你作为这样一个角色的 Daily Work Life 是什么样的?还有你是怎么考虑选择切换到这样一个角色?你会不会担心远离了技术?怎么样保持你在 Coding 上就持续精进或者有进步这样的?
致远:OK,首先就是我不是 Apache APISIX 社区的 Community Manager,Apache APISIX 社区里面,它是一个基金会项目,这个项目它不归属于任何公司,所以我只是对这个项目纯粹有好感,参与的时间比较早,所以我愿意去帮忙来做一些维护上面的事情,任何人都可以。关于说 Work Life,有时候真的会刷一宿、刷一整天的。毕竟现在这个项目它的初始作者是中国人。这个项目有很多的中国的用户,这些中国用户我举个例子,有些用户我们希望他在给 GitHub 上面写英文,希望他能写得很详细,大部分做不到。我也能理解,甚至我也想过说能不能帮助他们做一些机器人,他们写中文,机器人翻译英文。但是为了社区长期的发展来看,我们不希望让非英文在上面太多,因为我们想让它变成一个 Global 项目。但是也会很惊喜,有些用户他真的写得很详细,他可能遇到问题之后,他真的能把上下文哪个版本,它是怎么操作的,一步一步给你写得特别详细。针对这种用户,我心里面这种宝藏用户,那肯定要跟他 Connect,所以就会主动去找他,其实找的时候也会比较花精力。下一个事,我每天会去翻一翻各个群或者各个渠道的反馈,看有哪些反馈,但怎么说,其实反馈会很多,自己也没有精力真的一条一条给它记录下来,所以还是在朝着引导他们往上面留言这个方向来走。现在我在做的事情是引导他们继续往上来留言,这样子我不需要去微信群、QQ 群里面收集零碎反馈了。还有一件事,因为作为一个开源项目,我们肯定希望它被大面积的使用,我想找哪些用户在用,我就会去或者说 Google 上面去检索 Apache APISIX 这个关键词,看有谁提到了这个词,就能发现很多真的是宝藏。有些人会用 Apache APISIX 之后写了很多文章,但是他没有说,因为官方并没有很强的意识引导他去给官方贡献就是投稿,但他自己会写博客,讲这些 Best Practice,我就会去联系这些作者,去想办法让他们把它投稿到社区上。对于这些作者来讲,对于这些作者来讲也是一种激励。第二个会去发现一些新的公司在用,但是他们并没有给 Apache APISIX 做贡献或者留言,他们只是自己在用。前段时间上周日晚上我在翻的时候,突然发现有一个公司是瑞士电信叫 Swisscom,瑞士电信就在使用 Apache APISIX 和一个高级功能,我就联系到了它的 Maintainer,他说他自己都没有想到 Apache APISIX 会有人去他们的仓库里面留 Issue 来 Say hello。像这些用户我也会跟他们持续的 connect,其实每天做这些事情一句话就是倾听。
小马哥:这样你刚才说的有一点我特别赞同,其实你提到 Apache APISIX 不是特别希望有太多的这种中文内容,其实大家不要误会我们不支持大家写中文。有两个点我印象比较深刻,第一个就是说开源是中国和世界同步的绝佳机会,因为开源的魅力所在就是全球各地的人,利用各个角落,大家能通过一种方式去协同协作,协作就意味着大家要互相彼此能认识;第二个,今年 7 月份 GOTC 大会,就是全球技术峰会上,当时邀请了 Linus 大神做了一个分享,最后一个问题问到他:目前为止中国的开源的开发者如何能更好地参与开源,他提到了两点:第一点就是文化,咱们就不提了;第二个他就提到了语言,他说这也个是个障碍。他又说,我想说这个东西,当时因为对方听不清楚,听不懂,所以他也就建议大家把语言这块我们不是说中文不重要,在开源这一块,如果大家尽量去把英语练好,因为你能把你的意思表达清楚,你出去分享也好,写写东西也好,这是个很好的一个同步的机会。现在也有助于我们国内很多的留学的开源项目走向全球,比如广播电视。这个没有对中文鄙视的意思,确实是在开源这块,如果英文好对我们整个开源促进发展有很大的帮助。
致远:OK,其实在 Apache APISIX 这个社区,我们都知道它有很多的中文用户。针对中文用户,TA 们真的不愿意去 GitHub 上面提 Issue 的原因:他用中文提交后,社区会请 TA 写英文。后来我们办了两件事,第一件事是 TA 提中文之后我们去帮 TA 翻英文,但不是说正文全翻,是把那个标题给它翻译成更语义化,因为我们确实精力有限,不能说每个都帮忙翻译,但是标题我可以帮 TA 语义化;第二,会留言告诉对方说,如果 Google 访问不了,你可以用百度翻译,你就把你的内容写好加上去,这样子最近社区上面提英文的那些用户多了很多。
思为:刚才其实你已经提到过开源之夏,我记得你之前给我们团队内部做过一个开源的魅力的分享,后来你好像在 Apache 的 Conference 上也讲过类似的。一个是我印象中你有跟我分享过一个你所观察到的参与一个 Google Summer 那个 Codel 的现象,我不知道您愿不愿意再分享,还有你可以给我们简单地说一下,你理解的开源的魅力,这样的 Topic 吗?
致远:OK,因为那个分享应该是在去年的年初的时候,就挺早的。当时是经纬中国的合伙人介绍我给这边的伙伴,就聊了一下。那个阶段其实对我自己来说,最直接的就是第一,你加入了一个很棒的基金会组织、开源组织,加入 Apache 组织你会觉得很骄傲,这是内在的。第二,你做的这个项目真的是被很多用户在用。像微博、WPS,这些用户,还有爱奇艺,你在用 WPS 的时候,你的信息它都会经过的处理,你在刷微博或者看爱奇艺的时候都会被代理掉。你做的东西它离你没有那么远,你是你产品的用户。这也是一种内在激励,也是普惠,因为有了你这个项目,这些企业它能用得很安稳,它不需要在流量上面有太多的关心了,太多的担心了。第三点,通过开源项目,我认识到了很多朋友,很多也是志同道合的小伙伴,像在座的几位,还有 GitHub 上 follow 的,Twitter 上 follow 的这些小伙伴都跟他们有 Touch 过,跟他们聊过,你跟这个世界的距离直接就拉近了。第四点是你通过开源项目去引导着自己身边的朋友,他们也能因为开源而受益,这个你会觉得很爽。有一句话是这么说的,你赚钱的时候你得让你身边的同学、朋友也跟着一块,要不然的话你走不远了。让他们通过开源项目来学习技术,或者说是给自己增加影响力,对他们来说他们的视野,他们的眼界,他们的能力或者他们最直接的薪酬提高了,对于自己来讲,两个人之间的感情也更好,对吧?最后一点对于自己很直接的,就是说有一些资本在支持你去做这样的事情,其实就算没有在现在的这家公司,我还是会继续去过去,不管是 Apache APISIX 还是未来的一些新的项目,我都会去持续的 Watch 它们。做开源项目,这种开源精神它不会因为说你是不是有资本在支持你,你才做,而是一种很自发的,你会觉得很爽,你的朋友会觉得很爽,你整个身边都是乐呵呵的,挺高兴的,我会觉得这样状态会很好。
思为:而你完整的我可以放在里面,大家感兴趣可以去看。因为我其实之前就想问,你在这里又提到你的朋友可以受益,我真的很好奇,我们时间很有限,我很好奇,你能不能简短的给大家介绍一下,你给你那一位朋友,因为我理解你把你那位郭同学,你好像就是把一个从麻瓜家庭出生的有魔法天赋的一个小朋友,亲自把他变成了魔法师。我特别想知道一些细节,比如说你们俩是什么样的频率接触,你留的全都是你们社区里头的一些 Task 吗?还是你以前之前做过的东西?什么样子的?能给我们简单介绍一下。
致远:OK,首先第一点就是我自己很认同,通过实战项目来提升自己的技能水平。实战项目指当前接触到的开源项目以及自己的一些渠道,因为我是第一次带他带人,那么我只是知道说通过实战可以来让他的经验,不管他简历会很漂亮,他的经验会得到很大的提升。OK,具体项目的话,在他学完之后,我就联系到朱峰,津津乐道播客主播,他正好有一个项目是相关的,就是纯志愿者行为,没有任何的利益,对。当时本来是请我来做,后来正好郭奇来了,他的技能也学得可以了,我觉得该上一个台阶了,而且也不着急,就让他拿来练手,我来做帮他做 Review。然后那个项目完之后,紧接着就是 Apache APISIX 的一些开源项目,因为当时它作为一个服务端项目,它的子项目其中有一个项目贡献者其实不多,正好拉过来熟悉熟悉项目来做一做任务。你要说频率的话,其实我觉得跟主动也是有关系的,他自己是比较刻苦的。还有一个例子,是在 Summeer 2020 的时候,Summer 2020 的时候,有一个小哥是天津的,天津小哥,他现在还在上学,大三,他当时是报名了我的一个项目,前端做的特别棒,结果等活动结束之后,发现 Golang 写的也特别好,就服务端写的特别棒,结果现在 Apache APISIX Nginx Lua 都在搞。搞得特别赞,在前段时间,我也投票,我们内部通过把他选为了 PMC,是我们最小的 PMC 成员。
Rick:这个也是非常酷的一个!
致远:对。
Rick:真的非常酷,就是能证明你不见得说非得一条路走到黑,我提供一个很牛逼的、很厉害的代码才能成为 PMC 或者 Committer。这个故事真的也非常好。
致远:而且小哥儿他是读商学院。
思为:你想成为一个什么样的人?
致远:OK,关于这个问题,我的答案还是很坚定的:从很小的时候,读了一本书叫《做最好的自己》,李开复博士写的。说到李开复博士,现在我跟他之间的距离就隔了一个人,我觉得这还是很酷的,能跟自己从小崇拜的人离得这么近!回到刚才的问题,我觉得要继续去坚持做一个有同理心的人。
小马哥:很酷。
Rick:酷。
小马哥:点赞。
Rick:请给我们下一位嘉宾提一个问题,我们这有点像拆盲盒,也不知道下一位嘉宾是谁。
致远:OK,因为我自己比较喜欢听故事,那就聊一聊他觉得印象深刻的故事。
(完)