张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_github

「WeOpen Talk」是腾源会全新上线的「对话开源」内容专栏,每周为读者呈现一期与尖峰开源人物的精彩对话内容。在「WeOpen Talk」栏目中,我们将深刻诠释开源先锋者们的开源精神、开源理念及其眼中的开源世界,深度挖掘开源领军者们在实践、参与开源过程中的有效方法论和最佳经验。

一、前言

2020 年 6 月,CNCF(Cloud Native Computing Foundation,云原生计算基金会)宣布,企业级容器镜像仓库开源项目 Harbor 成为 CNCF 第 11 个毕业的项目。作为 CNCF 首个诞生在中国的开源项目,Harbor 目前在 Github 平台已获得近 1.7 万个 Stars,以及 230 名开发者的贡献和参与。

这个在孵化初期只有 4 位核心开发者的项目,是如何在开源后一步步精进和优化,以至获得万人青睐?Harbor 开源背后的运营,又有哪些独到之处?

本期 WeOpen Talk 开源人物专栏,腾源会将对话 Harbor (企业级容器镜像仓库)创始人及维护者、腾源会导师张海宁,为大家分享 Harbor 在开源探索实践中的心得和方法论。以下内容为张海宁的自述。

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_开源_02

二、Harbor 的成功不只是「偶然」

Cloud Foundry  是云原生领域一个「鼻祖」级的项目,也是业界首个开源 PaaS 平台。我们从 2012 年开始运营 Cloud Foundry  中国开发者社区,从那时起,在行业内打下了良好的群众基础。那些活跃在 Cloud Foundry 社区的朋友,在各行各业从事云原生领域的工作,和我们形成了良好的合作关系。

得益于在 Cloud Foundry 社区积累的经验和口碑,2016 年,我们发布开源项目 Harbor 后不久,就在行业中推广开来。很多朋友非常喜欢 Harbor 项目,并口口相传,Harbor 项目的用户规模也越来越大。

从这个角度看, Harbor 能迅速在云原生社区站稳脚跟,并得到大家认可,与之前打下的坚实基础密不可分。

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_开发者_03

Harbor 项目的 GitHub 页面

除此之外,我们对国内本土化的用户群体也做了重点支持。像大家常用的容器和 Docker 工具,在当时基本都是全英文界面。Harbor 从第一个版本开始,就提供了中文的界面,收获了大部分国内用户的赞赏和喜爱,也助力了项目的发扬光大。

从某种意义上讲,Harbor 在刚开源的时候或许是「运气」比较好,恰好满足了当时云原生的需求,而且同时期类似的项目比较少,市场算是一个蓝海。当时的国外社区有一两个镜像仓库项目,在 Github 上有5、600个 Stars ,但得益于在国内受到用户的欢迎,很快我们就后来居上了。

所以,Harbor 成为首个 CNCF 中国开源项目有一定的偶然性,除了它满足了云原生用户的需求之外,也离不开我们之前在业内的积累,以及用户的支持和认可。

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_开源_04

2020 年 6 月,Harbor 开源项目从 CNCF 毕业

三、开源项目的成长需要足够的「中立」与「开放」

当我们决定使用和参与一个开源项目时,首先考虑什么?从我的经验来看,最需要重点考查的就是这个项目是否由中立的社区来维护,而不是仅有一两家公司在驱动和运作

项目的参与方少,意味着风险性较高,一旦主导方退出,或者不再维护项目,那么使用者就会面临诸多的问题。同时,还会着重评估项目是否有足够多的参与方,和中立的运作机制,最后再决定参与这个社区或者使用这个软件。

换句话说,社区的参与度和项目本身的中立性是开发者的一个考察因素。如果希望项目有更多的贡献者和参与者,足够的开放和中立是很重要的一个考量点

Harbor 早期在 VMware 中国研发中心进行孵化时,只有 4 位小伙伴。在加入基金会之前,Harbor 项目的运营并不是非常正规,规则也不太清晰。

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_开发者_05

Harbor 项目早期团队成员

从 2018 年加入 CNCF 基金会后,我们学习到了一些更系统化、规则化和制度化的做法:比如定期举办社区会议,将项目发展的 Roadmap 公开在 Github 上提供给大家讨论等。

项目鼓励更多的社区成员投入到 Harbor 的开发过程中来,让他们有渠道参与 Harbor 的共建。在开发每个 Harbor 的新版本前,我们会定期向社区用户收集功能需求,并将所有功能列表在 Github 上共享出来,公开征集意见和讨论,通过集思广益得到更多更好的反馈。

在我们对功能点的优先级和可行性进行评估后,最终会输出开发列表去指导实际的开发,这是社区合力的成果,也是希望尽可能让更多的人参与进来。遵循这类原则,我们进行了一系列的改进,流程和制度都有了比较大的变化,也更适合整个社区来共同推动。

两年后,Harbor 积累了大量的用户,特别是 2020 年毕业时,知名度已经相当高了。每年都会有好几家合作伙伴找到我们,基于  Harbor 开展各种合作。

在捐赠给 CNCF 基金会后,Harbor 成为一个由基金会管理的项目,不再是 VMware 主导和参与,而是由 Linux 基金会( CNCF 是 Linux 基金会下属的基金会) 这样的中立组织来驱动。这也使得更多的开发者和公司愿意加入进来,吸引到了更广大的用户。

所以说,用开放的心态去接纳更多的贡献人员,是非常重要的思维。有些开源项目的维护人员比较保守,不接受任何外部的贡献,没有给社区成员参与和贡献的机会,这是封闭的思维方式,如果项目只有自己在主导,那项目和社区只会式微渐止。

反观,如果用开放包容的心态,让更多人有机会参与进来,他们会更愿意为项目做贡献,从而推动整个项目的发展和迭代,我觉得这是开源项目的健康成长需要重点考虑的事情。

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_开源_06

2018 年中国首届 KubeCon 大会上 Harbor 团队的主题演讲

四、开源项目运转的 3 个核心关键要素

让一个开源项目运转起来,并拥有长久的生命力,我认为有这几个核心关键要素

第一,要解决用户的某一类问题。项目的功能性和适用性,要有一定的广度和需求匹配度。

第二,要建立一个能够让更多人参与进来的完善的机制。目前,Harbor 社区有很多小伙伴在积极地宣传开源,也有一些小伙伴想参与并做出贡献,为此我们组织了若干个工作小组,来负责 Harbor 的不同的方面。

例如,远程复制工作小组、镜扫描工作小组、多架构小组等。每个小组均由社区成员组成,然后共同来推动项目的发展。当然,我们也会有 Maintainer 来组织和推动小组的工作。

第三,需要社区对项目持续地维护和推广。任何有生命力的项目都离不开支撑它的社区。社区中主要需要这几方面的人员:

第一类是软件本身的开发人员,主要是 Maintainer 和 Contributor ;第二类是真正的用户,软件如果没有用户,就没有生命力,用户是项目维系社区中的最重要的一类成员。用户的需求、反馈和要求最终都会转换成对软件的认可,推动软件功能实质的发展。

因此,社区其实是由 Maintainer 、开发人员和用户来组成,这几类人员有着不同的诉求,而运营社区其实就是要满足各方的诉求,达到共赢的目的。

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_github_07

Harbor 社区线上会议

五、精彩 QA 集锦

Q1: 这几年可以很明显地看到云原生类的开源项目层出不穷,从 K8s 到 Istio,再到Knative……据统计,CNCF 在 2020 年就接纳了 35 个项目加入基金会,还有多个项目毕业或晋级。在这种增长下,您是如何看待云原生开源这么火热的原因以及目前云原生开源形成的格局与趋势?

张海宁: 我们在 2012 年开发和推广了开源 PaaS 云平台 Cloud Foundry ,是业内第一个 PaaS 的开源项目,云原生 Cloud Native 就是从 Cloud Foundry 的那个时代慢慢成型的。

当时 Cloud Foundry  的项目主要是由 Pivotal 公司在主导运营。他们总结了云原生的一些特征,将云原生、微服务等一些相关名词确定了下来。后来大家都用这些概念作为在云里面跑应用或者开发应用时必须的一种手段,一种技术或者一种能力。

到今天,云计算的概念已经深入人心,可以说大部分的企业和用户都在考虑怎样在云上跑他们的应用,云的各类应用模式也已经比较成熟。云原生之所以越来越火热,是因为越来越多的人希望在云上开发应用或者部署应用,从而催生了大家对云原生技术的需求,希望能够在云平台或云环境里将应用开发和运维得更好。

我觉得开源其实从云原生这个角度上讲,更多的是适应了另外一种需求,能够帮助应用更快、更容易地推广,帮助它能被更多的人去接受和采纳,是一种比较友好的方式。之所以很多云原生领域的项目都是开源的,是因为只有开源才能让项目走得更远、影响力更广且更易被广泛地接受,这是相辅相成的原因。

Q2: 您是如何看待目前开源的一个环境和所处的一个阶段?您觉得有哪些机遇和挑战?

张海宁: 目前国内在开源上的投入已经比早几年要更多了。以前大家对「开源」的概念讨论较多的是 IP 保护或者反等一系列问题。通过这几年的宣传和布道,开源文化已经获得了越来越多用户的认可,开源在一定程度上能够帮助软件实现自主可控、创新等一系列的要求。

我接触过国外的开发人员和参与到开源社区的人员,能很明显的感受到他们其实已经很习惯开源的文化了。例如,他们看到我们的软件不好用,会主动地去反馈需求或者问题给我们,如果他们有能力修复的话,也会把修复的代码贡献给我们。这可以说是「标准化」的开源社区的参与方式。

但是,国内用户给我们的反馈并不是很明显,有的人可能用完或者改进完了就自己留着了,藏着掖着没有回馈回来给社区。所以别人碰到同样的 bug 或者问题,没办法重用已修正过的代码,仍然需要重复的造轮子。在这个问题上国内仍然需要一些时间去教育或者推广,来让更多人去了解到这个模式,是一种双向互动和共赢的过程,让开源在国内能够更加深入人心。

虽然对比国外我们仍然是有一定的差距,但是我能看到国内的开源大环境已经开始越来越向好,这是好的现象。但并不是每个公司和开发人员都有这样的思维方式,还需要一些时间慢慢地去习惯和适应,使更多的人能够认识到开源文化的实质。

我非常希望国内的高等教育大学里能有开源的知识普及课程,能让学生从学校里面就能了解到这样的文化,能够参与到社区中,这是比较好的一种做法。社区有布道师朋友在宣扬开源文化以及开源思路,这些都是很重要的。因为能够去教育和去影响更多的人来参与到开源工作里面去。如果从学校就能把这个思想理念建立起来,那就更好一些。因为大部分的工程师都是从学校里走出来的,除了学习技术之外,如果能够增设开源类的课程,给大家讲解开源的思维和文化等等,能提高整个业界工程师的开源素质。

Q3: 对一些想要参与 Harbor 的一些「新手」小伙伴怎样能够更好的参与到社区中,你有哪些比较好的建议?

张海宁: 参与开源项目就是要跟项目的 Maintainer 以及社区成员去更多地去交流,达成对项目的共识,能在参与项目贡献和开发的过程中使所增加的功能、修改的代码、社区的规则和要求与整个社区积极地对齐,能够让大家像一个整体去开发,而不是单兵作战的状态。

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_开源项目_08

由 Harbor 维护者和贡献者撰写的《Harbor 权威指南》

目前 Harbor 已经有一套较为完善的文档给到开发者,去年我们组织项目的 Maintainer 和Contributor 撰写了中文版的《Harbor权威指南》在国内的社区流传和阅读,包括怎么去参与社区、怎么参与开发,怎么去建立开发环境,怎么完成测试以及怎么符合项目要求等一系列的描述。欢迎感兴趣的朋友参考一下。■

采访嘉宾介绍:

张海宁,现任 VMware 中国研发中心技术总监,中国首个原创 CNCF 开源项目——Harbor 云原生镜像仓库创始人及维护者,联邦学习 FATE 开源项目技术委员会 Board 成员,腾源会导师,腾讯云最具价值专家 TVP,《Harbor 权威指南》、《区块链技术指南》、《区块链核心技术和应用》作者。

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

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道_开发者_09