编辑 | 张婵
视频 | 二叉树团队
姜宁,华为开源能力中心技术专家,目前在华为负责 ServiceComb 开源项目。前红帽软件首席软件工程师,在企业级开源中间件开发方面有十余年经验,有丰富的 Java 开发和使用经验,函数式编程爱好者。从 2006 年开始一直从事 Apache 开源中间件项目的开发工作,先后参与 Apache CXF,Apache Camel,以及 Apache ServiceMix 的开发。对微服务架构,WebServices,Enterprise Integration Pattern,SOA, OSGi 均有比较深入的研究。
2000 年,本科毕业的姜宁来到当时还很荒芜的西二旗,去华为大厦面试,后来因为念研究生就没有选择去华为。2005 年,在西二旗的海纳软件(IONA)工作的姜宁开始接触开源项目。那时西二旗刚刚开始发展,政府也支持软件园的建设,这里聚集了很多科技公司,其中不少是冲着前三年租办公区免租金来的。IONA 没有熬过头三年,但是开源背景把姜宁带到了红帽,在顶级开源公司工作了几年。2017 年,姜宁又回到西二旗,进入了华为。
感觉是绕了一个圈。西二旗现在聚集了很多核心软件公司,也有了硅谷的氛围,这可能就是软件互联网行业发展的一个趋势吧,相信你们以后应该也会有很多跟西二旗接触的机会。
姜宁参与开源的经历跟大家不太一样,是直接走的公司流程。2006 年时,IONA 有个项目要开源,姜宁就轻松成为了一个初始 committer,开始接触 Apache 软件基金会(ASF)。08 年时在 Apache Camel 项目中,姜宁被选举成为 committer, 开源之路开始走顺了。后来又参与了很多 Apache 项目,开始 mentor 别人,直到有一天收到 ASF 的信,邀请姜宁成为 Apache member。
我填完(申请表)之后很高兴,这相当于是 Apache 对我的一个认同。采访过程中当姜宁说到这里的时候,我们仍然能从他眼里的神采感受到他的喜悦。
姜宁说,其实开源是一个圈子。社区、基金会有自己做事的方法和流程。参与开源社区,不断地认识不同项目的负责人,了解开源社区的运作,才算融入了开源的圈子。而没有进入开源圈子的人,很难靠自己把一个项目培养起来。
早些年的时候 ASF 里面国内的 member 比较少,参与孵化的项目也不多。作为中国人,姜宁很愿意帮助来自中国的项目在 ASF 里成长孵化。
所以后来华为就找到我,因为华为有一个微服务的项目想进入 Apache。刚开始的时候这个项目还没有起名字,后来我们给它起了一个名字叫 ServiceComb。service 就是服务嘛,comb 有蜂巢的意思,意味着微服务就是由很多很小的东西拼在一起的。
从一个初始 committer 到项目 maintainer 再到 mentor,在开源社区多年的经历和多种角色的变换,让姜宁感觉到开源社区很像武侠小说里的江湖氛围:mentor 协助项目孵化,把项目归类,跟项目和基金会的董事层沟通,这个过程就像武林中立一个山头带一群人成长;GitHub 上大家通过 pull request 交流则像大侠之间相互切磋武艺。而在社区里大家都是主动、自愿地展示自己的能力,正如漫威电影里的台词一样,“with great power comes great responsibility",这一点也很像武林大侠的侠义精神。所以在开源社区中,“人际关系很重要,人与人之间的交互很有江湖氛围。”
从 committer 到 member,再到 mentor,其实也是一个不断成长的过程。一个开源项目的 maintainer 需要审核项目贡献者在 GitHub 上提的 pull request,和贡献者进行沟通并培养社区里的开发人员。而作为 mentor,就像是“师傅”一样的引领者角色,要教会不会玩开源的人怎么进入开源圈子。
AFS 提倡 community over code (社区大于代码)。从这个层面来说,能把圈子维护好,比写一手好的代码更重要。开源社区中除了需要会写代码的开发者,还需要社区布道人员,对外宣讲人员,写文档的人员,以及前端美工设计人员。
所有对推动项目进步有价值的人都可以成为 committer。从 21 年前“开源软件”这个词第一次出现,关于开源与商业公司之间竞争的讨论一直没有停过。
在姜宁看来,开源这个事情,其实就是一个非零和(共赢)游戏,这也是 Apache 一直在强调的一点。
一个公司,它把自己核心的东西拿出来了之后,真的会失去这些东西吗?所有的公司在给予的同时,其实会收获更多。姜宁的这个理解来源于《降临》这部电影。电影讲述了 12 个神秘飞船降临在地球上所发生的故事。电影中,12 国分别破译了外星人的语言片段,但是这些片段被列强据为己有,彼此不沟通。而要获得外星人的真实意图,必须将 12 个片段拼接到一起才能最终破译。这里面的隐喻用在开源与商业公司之间的竞争非常恰当:开源社区中不是“你之得即我之失”这样一种简单的关系,而是通过成果共享和努力解决共同的困难来实现多赢的结果。比如谷歌最开始做 Kubernetes 时,把自己的核心技术开放出来,吸引了很多公司,甚至是竞争关系的公司参加进来,后来 Kubernetes 慢慢变成一个撬动世界的杠杆,促进了整个云计算行业的发展。
对于开源项目来说,大家针对共同的问题会想尽一切办法,动用一切资源来解决问题,最后可能真的能成就一项改变世界的技术。
如果要用一个词来表达自己对开源的印象和感悟的话,姜宁会选择“分享”这个词。
开源其实很大程度上其实是建立在分享以及协作的基础之上的。
姜宁有一次无意间翻到十几年前参与开源项目时的一件 T 恤,还是忍不住感概自己这么多年从开源社区中的收获。姜宁说,在开源社区中大家最容易收获的就是无偿的帮助。因为在这里信息都是开源开放的,每一个人都可以学习和成长,获得他人的帮助,也能尽自己的能力帮助别人。
ASF 有个很重要的理念:For the public good,也就是从整个人类的角度,或者是为了公众的利益来做开源这件事情。从这个角度来说,个人或者公司的利益就已经很渺小了,所以大家可以跨越公司利益一起去做协同合作。所以 Apache 是一个相对来说比较草根一点的组织,它不会屈服于商业,也就很难被上市公司控制。这也是它能够不断发展壮大的最主要的原因:大家都能相信他的公信力。
另外,for the public good 其实更多程度上是 for the users' good,就是给更多的用户带来福祉的一个事业。这样的话其实也会带来一个好处:它可以让不同的商业公司能够站在一起,为了一个更大的一个目标去去交流、沟通和协作。所以姜宁觉得很多时候一些种族、战争方面的事情,如果放大到全人类的角度上来说,其实都是能迎刃而解的。
,