据开源社的中国开源年度报告显示,Harbor是CNCF中国项目活跃度最高的项目。Harbor是源自中国第一个CNCF开源项目,在国内外拥有大量的生产用户。本文转发腾源会对Harbor创建人和维护者张海宁的采访,介绍从零开始运营Harbor开源项目的历程。
张海宁,Harbor云原生镜像仓库创建人及维护者
1
Harbor的成功不只是「偶然」
CloudFoundry是云原生领域一个「鼻祖」级的项目,也是业界首个开源PaaS平台。我们从年开始运营CloudFoundry中国开发者社区,从那时起,在行业内打下了良好的群众基础。那些活跃在CloudFoundry社区的朋友,在各行各业从事云原生领域的工作,和我们形成了良好的合作关系。
得益于在CloudFoundry社区积累的经验和口碑,年,我们发布开源项目Harbor后不久,就在行业中推广开来。很多朋友非常喜欢Harbor项目,并口口相传,Harbor项目的用户规模也越来越大。
从这个角度看,Harbor能迅速在云原生社区站稳脚跟,并得到大家认可,与之前打下的坚实基础密不可分。
Harbor项目的GitHub页面
除此之外,我们对国内本土化的用户群体也做了重点支持。像大家常用的容器和Docker工具,在当时基本都是全英文界面。Harbor从第一个版本开始,就提供了中文的界面,收获了大部分国内用户的赞赏和喜爱,也助力了项目的发扬光大。
从某种意义上讲,Harbor在刚开源的时候或许是「运气」比较好,恰好满足了当时云原生的需求,而且同时期类似的项目比较少,市场算是一个蓝海。当时的国外社区有一两个镜像仓库项目,在Github上有-个Stars,但得益于在国内受到用户的欢迎,很快我们就后来居上了。
所以,Harbor成为首个CNCF中国开源项目有一定的偶然性,除了它满足了云原生用户的需求之外,也离不开我们之前在业内的积累,以及用户的支持和认可。
年6月,Harbor开源项目从CNCF毕业
2
开源项目的成长需要足够的「中立」与「开放」
当我们决定使用和参与一个开源项目时,首先考虑什么?从我的经验来看,最需要重点考查的就是这个项目是否由中立的社区来维护,而不是仅有一两家公司在驱动和运作。
项目的参与方少,意味着风险性较高,一旦主导方退出,或者不再维护项目,那么使用者就会面临诸多的问题。同时,还会着重评估项目是否有足够多的参与方,和中立的运作机制,最后再决定参与这个社区或者使用这个软件。
换句话说,社区的参与度和项目本身的中立性是开发者的一个考察因素。如果希望项目有更多的贡献者和参与者,足够的开放和中立是很重要的一个考量点。
Harbor早期在VMware中国研发中心进行孵化时,只有4位小伙伴。在加入基金会之前,Harbor项目的运营并不是非常正规,规则也不太清晰。
Harbor开源项目早期团队成员
从年加入CNCF基金会后,我们学习到了一些更系统化、规则化和制度化的做法:比如定期举办社区会议,将项目发展的Roadmap公开在Github上提供给大家讨论等。
项目鼓励更多的社区成员投入到Harbor的开发过程中来,让他们有渠道参与Harbor的共建。在开发每个Harbor的新版本前,我们会定期向社区用户收集功能需求,并将所有功能列表在Github上共享出来,公开征集意见和讨论,通过集思广益得到更多更好的反馈。
在我们对功能点的优先级和可行性进行评估后,最终会输出开发列表去指导实际的开发,这是社区合力的成果,也是希望尽可能让更多的人参与进来。遵循这类原则,我们进行了一系列的改进,流程和制度都有了比较大的变化,也更适合整个社区来共同推动。
两年后,Harbor积累了大量的用户,特别是年毕业时,知名度已经相当高了。每年都会有好几家合作伙伴找到我们,基于Harbor开展各种合作。
在捐赠给CNCF基金会后,Harbor成为一个由基金会管理的项目,不再是VMware主导和参与,而是由Linux基金会(CNCF是Linux基金会下属的基金会)这样的中立组织来驱动。这也使得更多的开发者和公司愿意加入进来,吸引到了更广大的用户。
所以说,用开放的心态去接纳更多的贡献人员,是非常重要的思维。有些开源项目的维护人员比较保守,不接受任何外部的贡献,没有给社区成员参与和贡献的机会,这是封闭的思维方式,如果项目只有自己在主导,那项目和社区只会式微渐止。
反观,如果用开放包容的心态,让更多人有机会参与进来,他们会更愿意为项目做贡献,从而推动整个项目的发展和迭代,我觉得这是开源项目的健康成长需要重点考虑的事情。
年中国首届KubeCon大会上Harbor团队的主题演讲
3
开源项目运转的3个核心关键要素
让一个开源项目运转起来,并拥有长久的生命力,我认为有这几个核心关键要素:
第一,要解决用户的某一类问题。项目的功能性和适用性,要有一定的广度和需求匹配度。
第二,要建立一个能够让更多人参与进来的完善的机制。目前,Harbor社区有很多小伙伴在积极地宣传开源,也有一些小伙伴想参与并做出贡献,为此我们组织了若干个工作小组,来负责Harbor的不同的方面。
例如,远程复制工作小组、镜像漏洞扫描工作小组、多架构小组等。每个小组均由社区成员组成,然后共同来推动项目的发展。当然,我们也会有Maintainer来组织和推动小组的工作。
第三,需要社区对项目持续地维护和推广。任何有生命力的项目都离不开支撑它的社区。社区中主要需要这几方面的人员:
第一类是软件本身的开发人员,主要是Maintainer和Contributor;第二类是真正的用户,软件如果没有用户,就没有生命力,用户是项目维系社区中的最重要的一类成员。用户的需求、反馈和要求最终都会转换成对软件的认可,推动软件功能实质的发展。
因此,社区其实是由Maintainer、开发人员和用户来组成,这几类人员有着不同的诉求,而运营社区其实就是要满足各方的诉求,达到共赢的目的。
Harbor社区线上会议
HarborCommunityOnlineMeeting
4
精彩QA集锦
Q1
这几年可以很明显地看到云原生类的开源项目层出不穷,从K8s到Istio,再到Knative……据统计,CNCF在年就接纳了35个项目加入基金会,还有多个项目毕业或晋级。在这种增长下,您是如何看待云原生开源这么火热的原因以及目前云原生开源形成的格局与趋势?
我们在年开发和推广了开源PaaS云平台CloudFoundry,是业内第一个PaaS的开源项目,云原生CloudNative就是从CloudFoundry的那个时代慢慢成型的。
当时CloudFoundry的项目主要是由Pivotal公司在主导运营。他们总结了云原生的一些特征,将云原生、微服务等一些相关名词确定了下来。后来大家都用这些概念作为在云里面跑应用或者开发应用时必需的一种手段,一种技术或者一种能力。
到今天,云计算的概念已经深入人心,可以说大部分的企业和用户都在考虑怎样在云上跑他们的应用,云的各类应用模式也已经比较成熟。云原生之所以越来越火热,是因为越来越多的人希望在云上开发应用或者部署应用,从而催生了大家对云原生技术的需求,希望能够在云平台或云环境里将应用开发和运维得更好。
我觉得开源其实从云原生这个角度上讲,更多的是适应了另外一种需求,能够帮助应用更快、更容易地推广,帮助它能被更多的人去接受和采纳,是一种比较友好的方式。之所以很多云原生领域的项目都是开源的,是因为只有开源才能让项目走得更远、影响力更广且更易被广泛地接受,这是相辅相成的原因。
Q2
您是如何看待目前开源的一个环境和所处的一个阶段?您觉得有哪些机遇和挑战?
目前国内在开源上的投入已经比早几年要更多了。以前大家对「开源」的概念讨论较多的是IP保护或者反盗版等一系列问题。通过这几年的宣传和布道,开源文化已经获得了越来越多用户的认可,开源在一定程度上能够帮助软件实现自主可控、创新等一系列的要求。
我接触过国外的开发人员和参与到开源社区的人员,能很明显感受到他们其实已经很习惯开源的文化了。例如,他们看到我们的软件不好用,会主动地去反馈需求或者问题给我们,如果他们有能力修复的话,也会把修复的代码贡献给我们。这可以说是「标准化」的开源社区的参与方式。
但是,国内用户给我们的反馈并不是很明显,有的人可能用完或者改进完了就自己留着了,藏着掖着没有回馈回来给社区。所以别人碰到同样的bug或者问题,没办法重用已修正过的代码,仍然需要重复造轮子。在这个问题上国内仍然需要一些时间去教育或者推广,来让更多人去了解到这个模式,是一种双向互动和共赢的过程,让开源在国内能够更加深入人心。
虽然对比国外我们仍然是有一定的差距,但是我能看到国内的开源大环境已经开始越来越向好,这是好的现象。但并不是每个公司和开发人员都有这样的思维方式,还需要一些时间慢慢地去习惯和适应,使更多的人能够认识到开源文化的实质。
我非常希望国内的高等教育大学里能有开源的知识普及课程,能让学生从学校里面就能了解到这样的文化,能够参与到社区中,这是比较好的一种做法。社区有布道师朋友在宣扬开源文化以及开源思路,这些都是很重要的。因为能够去教育和去影响更多的人来参与到开源工作里面去。如果从学校就能把这个思想理念建立起来,那就更好一些。因为大部分的工程师都是从学校里走出来的,除了学习技术之外,如果能够增设开源类的课程,给大家讲解开源的思维和文化等等,能提高整个业界工程师的开源素质。
Q3
对一些想要参与Harbor的一些「新手」小伙伴怎样能够更好地参与到社区中,你有哪些比较好的建议?
参与开源项目就是要跟项目的Maintainer以及社区成员去更多地去交流,达成对项目的共识,能在参与项目贡献和开发的过程中使所增加的功能、修改的代码、社区的规则和要求与整个社区积极地对齐,能够让大家像一个整体去开发,而不是单兵作战的状态。
目前Harbor已经有一套较为完善的文档给到开发者,去年我们组织项目的Maintainer和Contributor撰写了中文版的《Harbor权威指南》在国内的社区流传和阅读,包括怎么去参与社区、怎么参与开发,怎么去建立开发环境,怎么完成测试以及怎么符合项目要求等一系列的描述。欢迎感兴趣的朋友参考一下。
由Harbor维护者和贡献者撰写的《Harbor权威指南》
Harbor社区联系方式
双周例会,周三晚9点(中英文):goharbor.