中国的开源历史可以追溯到 1994 年,当时中科院的宫敏博士用肩背手提的方式,将装有自由软件的 20 盒磁带从芬兰背了回来。彼时,Richard Stallman 的自由软件运动正如火如荼,微软等公司还旗帜鲜明地反对开放源代码。
而如今,世界各地的开发者每天都在使用微软开源的 VSCode、TypeScript 等工具,还有谷歌的 Kubernetes、gRPC,Meta 的 React、Jest 等等。我们清晰地看到,开源正在吞噬世界。
虽然只有二十多年的开源历史,但来自中国的开源软件正在逐步被全球各地的开发者认可和使用,他们活跃在各个社区,积极参与产品的研发、维护和应用等。这些项目是如何一步步发展,并走向全球的呢?
在今年的 CNCF 欧洲峰会上,华为成为首次发表非赞助性的技术 Keynote 演讲的中国公司,与 Kubernetes、Envoy、Helm、gRPC、OpenTelemetry 等全球知名项目同台分享。据悉,CNCF 欧洲与北美峰会的 Keynote 极难入选。通过对 2016 年首届峰会以来的完全统计,在将近 180 次的欧洲与北美主旨演讲议题分享中,仅有华为、阿里巴巴和中国移动获得过分享机会。
借此机会,InfoQ 采访了在这次演讲中亮相的两个开源项目 KubeEdge 和 MindSpore 的主要参与者们,希望以它们为切入口,一窥中国开源项目如何成长、并拥抱世界各地的开发者们。
在 CNCF 宣布今年要举办欧洲峰会后,MindSpore 社区运作团队像往常一样按照申报流程提交了演讲摘要。“KubeCon + CloudNativeCon”可以称得上是云计算开源领域最大的峰会,这次同往常一样也是抱着试试的心态,没想到在 CFP 结果出来后,又收到了举办方额外的回复:可以在大会上进行 15 分钟的 Keynote 演讲。
收到这个回复后,MindSpore 社区运作团队欣喜之外,便与 KubeEdge 社区团队一起,开始准备演讲的详细内容。要知道,赞助厂商的分享只有 5 分钟,还要花费十几万美金,而面向将近 1 万名现场观众的这十五分钟的展示很难得。那么,究竟是什么吸引了会议的举办方呢?这要从 KubeEdge 和 MindSpore 的太空之旅说起。
KubeEdge 是华为在 2018 年开源的一款云原生边缘计算平台,聚焦离散边缘节点的形态,重点解决了高度分散的边缘计算平台环境下算力和网络都非常受限的问题,并通过将控制面放在云上来实现云边协同,为开发者提供与中心云一致的体验。这与国外很多从算力比较强的边缘云场景出发,来做整个 Kubernetes 集群轻量化的思路有很大不同。
具体来说,KubeEdge 的云边网络通信能够实现双向的、多路复用的消息通道,支持多种底层协议,并引入了应用层可靠性传输。为实现边缘必备的离线自制,KubeEdge 将 Kubernetes 的云原生节点下放到边缘,做了节点级的元数据持久化,并对绑定中心云的冗余功能进行裁剪,使软件内存达到了 70M 的最小极限。
MindSpore 则是在 19 年发布、20 年开源的全场景 AI 框架,主要用来解决人工智能领域近年来所遇到的一系列关键问题。与 Google 的 TensorFlow、Facebook 的 PyTorch 为代表的第二代通用框架相比,MindSpore 在兼具两者优点的同时,在大规模自动并行、高阶自动微分、AI For Science、端边云全场景、AI 安全等领域都进行了大量的创新。
去年 12 月,KubeEdge 和 MindSpore 一起跟随由北邮、北大和中国移动研究院联合发起的“天算星座”(www.tiansuan.org.cn)中第一颗先导星“宝酝号”发射,在太空里执行云边实时推理和在轨计算任务。
以前,卫星属于传统航空航天领域,在计算方面比较封闭,无法解决卫星数据中心日后承载的更多计算任务,同时通信模式和资源非常受限,科研人员要做很多重构工作。实际上,卫星数据中心利用云计算技术来解决问题的构想在业内还没提出多久,“宝酝号”直接跨过了从云到边缘、再到设备的过程,直接应用到了实践中,可以称得上是全球第一个使用云原生技术的卫星。
根据北邮天算星座系统和 AI 负责人徐梦炜的介绍,卫星所处的物理环境非常特殊和复杂。比如粒子干扰可能会让卫星中计算机数值变成随机的:0 会变成 1、1 会变成 0,此外还面临极端的高低温环境。而卫星发射后,一旦出现问题,地面人员很难进行调试和修复,重启虽然可行但很多问题无法解决。
这带给科研人员的挑战主要有三点:首先,星地之间需要简单可靠的通信模式。其次,由于地面站数量有限,每个卫星大部分时间不能和地面相联,即处于无连接状态,因此必须具有自治能力。最后也是最重要的,由于卫星上的技术开发、测试和迭代的难度要比地面上高出好几个数量级,所以需要一个灵活统一的服务调度框架。
上述问题正好契合了边缘云计算的能力。徐梦炜团队把卫星当成是地面的扩展,每个卫星都是一个边缘节点,因此将目标锁定在 K8s 的边缘扩展框架。这个框架还要能灵活调度整体资源,因此团队便找到了之前早有关注的 KubeEdge 团队合作。
前期,研发团队用了两三个月的时间来进行测试。徐梦炜团队先要选定相关的硬件,然后对硬件进行改造和封装,之后做太空仿真测试。虽然是比较标准的模式,但比起普通测试仍要复杂很多。期间,徐梦炜团队要和华为、卫星公司不停地构建和迭代方案。
整个筹备期间,学生们的投入和热情让同时担任博士生导师的徐梦炜印象深刻。当时由于时间紧张,学生们要在数据站和卫星基地两边跑,有的学生在春节假期结束后没时间回北邮,而是直接从家里去卫星公司。
“计算机专业的学生都倾向于找互联网高薪的工作,在很多人看来,航空航天是传统行业,没有那么吸引人。”徐梦炜说道,“但幸运的是,我们找到了一群愿意投入的学生,这让人很感动。”
北邮参与该卫星项目的共有 5 名博士生和十几名研究生,这些被认为处在“传统”行业的科研人员和学生们正在积极拥抱开源。徐梦炜在博士期间做了自己的边缘计算项目并将其开源,现在其所在的北邮团队也在做开源的联邦学习项目。
卫星行业之前更多是国家驱动,普通高校里的科研工作者和爱好者对开源几乎没有需求,他们要么接触不到,要么做的东西也无法在实践中真正应用。科研人员的沟通基本以私下接触为主,没有对外社区讨论。但随着卫星商业化初步成功,越来越多的第三方机构、科研人员,甚至爱好者可以参与进来,推动了开源进入卫星领域。
开源能够深入卫星领域的另一个原因就是软件定义卫星的趋势。
正如美国太空望远镜科学研究所天文学家 Erik Tollerud 所说,天文学是一个基于软件的领域。今年 7 月,承载人类探索星辰大海梦想的詹姆斯·韦伯望远镜从距离地球 100 万英里处拍摄了一张全彩照片,一时间轰动全球。据悉,韦伯望远镜采用了事件驱动的软件架构、飞行软件由 C++ 编写、使用了面向文档的数据库 XML...... 软件正在成为人类探索宇宙的关键。
之前卫星功能比较单一,软件占比相对较小,但软件定义卫星的趋势越来越明显。软件定义卫星就是不断地用新软件定义出新功能的卫星,支持应用软件按需加载、卫星功能动态重构,可以在不同空间、不同时间扮演不同角色,为不同用户服务。而在软件中,开源软件占比是很高的,进而增加了对整个开源的需求。
据悉,天算星座未来也将在 GitHub 上开源,目前初步筹备工作已经完毕,但数据暂时还未开放,预计今年内公布。
徐梦炜表示,开源软件对卫星安全来说是一把双刃剑,并非是纯消极的影响。“开源本身因为更多人的参与可以解决一些传统安全问题,当然也会面临恶意 bug 注入,这就要团队做更多测试、社区共同防御,同时引入更多的安全专家。”
这是 KubeEdge 和 MindSpore 第一次在移动端边缘的应用,对项目团队来说是很大的进展。华为团队在峰会上分享了这个故事,产品不同的解决思路和独特的应用场景也引发了更多世界各地开发者的好奇和关注。
目前,KubeEdge 社区贡献者超 1000 人、代码提交者 280 多人,参与社区的企业机构已有 80 多家。MindSpore 社区用户数量超 190 万,贡献者超过 4500 名。
社区是项目演进很好的试金石,可惜很多企业并没有用好这一利器。有些公司在做开源是按照已经习惯的工作方式进行:先内部汇报,然后做预算和开发原型,项目放到社区时,已经是一个完成度很高的半成品,留给社区发挥的空间并不多。
作为华为计算开源社区运作的负责人,黄之鹏非常不看好这种做法:开源项目不只是为了给一个商业公司卖产品。那么,如何利用社区的力量对产品进行迭代升级呢?
黄之鹏更习惯先在社区里讲技术故事,发动社区的力量来启动项目、设计产品和研发。“一些大型开源社区里的既有项目也是这样做出来的,项目启动成本很低,甚至几乎为零。”
通过社区,项目能够发现很多意料之外的场景。比如,MindSpore 与山水自然保护中心一起做野生濒危动植物识别;通过 CycleGAN 模型对世界保护非物质文化遗产扎染的图案进行训练,生成新的扎染图案来保护传承非遗工艺等。
这里,存在一个悖论。
一方面,企业不擅长对不确定性进行管理。作为市场参与的主体,所有企业都希望市场公开,但每个大企业实质上又是个计划经济体,有严格的流水线式运作,这导致企业在管理开源项目时,更倾向于把开源当成指标,为了开源而开源。
另一方面,开源带来的一个巨大好处就是这种不确定性。很多年东西是规划不出来的,很多有趣的应用都是社区发现的,然后反过来回馈社区。很多公司会先定季度 KPI 再去做,这种从目标倒推行动的做法与此完全相反,这样的开源几乎做不成。
两者看似是矛盾,但归根到底还是企业对开源的理解不够深。
“中国的开源有很大发展,但实际的增速并没有数字显示得那么大。”黄之鹏说道,“真正熟悉开源并在大型社区做过的人没有那么多,但只有足够专业的人才知道怎么利用开源帮助项目发展、怎么评价某个开源项目的质量。一味追求 star 数、下载量,只会造成内容虚假、数字虚假和大量的资源浪费。”
要真正让各种不同的开发者加入到社区参与项目维护,企业一定要保证开发的公开透明。云原生、中间件领域的开源项目,由于技术栈比较少,开发者会更看重社区的多样性。KubeEdge 就属于这类,得益于社区良好的开放性和公平性,华为最近一年贡献占比在 50% 左右,越来越多的企业已经加大对 KubeEdge 的贡献投入。
而一些技术栈很深、需要专业团队开发的开源项目则对主导企业的中立性要求没那么高,目前的 AI 开源框架基本是由几家大企业主导,但这并不意味着企业不需要注意中立性问题,比如即使作为开发主力,华为在 MindSpore 技术委员会中也只有一席,与业界大量专家一起来共建社区生态。
社区活动现场
当社区规模逐渐变大,要保证良好的研发氛围就离不开社区治理,而社区治理也向来是开源的一大难题。
KubeEdge 从设计之初就想好了要做开放社区。因此,除了参与 KubeEdge 的方案设计和功能研发,华为云云原生开源团队负责人、也是 KubeEdge 项目的联合创始人的王泽锋还将很大一部分精力花在了社区的治理上。
起初,社区主要依靠华为工程师们的投入,但当项目价值被迅速认可后,越来越多不同企业的贡献者参与进来,如何引导开发者参与社区讨论、迭代或修复项目变得很有必要。另外,贡献者会需要获得开发指导、了解社区流程,并希望参与更多技术方案决策。因此,贡献者的成长路线和社区整个组织架构的分工设计也是很重要的工作。
为了让开发者们将精力聚焦在平台研发上,KubeEdge 采用了非常聚焦代码的 maintainer 管理模式,之后还成立了 Special Interest Group(SIG)和工作组。王泽锋团队还提供自动化机器人驱动代码 CI 测试、Pull Request 合入、Release 包自动化编译发布等流程。
开源社区的维护主要有四方面:一是开发者运营,主要包括通过公众号、视频号等多媒体平台建设,开发者社群和各种活动,帮助开发者融入社区;二是社区治理,包括搭建社区治理框架等,实现社区自治;三是与其他开源社区合作,尤其是进行技术连接;四是为开发者提供基础设施,像帮助社区成员参与开发的工具等。
随着项目的发展,社区治理模式也迎来了挑战。“整体来看,KubeEdge 受关注程度的增长速度,大于社区 maintainer 的成长速度,组织架构需要更快地调整来适配项目的发展。”王泽锋说道。
贡献者虽然很有意愿参与到项目维护中,但他们需要有所贡献后才能够承担更多的责任,这意味着需要给他们一些成长的时间。现在,王泽锋团队在有意识地为社区贡献大的开发者提名为社区 reviewer、approver 等角色,帮助他们在贡献中更快提高。
为适应发展,今年 KubeEdge 社区的治理架构将迎来一次升级,社区将在之前的基础上成立 TSC 治理委员会、用户委员会等组织,同时成立专门的社区运营团队,来实现更好的社区协作。
如今,以委员会为主的开放治理模式似乎成为很多社区的首选治理模式,KubeEdge 和 MindSpore 都是这种治理模式的受益者。不过在黄之鹏看来,开放治理模式并非对所有开源项目都有一样的效果。
开放治理模式成为趋势的一个基础事实是,大企业近几年开始参与大型开源社区,开放治理架构随之增多。但是,大家容易忽略的是:开放治理是社区发展到一定阶段,有很多重量级玩家,涉及到利益平衡问题时才采的治理方式。
“对很多强技术驱动的社区来说,成员的利益均衡机制设计对它们边际收益不高,之前的 BDFL(仁慈的独裁者)模式,对于很多小而精的开源项目,仍然是有必要的。就像 Linux 还很弱小的初期,需要 Linus Torvalds 作为强有力的领导来屏蔽各个方面的压力。”黄之鹏解释道,“这类项目会长期存在,开源社区的治理模式还是要因地制宜,百花齐放百家争鸣。”
实际上,有些国内企业主导的开源项目社区规模已经越来越大,来自世界各地的开发者都参与了进来,同时国内越来越多的开发者也在融入到不同的社区中。
在“走出去”的过程中,大家或多或少都会有一些顾虑:来自中国的开源项目在国际环境里是不是要多做一些额外的沟通工作?实际证明,大家都想多了。
有很多让王泽锋印象非常深刻的事情。CNCF TOC 的一位成员曾主动在推特上宣传 KubeEdge,称其为“令人兴奋的项目”;一位素未谋面的红帽工程师在博客中称 KubeEdge 是他 2021 年最喜爱的开源项目;来自德国、印度、以色列的多个企业,自发地集成了 KubeEdge,为他们的客户提供边缘计算产品。“只要项目本身的核心价值得到认可,大家都会尊重你。”
同样一直在参加各种国外社区的黄之鹏也表示,世界上所有的开发者都差不多,大家有很强的好奇心,对新东西的接受度很好,不用有什么心理负担。黄之鹏主导的 MindSpore 社区里贡献者超过 4500 人,他们分别来自中东、东南亚和欧洲等不同国家和地区。
CNCF 欧洲峰会参会者观看演讲
开源社区全球化本质上还是更广泛开发者生态的建立,更大的生态带来更多的不确定性。但在社区全球化过程中,社区面临的最大问题还是语言沟通。
容易出现误解的大多是非技术上的问题。比如在沟通技术问题时,听众可能会错误地认为提问题的人着急或生气了,但可能在提问者的文化里其实是很温和地表达。还有像国内工程师习惯微信,国外开发者习惯写长邮件,不同国家的开发者使用的沟通工具都不一样等。
对于这些问题,开发者们只能慢慢磨合。“不过这也很有意思,日常工作中很难有机会同时遇到这么多不同文化的交流。”黄之鹏说道。
全球化社区里经常发生很多棘手的事情,有的问题可以规避,有的可能无解。
之前某个小众的加密协议框架的开源项目的会议间歇时,由于在交流时身体间距太近,一位女性核心开发者指控另一位男性核心开发者性骚扰,两个人还在推特上掀起了大规模骂战。这件事正好发生在 MeToo 运动时期,这个小众社区被动卷入到了该运动中,最终以该男性开发者从社区邮件列表上被永久性封禁结束。
一旦涉及到地缘政治层面,问题就会变得更加复杂,不少开源社区都会被核心开发者的个人态度影响,牵连陷入了巨大的争议中。比如 Rust 1.59 发行的公告中夹杂着一些带有个人立场的段落、node-ipc 包作者 RIAEvangelist 投毒等。
但这些争议的背后其实都是典型的社区管理问题:Rust 社区的 release note 为什么没有足够的 review、NPM 社区的核心依赖组件使用了单人维护的软件等等。
很多社区会用 CoC(Code of Conduct)来规范社区成员的行为,但现有的 CoC 机制依然是通过枚举的方式,守护一些约定俗成且确定性强的行为,但社区治理需要处理大量的未知风险,而社区治理机构又缺乏其被期待的效力执行能力。黄之鹏提出了一个概念叫“社区二阶美德”,即在以 CoC 为代表的一阶美德的基础上,有意识的建立一套让集体有效运作的、众人默认的习惯法体系。这要求核心成员在各方面达成一致,这样无论过错方是谁,都严重违反了大家公认的规则,社区处理问题就容易得多。
另外,黄之鹏观察到,本地化社区治理特色正在逐步发展为新的治理模式。2016 年后,整个世界的全球化进展受到冲击,加上后来疫情的影响,全球逐渐走向虚拟互联但物理隔离的状态。因应不同国家的政策、法律、法规等要求,社区治理也会有所差别。
做开源并非都是一帆风顺的,即使是在开源社区做了将近十年的黄之鹏,也会在做了很多努力但没有得到预期效果时感到挫败。
“自己做项目时,最开始的预期都比较高,希望可以像 K8s 那样,一出来就会被大家关注。但初期的现实还是比较骨感的。”黄之鹏说道,“但其实大家熟知的大型社区也是一点点成长起来的,只不过我们没有经历过那个阶段罢了。”
做开源一定是长期主义的事情,坚持到后面才会有收获。“从经历来看,至少要熬过头两年。之前在大型上游社区做项目时,从零到能够在 OpenStack、RISC-V、CNCF 这样的大型峰会讲 Keynote,基本都需要四年时间左右,所以也希望有更多来自中国的开源社区和项目,能够有这种坚持和野望,把自己的故事带到更大的全球性舞台。”黄之鹏补充道。
嘉宾介绍:
徐梦炜,天算星座系统和 AI 平台负责人,北京邮电大学特聘副研究员
王泽锋,华为云云原生开源团队负责人,CNCF 大使,CNCF KubeEdge、Volcano、Karmada 项目联合创始人
黄之鹏,华为计算开源社区运营负责人
每一位开源参与者、每一个开源项目都可以成为舞台上的主角。
新的一波开源浪潮正在席卷中国,【开源聚光灯】是 InfoQ 重点打造的开源主题栏目,旨在通过新闻、系列访谈、用户调查、迷你书、视频等形式深入观察开源运动,围绕开源的价值和开源开发模式,与投身开源的每一个个体共同探讨开源发展现状,照亮每一个开源舞台上的参与者。
如果你有开源故事或对开源的深刻观点想要分享、或开源项目想要寻求报道,欢迎联系微信 caifangfang842852(请注明姓名和来由)。