Java教程

我在 IBM 从事开源工作的十一年

本文主要是介绍我在 IBM 从事开源工作的十一年,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

编者说: 

在国际知名公司从事开源工作是一种怎样的体验? 

目前越来越多的来自中国的企业、组织或开发者,都纷纷投身到全球技术的开源生态建设大潮中,甚至将开源作为一份全职工作。那在如火如荼的开源热浪中,国内开源爱好者们在国际开源舞台上的参与度如何?作为开源新兵,又该如何步入或活跃于国际开源组织,在开源社区中建立自己的声誉和话语权呢? 

带着这些问题,腾源会采访了在 IBM 公司从事 11 年开源工作的高级工程师侯胜博,和他聊聊在 IBM 参与开源背后的那些成长故事,以及在开源社区参与大规模协作过程中所收获的心得和感悟。 

       

图注:美国北卡罗来纳“三角研究院” ,侯胜博在 IBM 的办公地址

 

一、人物简介

Vincent Hou(侯胜博),IBM 高级软件工程师,Knative 和 Tekton Operation Work Group(运营工作组)的负责人。曾就读于北京交通大学计算机科学与技术专业,后续前往比利时留学 4 年继续攻读信息与通信技术并获得硕士学位。2010 年正式了加入 IBM,并于 2016 年正式调动到了美国工作,目前已在美工作生活近 6 年。 

       

二、11 年,见证云计算技术大潮的变迁 

IBM 开源和开放技术部门的办公室里,侯胜博已经在这里工作了 11 年,尽管这个部门的官方名字已经变换过很多轮,但他对外介绍时总是喜欢用“Open Source and Open Technology”。

       

图注:侯胜博与团队伙伴的合影(左一为候胜博)

 

在这 11 年里,他每天的工作之一就是代表 IBM 参与各个跟公司利益相关的开源项目,从而促进并引导开源项目的发展,提升 IBM 开源团队在开源项目上的影响力,以及在开源生态中的号召力。 

 

OpenStack 是他参与的第一个开源云计算项目。这是一个可以控制整个数据中心内大量计算、存储和网络资源池的云操作系统。在 OpenStack 项目中,侯胜博为其块存储项目 Cinder (OpenStack Block Storage )做出了非常多的贡献。 

 

自 2010 年问世以来,OpenStack 经历了非常高速的发展,全球主流的云计算公司那几年都在纷纷涉足及试图在此发力。到了 2016 年,OpenStack 凭借先进的架构、有效的运作与授权模式的灵活性,成为了当时“最火”和兼具广泛影响力的开源云计算项目。 

 

“正是得益于 OpenStack 那时的蓬勃发展,我在 2016 年有幸调动到 IBM 美国公司工作。”侯胜博回忆说。 

 

几个月后,他负责的项目也从 OpenStack 延伸至基于 Serverless 的 Knative、Tekton 和 OpenWhisk。 

而此时的一个大背景是,Serverless 技术在大西洋彼岸开始如荼发展,并逐渐吸引了全球云计算公司的关注与投入。IBM 也是在这个节点,开始向无服务器计算领域探索——不仅开源了自研的无服务器平台 OpenWhisk,还与谷歌、Serverless 领域及 PaaS 领域的其他公司合作开发了 Knative 项目。 

 

在 OpenWhisk 项目中,侯胜博主要的工作是和团队一起帮助  OpenWhisk 更好的模块化。例如将 OpenWhisk 的客户端 CLI 分离出来形成单独的 Golang 项目,将 OpenWhisk 的所有 Action Catalog 分离出来形成单独的项目,并负责这些分离出来的模块的维护工作。

 

后续他和团队还为 OpenWhisk 开发了专门的发布构建工具,添加了 Jenkins 和 Travis 的测试支持。在这整个过程中,他们也在文档的修改和补充着上做了很多的工作。

在团队的努力下,OpenWhisk 由原本 IBM 等几个公司主导逐渐开放贡献给 Apache 基金会,使其在运营上成为了真正的开源项目。

       

        

图注:OpenWhisk 项目的基础介绍

 

在 Knative 项目中,侯胜博也作为 Knative Operator 深度参与到了 Knative operator 里所有的关键特性的实现的贡献:包括项目本身的创建和 prow 测试的创建。例如近期 Knative 1.0 发布的关键的特性也都由他带领团队开发。

 

图注:Knative 项目的基础介绍

 

OpenStack、Knative、OpenWhisk,它们见证了云计算技术的演进和迭代,见证了云计算开源的发展。而侯胜博在这些项目上的经历,也映射了他对这十几年对云计算大潮的参与和见证。他简单地和我们阐述了这段变迁的历史。 

 

侯胜博认为,OpenStack 倡导的是任何资源都可以变成池来共享,用户不一定非拥有什么资源,只要有网络就可以随时按需租赁资源。这期间伴随的是虚拟化技术的发展。云原生其实是这些特点的集合和体现。不过这种资源池化的方式很多,“是否能做好高可用”这个问题始终没有得到很好的解决。直到 Kubernetes 平台出现,各种应用和服务才从根本上解决了高可用的问题,而现在 Kubernetes 原生又渐渐流行起来。  

随着多应用多集群成为企业 IT 架构中面临的常态需要,很多研发团队发现部署应用还是很费力,例如需要根据自身的开发框架进行打包、发布、配置……开发者们更多地想专注于业务逻辑,开发、部署一个应用,这个时候 Serverless 就兴起了。 

 

OpenWhisk 这样的项目就是 IBM 在该方面的尝试之一,而 Knative 作为能让 Serverless  应用更轻松被部署、运行和管理的开源项目,自发起之日就引起了云计算界的广泛关注。 

 

三、初遇开源,在挑战中成长 

今年是侯胜博作为 Knative operation 工作组 Lead 的第二年。但回望着一路上,侯胜博并非总是一帆风顺。 

 

刚加入 IBM 的那几个月,侯胜博的工作中也曾充满着许多挑战。 

 “那时最大的挑战就是自己很多时候需要一个人在一个未知的领域开辟新的基础,并建立自己的名声和信誉。因为我参与的每个开源项目都是从 0 开始。”侯胜博回忆说。 

起初他参与贡献的项目所涉领域的比较广泛,经常会从项目的各个模块中寻找一些自己可以解决或可以尝试去解决的问题。当遇到不属于自身长项且不知道如何去解决的任务时,他也把它当成一个可以学习的机会,积极地去询问其他社区的工程师来寻找解决的方法。因此,他收获了很多志同道合的朋友。等到简单问题解决多了,开始对这个项目总体代码架构有了解,他就逐渐参与到了新需求的讨论和实现中。

  

对于这段历程,侯胜博感慨道 ,“不论做什么,不论大小,既然承担,就意味着责任。做什么事不要半途而废,要有始终。这是在社区建立起个人信誉的第一步。” 

 

在个人箴言中,他也给我们留着这样一句话 “不要把它当作困难,把它当成一个机会”。 

 

四、参与开源,需保持激情并持续贡献 

随着近年来国内对开源的普及和推广,不断有厂商开始将公司的项目开源,越来越多年轻的开发者也渐渐开始接触、投身于国内外各类开源项目和社区的建设中。侯胜博参与的项目中也出现了很多中国开发者和中国公司的身影。 

 

“中国的开发者与国外的开发者一样,都在基于对项目或者技术的热情来贡献,每个软件工程师在解决一个问题,而且自己的代码得到认可的情况下,都有着无比的喜悦和成就感,中国工程师在很多项目里都有着很多贡献。”侯胜博说,“但遗憾的是,在我做 OpenStack 或 Knative 项目时,能看到很多中国公司在内部测试甚至应用这个项目,不过这些公司并没有在回馈社区上做很显著的事情。” 

 

当提到公司如何更好地开源、运营和推广自己的开源项目时,侯胜博表示,开源的核心理念并不仅仅是免费或免费使用,而是建立一个开放的平台让更多人参与和提出自己的想法,共同促进项目的发展。想让一个开源项目更好的发展,成立独立的基金会或者贡献给像 Apache、CNCF 这样的组织,按照基金会或者各种组织的章程来运营是比较好的一种方式,能够有效的避免厂商独大的问题。 

 

例如 IBM 就在 Knative、OpenStack 等项目初期鼎力协助并完成了项目运营机构的转变:由单独一个或者几个公司运营转变为基金会运营。并根据自身战略的考虑成立对应的 Knative 和 Tekton 项目贡献部门、产品化部门来对项目参与持续的贡献。 

 

“可能很多公司会想,我辛辛苦苦成立的项目,原本可以呼风唤雨的控制,为什么要贡献出去,让别人来参与管理?这个问题其实一直都存在,这其实也是很多项目背后的更深层次的利益权衡。不过,为什么不多考虑更多人参与项目给项目带来的应用推广呢,更多的项目开发呢?没有完美的决定,我们要更多的利益评估和权衡。如果觉得开源是更加适合项目的方向,那就按照开源的方式真正运营下去。如果不是,那其实没有必要开源了。”侯胜博说。 

 

五、社区沟通:要诚实,但真不要太太太诚实 

如果说“自由和参与”是开源的精髓,那么“奉献和沟通”就是决定开发者在开源世界中获得相应地位和发言权的唯一途径。 

 

回顾这十一年的开源贡献经历,侯胜博对如何在社区进行“有效”沟通交流上也总结了一些经验。 

  • 忘记自己的背景,不要给自己或别人加注任何“标签”。可能基于中国文化的原因,人们跟别人打交道时询问对方居住的地方、喜欢什么样的食物,从而找到更多的相同相似之处,以便之后的交流沟通。在开源社区里面工作,人们多数都是痴迷解决问题的办法已经考虑问题的方式,可以尝试彼此了解更多,不过没必要过于强求。 

  • 建立良好的沟通环境。在社区交流咨询时,尽量通过邮件、Github issue、设计文档等公开透明的聊天工具及场合进行讨论。同时尽量用英语来与其他成员沟通,方便其他人阅读、讨论和帮助一起解决问题。 

  • 对事不对人,互相尊重。在社区中提出自己的想法时,可能会得到很多疑虑和挑战甚至过于直接和刺耳的回复。这时就要尝试通过更多的诠释和沟通来解除各方的疑问。各个开源社区的思潮都是紧追世界最前沿的,开源社区是交朋友,不是树敌,人与人之间需要彼此尊重,平等对待。  

 

除此之外,侯胜博也将硅谷创业圈中流行的「 Fake it till you make it 」(伪装一切,直到你成功)分享给了我们。 

 

“这句话不仅仅可以用于开源社区贡献,在工作、生活中也很实用。我感觉直接翻译太生硬,我个人理解是人要诚实,但真不要太太太诚实。比如,对于别人问的问题我真的不知道答案的话,我可以说这是个好问题,但需要更深的考虑和调查。比如,你其实很反对某个说法或者想法,可以说这方面我不是太擅长,我想听听更多别人的想法。这样避免直接的争执。” 侯胜博说。 

 

腾讯副总裁王巨宏曾说,“开源工作是一项长跑,可能会在长时间内都是默默无闻和孤独的,因此要有足够的信念和理想驱动才有可能坚持下来,对个人、对企业来说都是如此。”在这里,我们也衷心希望越来越多的开发者能够像候胜博这样十一年如一日,为开源贡献着自己的一份力量,同时也希望更多的企业能够正确的拥抱开源,并积极贡献和反哺到开源社区中。

 

  往期阅读推荐

  • 我的9年开源之路:395 Patch、20+Feature,背后只有努力与热爱

  • Envoy 代理开源五周年,创始人 Matt Klein 亲述开源心路历程及经验教训

腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。

 

 

这篇关于我在 IBM 从事开源工作的十一年的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!