开源引路人:我的Apache Mentor之路

2019 年 1 月 25 日

开源引路人:我的Apache Mentor之路

从 Apache 基金会 maintainer 到 mentor,13 年开源经历的心路历程。


姜宁,华为开源能力中心技术专家,目前在华为负责 ServiceComb 开源项目。前红帽软件首席软件工程师,在企业级开源中间件开发方面有十余年经验,有丰富的 Java 开发和使用经验,函数式编程爱好者。从 2006 年开始一直从事 Apache 开源中间件项目的开发工作,先后参与 Apache CXF,Apache Camel,以及 Apache ServiceMix 的开发。对微服务架构,WebServices,Enterprise Integration Pattern,SOA, OSGi 均有比较深入的研究。


00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.5x
    网页全屏
    全屏
    00:00


    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,就是给更多的用户带来福祉的一个事业。这样的话其实也会带来一个好处:它可以让不同的商业公司能够站在一起,为了一个更大的一个目标去去交流、沟通和协作。所以姜宁觉得很多时候一些种族、战争方面的事情,如果放大到全人类的角度上来说,其实都是能迎刃而解的。


    2019 年 1 月 25 日 10:345504
    用户头像
    二叉树视频 InfoQ旗下短视频品牌

    发布了 98 篇内容, 共 21.6 次阅读, 收获喜欢 156 次。

    关注

    评论

    发布
    暂无评论
    发现更多内容

    第9周总结+作业

    林毋梦

    秒杀系统的架构设计

    莫莫大人

    我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜

    楼下小黑哥

    Java jdk

    白鹭引擎助力《梦幻西游网页版》刷新h5游戏新高度

    DT极客

    【得物技术】流量之战—性能优化三十六计

    得物技术

    Java 流量 得物技术部 商品 电商平台

    【第九周作业】

    Aldaron

    SpreadJS 纯前端表格控件应用案例:SPDQD 质量数据云

    Geek_Willie

    SpreadJS 案例

    技术贴丨教你使用华为云鲲鹏服务器部署Discuz!论坛

    华为云开发者社区

    鲲鹏920 服务器 华为云 Discuz! 华为云鲲鹏

    不仅性能秒杀Hadoop,现在连分布式集群功能也开源了

    爱倒腾的程序员

    大数据 涛思数据 tdengine 物联网 时序数据库

    并发-草稿

    superman

    JVM系列之:从汇编角度分析Volatile

    程序那些事

    Java JVM JIT 汇编

    尚未到来的远程工作

    ThoughtWorks洞见

    敏捷 敏捷开发 软件开发 远程办公 thoughtworks

    一周信创舆情观察(7.27~8.2)

    统小信uos

    作业一

    Kiroro

    Ubuntu启动盘无法格式化

    kraken0

    NOSQL or NEWSQL

    大唐小生

    sql nosql

    加快速度推进区块链融合发展

    CECBC区块链专委会

    区块链 行业资讯 产业落地

    关于微信电子发票生态,这三种服务商最有机会

    诸葛小猿

    电子发票 发票

    HomeWork

    天之彼方

    Docker-compose实战

    北漂码农有话说

    面经手册 · 第2篇《数据结构,HashCode为什么使用31作为乘数?》

    小傅哥

    Java 数据结构 小傅哥 面试官

    总结

    Kiroro

    秒杀系统设计初稿

    jason

    树莓派上安装docker记录

    田振宇

    计算机网络基础(十四)---传输层-UDP协议详解

    书旅

    计算机网络 网络 协议栈 通信协议

    训练一个数据不够多的数据集是什么体验?

    华为云开发者社区

    数据 数据集 华为云 标签 modelarts

    数据库实践丨MySQL多表join分析

    华为云开发者社区

    MySQL 数据库 华为云 join 多表join

    Atlassian 重磅推出12个新功能为您打造全新 DevOps 体验!

    Atlassian速递

    项目管理 DevOps Atlassian Jira

    JVM学习总结

    jason

    《RabbitMQ》如何保证消息的可靠性

    Java旅途

    阿里最“短命”的P10?入职不到3周,钉钉副总裁张志琦因个人原因离职

    程序员生活志

    阿里巴巴 互联网热点

    开源引路人:我的Apache Mentor之路-InfoQ