从开源爱好者到 Apache 董事,他花了 11 年
姜宁致力于成为连接国内开源圈与Apache基金会的桥梁。如他所说:“开源这条路越走越宽”,他的贡献被认可并成功当选了ASF Board成员。那么,从开源小白到ASF董事要几步?本期开源访谈录邀请到了新晋ASF董事姜宁来讲述他的经历。
如何理解开源?新晋ASF(Apache Software Foundation)董事,ALC Beijing发起人姜宁有自己的认识:“开源这种开放式协作可以凝聚众人的智慧攻克难题”。回忆起自己的学生时代,当时国内开源尚未普及,姜宁鲜有参与开源的机会,这也成为了他如今努力在高校宣传开源协作方式和宣扬Apache文化的重要动力。尽管开源之路会有雾霭、泥沼,但也因为他的坚信和认同,而从未想过放弃。
正如姜宁所说:“开源这条路会越走越宽”。在社区中十几年如一日的贡献,成为了他近期成功当选新任ASF董事会成员的关键因素。回顾自己在Apache软件基金会的生涯,从项目开发到参与社区治理,他这一路走得很扎实。未来,他也将以Apache董事的身份继续发挥桥梁的作用,将国内开源力量与Apache更紧密地相连,同时帮助更多开源爱好者打破地域、文化、语言的障碍,成为国内开源中坚力量。
开源参与者们该如何在开源社区中提升个人影响力?我们该如何看待开源这种协作方式?Apache基金会的魅力体现在哪些方面?本期开源访谈录邀请到了华为开源技术专家、Apache董事会成员姜宁来分享他对开源的见解。
一步一个脚印,开源之路是越走越宽
CSDN:恭喜你当选新任ASF董事会成员,对你个人而言,也算是达成了人生中的一个小目标。可以和大家分享一下你的开源之路吗?
姜宁:我加入Apache软件基金会时间比较长,Apache的组织阶梯是从Committer开始,到PMC成员、ApacheMember再到Board成员。2006年我加入Apache CXF成为它的Initial Committer,之后参与了Apache Camel和Apache ServiceMix的开发,在2011年经过投票成为了Apache Member。
从Apache Member成长为一位Apache Board,我用了11年。时间之所以如此久,是因为ASF成员会参与到具体的项目中,精力大多花在了项目的开发和优化上。我真正参与开源社区治理是在2015年成为Apache孵化器导师,尤其是2017年开始指导ServiceComb并加入华为之后。与基金会成员逐步接触的过程中,我也了解到其实我们在基金会中有很多可以参与的事项。因此,2020年2月我们成立了ALCBeijing,致力于在国内推广Apache之道,帮助国内开源同仁的成长,在此期间帮助了约10个Apache项目孵化。这是一个循序渐进的过程,虽然花的时间较长,但我认为这一路走得很扎实。
今年董事会成员的竞选相对激烈,二十多人提名,最终15人参选,最终会选出9个董事会成员。非常感谢国内Apache Member们的支持,感谢Member给我投上饱含信任的一票。今年能够入选Apache董事会,成为Board Member,我非常荣幸。
CSDN:从2003年开始职业生涯至今约19年,这一路你有遇到过难以克服的困难或是信念动摇的时候吗?
姜宁:到目前为止,我没有想过放弃,我十分认同开源这条路,并且相信它会越走越宽。但2008年,我经历过一个风波。当时我在IONA研发中心工作,春节前我们收到消息公司要关门,需要裁员。那时我刚进入开源圈,能拥有一份允许我在上班时间做开源的工作很难得。公司只留下了我和另一个同事收尾,对未来的不确定让我在最后的两个月备受煎熬。我曾考虑转行做咨询,以自己学到一些玩开源的技巧来指导他人,但很快放弃了,最终决定追随内心对开源的热情。于是写了封信给管理层,表达了我对开源的热爱,希望继续参与我维护的项目。
当时还有个有趣的插曲,我那时正在攻Apache Camel,想靠自己的贡献赢得到社区认可。在得知公司要关门时,我收到了晋升为Apache Camel Committer的好消息,这使我大受鼓舞。这个项目我已经参与了半年多,这也是我给管理层写信最主要的原因。
直到2009年3月份,事情迎来了转机,我得到了一个可以继续从事开源开发工作。之前先离开的10个同事入职了红帽软件,后续我们公司也被红帽收购,机缘巧合我们胜利会师了。这也印证了开源这条路会越走越宽,未来我会在开源这条路上坚持走下去。
CSDN:一些想玩开源的学生和技术人该从何下手参与开源,并在社区内提升个人影响力,能否请你给出一些建议?
姜宁:大多数人参与开源都是从开源使用者开始。参与开源最好的方式是选择一个你感兴趣的项目,真正融入到社区,这里会有很多大佬帮助你成长。我也是从一个小白开始,通过社区中很多大牛的帮助逐步成长。
融入社区很重要的一点就是与上游社区互动。我发现,很多人在开源社区中只局限于个人使用和修改项目,不参与上游社区沟通,这样其实会错过难得的成长机会。很多开源社区还会组织夏令营或编程实践活动,我特别建议大学生或者技术新人参与这些活动积累经验。好的工程实践是无法从书本获得的,需要在项目实践中慢慢积累。如果没有开源的实践经验,在初次参与开源时,首先需要适应的就是代码风格,我第一次向Apache项目提交代码,就花了一整天修改我的代码风格。
对社区新人而言,最难的还是如何赢得社区的信任。我建议可以用多种途径来实现,一方面你要展示出你最好的一面,通过不断做贡献可以得到社区认可,只要你坚持是容易做到的。另一方面,你也得有足够的耐心,特别是当别人给你的代码提修改意见时。曾经在我参与的项目中,有人提交的代码在审查中被提出85个修改意见。把代码审查当成自己学习的机会,用心打磨代码,我相信代码被合入的那天你会超有成就感。如此一来,随着你与社区的互动、贡献越来越多,你自然而然就会被Vote成Committer,逐步承担更大的责任,这就是信任建立的过程。
“成为连接Apache和国内开源爱好者的一座桥”
CSDN:你在国内发起了ALCBeijing的组织,目前它已经成为连接Apache基金会和国内开源小伙伴们的重要桥梁,你发起这个组织的原因或契机是什么?
姜宁:ALC Beijing是一个副产品,它的诞生原因跟Apache基金会的机制有关。
开源协作的本质是一群人为了共同的理念聚集在一起,合力把一个项目做好,这也是Apache软件基金会成立的初衷。因此,认同Apache的文化,并且达成有效协同很重要。那时,Apache基金会时常会进行Apache Local Community建设,将大家组织起来面对面交流,同时进行培训布道。我在辅导项目时结识了一些开源同仁,大家也会经常联合起来举办Meet up。但事实上Apache基金会大部分成员都在美国,距离国内的小伙伴们很远,于是我以此为契机发起了ALC Beijing。
我本想从华为申请经费来组织一场聚会,但因为疫情,我们被迫把活动迁移到了线上,并且申请了公众号、博客账号,在运营中我们发现这种方式的传播效率很高,ALC Beijing也因此被更多国内开源爱好者所了解。去年,深圳的小伙伴也发起了ALCShenzhen,我作为Mentor提供了一些经验指导,ALC组织自此真正把国内开源爱好者联系在了一起。同时,这些成果也为我竞选ASF董事会打下基础。这些正向驱动也是开源的美妙之处。
CSDN:你身负ALC Beijing的发起人、华为开源技术专家、Apache董事会成员多种角色,在遇到基金会利益与公司利益冲突的情况下,你将如何平衡各种身份之间的关系?
姜宁:站在比较高的角度来看,这些工作有的共同点就是,掌握开源的基本理念,同时帮助更多人理解它。无论在公司内部还是基金会层面,我都在扮演“桥梁”的角色,没有太多不同。在Apache基金会中,尤其是在指导孵化器项目的过程中,我会接触到各种成功或失败的案例,这些案例让我在公司内部,尤其是在内源推广的相关工作中,更好地帮助公司同仁了解开源运作方式,利用开源优秀实践推动公司软件开发。这些知识都可以通过我这座“桥梁”平滑地迁移。
当公司和基金会利益产生冲突时,最重要的是在思考问题时“戴两顶不同的帽子”。
这里也有个小故事与大家分享,2012年左右,作为Apache Camel项目PMC Chair的同事离职了(注:Apache Camel为红帽公司投入维护的开源软件),我们认为他不再适合继续担任项目的PMC Chair。最初我也认同这个观点,我们在维护公司利益。这件事在社区内、邮件列表上引发争论并持续发酵,甚至有一些同事对他展开人身攻击。直到一位资深Apache Member在邮件列表中回信表示,当我们戴上社区的帽子来思考,就不该如此处理这件事。这句话让我醍醐灌顶。作为开源社区的成员,也需要维护社区形象,让社区按照规则运作。其实基金会对这类问题有清晰的指导,我们完全可以通过投票的方式,按照社区既定规则执行。但当时我们之所以会在邮件列表吵得不可开交,最大的问题是因为我们只戴着公司的帽子,站在公司利益角度来处理社区的问题,这是错误的。
经此一事,我学到的首要一点就是,在社区中,要站在社区的角度考虑问题,维护社区利益,求同存异,推动社区朝着大家共同的目标发展。一旦我们转换看待问题的角度,有些事就会变得简单。第二点则是在邮件中发表意见时,可以在观点前写一句“戴上...的帽子我会...”,当你把不同角色的想法都表露出来后,大家会觉得你是思虑周全,也更容易接受你的建议。
“开源是为数不多能让大家合作的净土,需要我们细心呵护”
CSDN:你曾说过,开源世界中最美丽的事情之一就是分享,你认为开源社区中的分享欲是由什么驱动的?
姜宁:我认为最主要的驱动力是“我有好的东西,我要show off!”。早期的开源软件大多是社区中的黑客写的,他们不追求经济收益,只是想别人承认他很牛。怎么证明他有多牛?最直接的就是展示自己写的代码给大家看。有些软件的构建很有难度,但是他能巧妙、快速地完成。此外,随着互联网的发展,基础设施还处在成长阶段,一旦你的代码发挥了重要作用,就会变成基础设施的一部分。当产出的代码能帮助世界某个角落的一群人,改变世界,这是一件很有成就感的事。
另外,假如我们追溯Open Source的概念,就会知道它与Free Software(自由软件)的渊源。自由软件之父Richard Stallman提出,我们应该捍卫软件自由,保证用户有学习、研究、使用、分发的软件4个自由,这也奠定了开源发展的基础。我认为,自由的基石就是把好东西分享给大家,通过开放的License让更多人参与其中,逐步让全世界开发者聚集在一起协同攻克技术难题。ASF现在有300多个项目,支撑了大半个internet的运作,每每想到这点都使我感到兴奋。但回过头来看,如果没有这种分享基因,这件事根本无法实现。
CSDN:中立、平等、开放都是开源精神中重要的组成部分。最近受国际关系和地缘政治影响,一些开源社区中,比如React、Node.js,出现了选边站队的情况。你如何看待这个问题?
姜宁:站在个人角度,我们都反对战争,这很好理解,但我们不能把个人意志强加给社区。开源社区强调多样性,在不同中寻找共同点。举一个有趣的例子,在节日到来时我们在邮件列表里经常会发祝贺邮件,但在圣诞节或临近新年时大家讲的更多的是“Happy new year”而不是“Merry Christmas”。因为圣诞节和宗教相关,社区中很多人不过圣诞,因此“Happy new year”对所有人都适用。这表示大家在寻找可以协作的共同点,而不是将社区撕裂。
OSI(Open Source Initiative)对开源的定义中也有非歧视条款:不歧视个人和组织,不歧视对开源软件的用途。开源要寻求大同,让更多人参与其中,当你把意识形态带到开源社区中,会导致我们偏离开源造福大众的思想,站在地缘政治的角度考虑问题,被政治利用。开源是为数不多能让大家合作的净土,更需要我们细心呵护。
Apache的魅力与新方向
CSDN:Apache以“开发人类大众有用的软件”作为它的使命。但是它作为一个虚拟的组织,为什么能在世界范围内有如此大的影响力?它的魅力是什么?
姜宁:ASF作为一个遍布世界各地的虚拟组织,它的参与者们都是以个人身份参与的。当我们成为Apache committer时需要签一个CLA(贡献者协议),这个协议能把人的主观能动性充分发挥出来,有点像包产到户。哪怕有一天我离开了公司,我在社区中所有的工作依然是在我自己的名下。Apache为开发者提供了一个Legal Shelter(法律庇护所),在它的法律框架下签署CLA,实际上是为了维护贡献者的权益。
另一个吸引人的地方是它的运作方式。从Committer到PMC、Member甚至到Board,其实不是组织上的提拔,而是你的贡献得到大家认可。贡献越多,你自然而然就会得到相应的权利,Apache把这种方式称为“Meritocracy”(任人唯贤)。你不需要溜须拍马或者伪造业绩,勤勤恳恳地开源开发者或社区贡献者一定会有平台发挥他们的才能,这是一种非常好的运作方式。
与此同时,Apache还是一个志愿者组织。以前总有人问我:“你在Apache写代码,他们给你发工资吗?”。在Apache中只有基础设施和公众关系团队是有薪资的,其它人都没有工资,与此同时Apache能拥有全球影响力最根本的原因,是大家都认同“开发人类大众有用的软件”的使命。大家要吃饭怎么办?在这方面,ASF的做法是在法律框架上不排斥开源商业化发展,于是我们看到越来越多的开源商业化公司出现,比如StreamNative、API7,SphereEx都雇佣开发者来做开源。包括我也比较幸运,从参与Apache项目的第一天开始就有雇主给我发工资,这对我来说非常可贵,因为我可以做我喜欢的事情同时也有稳定的收入。
最后是社区的力量。Apache的软件服务着全世界的用户,会不断收到他们的反馈。我在维护ApacheCamel时最有趣的事就是每天早晨查阅邮件,总会收到一些用户稀奇古怪的使用方法,他们也会把想法写成代码提交过来。对我来说,当时最喜欢干的一件事就是收他们的Patch。而且我相信很多研发都有相似的经历,当我们设计代码时没有考虑到一些CornerCase(边缘问题),如果能有用户及时反馈,开发效率会更高。在开源社区中这很容易实现,当天写的代码可能有“好事者”使用后马上会给出反馈,甚至有些能力强的会把Patch、测试也写了,而我只需要把这些Merge到主干。因此我认为开源软件开发最大的优势就是可以借助用户反馈把软件打磨得越来越好。
CSDN:开源世界中,除了Apache之外,还有Linux、CNCF等其它基金会,对于一个开源的项目来说,将它捐献给基金会能带来什么收益?
姜宁:将项目捐献给基金会有很多好处。首先,基金会是中立组织,不代表任何厂商,因此基金会中的项目参与者包括各方人员,参与者多项目自然发展得更好。其次,捐献的过程中需要将项目的知识产权、代码版权、商标、名称移交给基金会。这样参与者在贡献时会更放心,相信项目没有被企业把控,不是在给企业打工。我认为这也是基金会成立最主要的目的。
另外,基金会在项目合规层面特别谨慎。在Apache中,项目捐赠之后都要经过孵化,帮助项目做合规,保证项目遵守License。在发版时,我们需要把用到的第三方开源软件列出来,并检查它们的License和Apache License是否有冲突,若有冲突我们需要做摘除和替换。如果项目想进一步发展,特别是做商业化,理清项目的版权信息是至关重要的。因此基金会也会对社区成员进行版权保护、License遵从意识的教育。
CSDN:你在竞选Apache董事时曾提到要帮助ASF打破地域、文化、语言的障碍。在这方面您有什么规划或打算?
姜宁:我发起ALC Beijing这个组织,一定程度上也有打破地域障碍这个目的。从2018年开始,我坚持将国内的Committer聚集在一起组织Meet up,邀请Apache的代表来上海与国内的小伙伴们交流,这个过程中我们帮助很多项目找到Mentor,拉近了国内开源社区与Apache的距离,同时国内的开源同仁也有了更多机会交流项目孵化心得。这些活动也将国内开源热情调动起来,帮助了更多项目进入Apache。值得一提的是Apache去年5个的孵化项目全部来自于中国。
文化冲突方面的主要表现是邮件列表。我们在项目孵化过程中一直强调重要的事在邮件中沟通。Apache文化要求“没有在邮件里发生的事就没有发生”,我们也在基于这个理念不断地帮助大家了解邮件列表的重要性。
另一方面是语言。在开源社区交流,英语是必不可少的,但我们也做了平衡,在社区中允许大家说中文,但为了更多人能了解到我们,沟通时尽量多用英语。有些做得好的项目会调用自动翻译软件,或是在沟通的过程中消息使用双语,在与国际接轨的同时也照顾英语不好的小伙伴,从而帮助沟通交流。
虽然我目前还没以董事会成员的身份参与过Apache Board Meeting,但后续有机会我很乐意帮助大家发声,也希望能把我的观点带到董事会,并发挥“桥梁”的作用,帮助Apache董事会和国内开源圈共融共进。
后记:姜宁开源之路的“目的地”在哪?
访谈过后,我们与姜宁聊到了他在开源圈中的一位老友——适兕。关注本栏目的同学可能会有印象,上一期《开源访谈录》的嘉宾就是适兕。适兕曾说,假如有天他能安心地回去写代码,也就意味着他的开源使命完成了。要问他的开源之路的“目的地”在哪?姜宁笑着答道:“当更多的开发者能参与到开源,并学习到开源的优秀实践,更好地协同、提升工作效率,不再有996,做到工作和生活的平衡,到那时,我的使命就完成了”。
这个目标向我们描绘了一幅开源世界的美好图景,真诚而踏实,一如姜宁本人。希望更多的开源爱好者向着这个目标日拱一卒,图景终将变成现实!
END
《》全面上市,对话世界级大师,报道中国IT行业创新创造
—点这里↓↓↓记得关注标星哦~—
一键三连 「分享」「点赞」「在看」
成就一亿技术人