老王 发布的文章

LWN.net 发布的 Linux 内核报告中,常年可以看到一个贡献者 —— “Yue Hai Bing”,自 2018 年底以来,TA 对每个版本都会贡献大量的补丁,帮助 Linux 内核不断迭代。为了找到这个来自华为的优秀贡献者,我开始找到朋友圈的华为同学,了解相关信息。每次提到 “Yue Haibing” ,大家都是神秘的一笑,就不再说话。

这让我更加好奇,到底是谁,能如此频繁的在 Linux 内核中贡献,又从未在各种会议聚会中见到 TA?这让我产生了极大的好奇心。直到 openEuler 的问世,我们和 openEuler 社区的合作渐渐变多,终于知道,原来 Yue HaiBing 背后,竟然是华为的自动内核缺陷发现机器人 HULK Robot!正是 HULK Robot 完成了如此高频且优质的内核代码贡献。没想到,我以为的大神,背后竟然是一个机器人!

而为了能够了解到更多关于 HULK Robot 的信息,我采访了 HULK Robot 的架构师 —— 魏勇军先生,和魏勇军先生聊了聊关于 HULK Robot 的故事。

魏勇军(左)接受老王(右)的专访

HULK Robot 的由来

提及 HULK Robot 的诞生,魏勇军提到,其实 HULK Robot 很早便已经在社区应用。在 2017 年的时候,HULK Robot 的前身已经进入到 Linux 内核社区当中,发挥自己的作用。

在当时,HULK Robot 以 “Wei Yongjun” 这个身份,在 Linux 内核社区中贡献代码,提交代码修复补丁。“Wei Yongjun” 提交代码的频率之高,质量之优,让 Linux 内核的核心维护者 Greg Kroah-Hartman 都为之惊叹。在 2017 年北京举办的首次 LC3 大会上,Greg Kroah-Hartman 还专门提到了“Wei Yongjun”。

而来自社区的积极反馈,让魏勇军意识到,这个机器人对 Linux 内核社区是有价值的,可以帮助 Linux 内核越变越好。那为什么不让这个事情更进一步呢?

于是,HULK Robot 正式立项了。

但,说起来容易做起来难。HULK Robot 想要给 Linux 内核贡献代码、提供补丁,却绝非易事。但魏勇军找到了思路。华为多年来虽然在做自己的服务器操作系统,但始终坚持“上游优先”,积累了大量的 Linux 内核维护经验,HULK Robot 可以通过整理过去的华为开发者的经验、测试用例,并将这些进行对比验证,确保这些修改是正确的、有价值的,再将其迁移至 HULK Robot 中,让机器人自动进行更多代码的扫描。

而随着华为对于 Linux 内核的不断进行代码贡献,终于,HULK Robot 成为了一个拥有丰富的测试集和探测能力的机器人。

HULK Robot 如何提交代码?

HULK Robot 随着不断的发展,能够为社区贡献更多的代码,从 Linux 内核的统计报告来看,从 Linux 5.1 开始,一直到最新的 5.10、5.12 ,HULK Robot 的提交能力在逐渐变强,为社区贡献的代码也越来越多, 已经在内核社区历史 Reported-By 榜单排名 TOP2。

魏勇军说,HULK Robot 背后是一套非常复杂的分布式系统。其本质上是一个海量的测试集与一系列先进的自动化测试、问题检测的手段。HULK Robot 和别的 Linux 内核测试机器人不同的是华为因为开发 openEuler 发行版,在内核的维护上付出了不少的时间和精力,拥有丰富的经验,也因此可以在其中贡献更多的代码。

对于魏勇军来说,HULK Robot 如今的重点已经远不是准备更多的测试集,而是要进一步的优化整个内核检测的流程。目前每次版本变更 HULK Robot 都需要跑一次完整的测试集,费时费力,他希望可以让 HULK Robot 可以更加的智能,当代码更改之后,只检测牵涉到相应功能的测试集,而不是测试庞大的全部测试集。此外,加入更多的 DevOps 能力,让更多的人可以参与到 HULK Robot 的开发工作中,更好的为内核贡献代码。这些修改,都可以让 HULK Robot 可以更好的为整个社区提供贡献,更加高效的贡献代码。

也正因为 HULK Robot ,让整个社区可以拥有一个更加稳健和安全的操作系统,整个社区都因 HULK Robot 受益。

社区、开源、机器人

其实一直以来,机器人的应用在开源项目的维护当中是广泛应用的,但对于开源项目本身的维护,一直以来机器人参与的都不多,我也借此机会与魏勇军交流了想法。

魏勇军表示,Linux 内核的维护风格是非常社区化的,社区的维护者默认信任每一个提交贡献者都是为了社区的长期发展而贡献代码,因此,社区的维护者并不拒绝机器人参与到内核的维护中。如果对于整个社区的长期发展是有益的、做出了优质的贡献,社区支持更多的自动化机器人参与到贡献当中。

也许在未来, 我们能看到HULK Robot 会开源,让整个社区一起参与到贡献当中,更好的让 Linux 内核得到维护。

用技术赋能社区

一直以来,Linux 社区都因为资深维护者的流失而担忧,担心社区不再有年轻的血液注入,最终失去了活力。

而 HULK Robot 则为这个事情提供了一种新的思路:可以将资深维护者的经验变成固化的代码,从而使得知识得以传承,而 HULK Robot 的自动化运行机制,又为社区提供了源源不断的贡献和补丁,让这个系统成为一个更加好用和安全的系统。从某种角度来看, HULK Robot 解放了 Linux 内核的贡献者,让贡献者们可以更加专心的做更加重要的事情,把这些繁琐复杂的事情,交给机器人来完成,从而降低了对于社区新鲜血液的需求度。

HULK Robot 不仅仅是为上游提供了新鲜的血液,也更是 openEuler 长期发展不可或缺的护道人,正是 HULK Robot 背后的默默无闻的工作,才能让 openEuler 可以更加稳固的运行,为广大开发者提供一个简单、好用、实用的 Linux 发行版。

我们需要新鲜血液么?当然需要,但如果我们能把门槛降低,这不也是一件好事么?


2021 年 6 月 10 日,openEuler 社区将发起一场面向社区开发者的技术盛会 openEuler Developer Day 2021 ,会上将对多样性计算、云原生全栈、全场景协同等技术发展方向进行持续探索和创新;技术委员会、用户委员会、品牌委员会等 20 个 SIG 组同期举办开放工作会议;技术委员会主席将深入解读 openEuler 21.03,发布下个社区版的技术定位并分享社区创新思路;客户、伙伴、厂商、研究机构将在开源圆桌中共同探讨开源软件供应链的意义和风险,开源模式如何推动以及独立演进操作系统的技术发展。

更多活动信息: https://openeuler.org/zh/interaction/summit-list/devday2021/

可能你已经知道原计划支持 2 年的 Linux 5.10 LTS 已经延长支持到 6 年了,但是你可能不知道是谁站出来提供了支持。

支持到 2026 年的 Linux 5.10!

去年年底,Linux 内核社区发布最新长期支持版本 Linux 5.10 LTS 时,该内核只支持到 2022 年 12 月,这让很多社区成员不解,因为发布于 2016 年底的 4.9 版本都支持到 2023 年 1 月。

未延长前的 LTS 支持计划

面对疑问,Linux 内核维护者 Greg Kroah-Hartman 解释说,“我希望看到公司们将如何帮助我测试和维护该内核版本,以使支持它 6 年成为实际可能。”

前不久,我们看到了 Linux 内核社区发布的一则新消息,“在有足够多的公司加强帮助测试之后,Linux 5.10 LTS 现在将维护到 2026 年底。”

发生了什么?在偶然的一个机会,我得知了是谁为 5.10 LTS 承诺了支持。这其中有一家中国公司,这是一家将开源置于战略级高度的公司,我想,你也许已经猜到了,是华为

说实话,听到这个消息时,既有些意外也不意外。意外的是,我没想到中国开发者和 IT 企业已经在承担这样的重任了;不意外的是,毕竟华为已经是全球首屈一指的 Linux 内核贡献大厂了,就在 Linux 5.10 中,华为以提交 1434 个补丁而位列内核代码贡献第一名,同时以代码修改行数 41049 行位列第二名。

Linux 5.10 贡献排行榜,华为名列榜首

可能作为普通用户并不关心使用的是不是 Linux,更不关心使用的是什么版本和有多久的支持期,但作为一家专注于 Linux 与开源的技术社区,我深刻理解其中的含义,也更关心华为在做出这样的决定背后的考虑、付出和可持续性。于是,我和 Linux ARM64 ACPI Maintainer、openEuler Maintainer、华为工程师郭寒军约了一个访谈,现在将其中主要内容分享给诸位读者。

为 LTS 提供支持

杭州的梅雨季显得并不炎热,在一间很大的房间中,我和看起来比我年轻多了的受访者郭寒军同学进行了一段简短而精炼的对话。

郭寒军(左)接受老王(右)的专访

首先,我直奔主题问到了为什么华为会做出对 5.10 LTS 支持的承诺?从事了 Linux 内核开发十余年的郭寒军很有技术人员本色,他坦诚说,“华为将 Linux 内核用于各种各样的产品。我们在 Linux 内核上积累了很多经验,包括开发、测试和维护的能力。我们觉得可以做这些支持。”在华为内部进行了简单的讨论,讨论了需要投入的机器的资源、人的资源等等。在资源协调到位之后,“我们就公开地在邮件列表上向 Linux 内核社区与 Greg 表态说,我们愿意从公司的角度协助做维护和测试工作。”

据我所知,Linux 5.10 LTS 也将是 Debian 11 和安卓的下一个版本的内核,而在一众已经或即将采用 Linux 5.10 LTS 的软件或产品中,openEuler 发行版家族并不是最引人注目的一个,但是华为却是最主动站出来的一个。当然,在华为的表态带动之下,也有更多企业参与到了 LTS 的支持工作当中。

郭寒军还说,“其实我们提供支持的不仅仅是 Linux 5.10 LTS,而是会对目前较新的 4 个 LTS 内核都提供支持,并且会持续支持更多的 LTS 内核。”这又是一个令我意外的事情。作为一位从业互联网软件开发二十多年,眼看着 Linux 内核从一张低密度软盘即可承载的软件变成了世界上最大的软件项目,我深知要支持现在这么庞大的软件项目背后的代价有多大。其实,之所以 Greg 在一开始给 Linux 5.10 LTS 只计划了 2 年的支持期,就是因为 Linux 内核社区已经积累了 6 个 LTS 支持版本,在支持力量上有些力不从心了。目前,Linux 稳定内核的维护负责人只有两位 Greg Kroah-Hartman 和 Sasha Levin,可想而知,仅仅两人是很难照顾这么多的 LTS 内核维护工作的。

据我了解,华为对 Linux LTS 内核的测试用例已经有 8000 多项,而且还支持包括 x86\_64、ARM64 等多种架构,每个版本的测试就需要 7-8 个小时,这就需要投入大量的基础设施。

当然,我想华为在 Linux 内核方面的偌大投入,绝非是一时心血来潮,也不仅仅是技术极客们的热情奉献所致。这个支持决定不仅符合华为整体的开源战略,也给鲲鹏和 openEuler 等提供了一个坚实的底座。

内核能力对云原生社区的重要性

Linux 内核是整个系统的底座。所有的上层的技术,包括其上的一些应用软件都是构建在内核上面的。内核的稳定性、性能以及内核的后续的技术创新方向,都会对整个 Linux 生态和社区产生重要影响。这就是为什么我们要花这么多精力去保证它的稳定性,也是为什么要主动去承担 Linux LTS 支持的原因。

为了打造这样的一个底座,华为在内核方面进行了长期而卓有成效的投入,并把在内核方面的积累在 openEuler 社区开放。郭寒军认为 openEuler 在内核方面的能力主要体现在三个方面:兼容性、性能提升和创新。

从兼容性来说,这包括 CPU 架构和硬件的兼容性。除了支持 ARM64 架构的鲲鹏、飞腾处理器之外,openEuler 还可以支持 x86\_64 架构的兆芯、英特尔、AMD 等 CPU 架构,以及 RISC-V 家族。

从性能提升方面来说,openEuler 的多核并行等技术,针对调度机制、CPU 资源管控等来提升整个业务的线性度以提升性能。这些技术已经通过 openEuler 的下游发行版提供给了更多行业用户,真正使社区和行业用户受惠于软件技术带来的全新使用体验。

从创新方面来说,openEuler 内核的创新包括:

  • 第一个创新是文件系统方面的。文件系统是华为的强项之一,从可扩展只读文件系统 EROFS 到基于非易失性内存的新型文件系统,随着存储技术的发展,也需要有新型的文件系统做支撑。
  • 第二个创新是弹性软内存。这是指如何有效的利用不同速度和不同容量的存储系统,做一些分级控制,既能使用到大容量的存储,而又不降低性能。
  • 第三个是目前正在重点打造的云原生内核。在云原生内核方面,业界已经有了一些探索,而华为可以结合其硬件能力做全栈的云原生支持,从进程的调度,到内存、网络以及存储,再到最底层的硬件,提供一个 QoS 控制来支持高优先级任务。

openEuler 对 Linux 生态的意义

自 2019 年 12月 31 日 openEuler 开源以来,已有 70多家企业、机构和组织加入了 openEuler 社区,4700 多位社区开发者,成立了 83个 SIG,并有 8 家合作伙伴推出基于 openEuler 的商业发行版,在金融、政府、运营商和电力等各行业得到了广泛商用。而在去年,openEuler 社区理事会正式成立、技术委员会升级;今年,又新成立了用户委员会和品牌宣传委员会,社区治理逐步完善,走向“共建、共享、共治”。

对此,郭寒军认为,建立在 openEuler 下游的发行版天然会具备一些优势。华为一直坚持并倡导“上游优先”原则,积极地将其对 Linux 内核的改进推送到上游 Linux 内核主线,但是基于内核社区的运作机制,这个过程必然是较为漫长和复杂的。因此,openEuler 开源社区拥有的强大的 Linux 内核能力,对 openEuler 及下游的发行版来说,可以更快的响应一些特定的功能需求和硬件支持。这对于国内的一些硬件厂商来说尤为重要,可以统合更多的力量而做到更广泛的支持。

结语

作为一家迅速崛起的 Linux 生态开源社区,openEuler 所取得的进展令人侧目。一两年间,openEuler 及其背后的华为、麒麟、统信、联通数科、中科院软件所等一批企业,已经在整个 Linux 生态、云原生领域取得了长足发展。而在企业战略级的支持下, openEuler 社区所回哺给 Linux 社区的也足以令人赞叹,这让我对开源、对中国开源的未来有更多信心。

5 月 29 日,阿里云开发者大会上,阿里云宣布开源云原生数据库能力,开源关系型数据库 PolarDB for PostgreSQL,将阿里内部沉淀多年的技术分享出来,服务于百万开发者。目前,该项目已在阿里云官网及 Github 上发布,后续将引入分布式事务、单机高性能等能力。

阿里云数据库负责人李飞飞表示:

“我们希望将阿里云在数据库技术上积累的丰富经验,通过标准技术组件和系统的方式开放出来,共建开源数据库生态。”

数据库是基础软件中的刚需,与芯片、操作系统并列为“全球技术三大件”。开源模式广受数据库用户欢迎,被认为是互联网场景的标配。

PolarDB 是阿里云自研的数据库产品家族,采用存储计算分离、软硬一体化设计,既拥有分布式设计的低成本优势,又具有集中式的易用性,可满足大规模应用场景需求。计算能力最高可扩展至 1000 核以上,存储容量最高可达 100TB,集群版单库最多可扩展到 16 个节点,性能比 MySQL 高 6 倍。PolarDB 系列产品已连续多年稳定支撑天猫双 11,处理峰值高达创纪录的 1.4亿次/秒。

为满足用户多样化的需求,PolarDB 针对不同的数据库协议开发了不同的兼容版本,包括兼容 MySQL、PostgreSQL 和 Oracle 的版本,及每个版本的分布式形态。

此次阿里云开源的是 PolarDB for PostgreSQL 分布式版,包括数据库内核、相关插件、工具脚本、测试用例以及设计文档,适用于中大型企业核心业务场景。本次开源遵循 Apache 2.0 许可证,以全共享并尊重原作者著作权的模式开源,代码可以修改和再发布。

这让我想起来前一段时间 MariaDB 宣布了将它的分布式 SQL 引擎 Xpand 作为其 DBaaS 服务的 SkySQL 系统引擎之一,然而 Xpand 是一个专有的软件。这引起了业界对开源服务之上的专有服务的隐忧,因为这失去了开源的重要优势 —— 避免供应商锁定。

在业界,开源数据库众多,但是能将分布式能力也开源出来的罕有,而能形成产品级的、可以利用现有数据库基础设施的开源产品更是不多。因此,PolarDB for PostgreSQL 的这次开源可谓是不但给 PostgreSQL 注入了一剂强心针,而且也与 Xpand 这种开源引擎之上的专有服务形成了鲜明对比。

在对李飞飞的采访中,他谈到了为什么要开源 PolarDB:

“我们开源的目的是非常纯粹的,我们在开源这一部分没有任何商业化的目的,就是要把开发者的生态做起来。”

而且,他认为没有必要重新建立一个新的生态,在原本非常繁荣的 PostgreSQL 生态上“助力一把火,让它烧得更旺。我们希望让开发者可以在现有的 PostgreSQL 上做的更好。本质上就是把我们在 PostgreSQL 上积累多年的能力开源出来,回馈给社区,而且以插件的方式。”

而且,为了鼓励社区能参与进来,阿里云也体现了极大的诚意,采用了更加宽松、自由的开源许可证 Apache 2.0,“你可以再开发,你可以商用,都没有问题,我们完全鼓励。”

为什么这样做呢,李飞飞谈到:“通过这样把开发者生态建立起来以后,我们从中获得了什么?我们获得的是开发者对 PostgreSQL 整个大生态的持续的关注和投入,然后最终我们也会从中受益,因为我们会从开发者贡献的代码里面去汲取对我们有用的部分,我相信其他的厂商不管是云厂商数据库厂商可能也会因此受益。但没关系,我们认为水涨船高,只要整个的社区做起来,我们阿里云还一定会是领导者,我们有自信,所以我们愿意去做这件事。”

李飞飞认为:

“我个人认为开源是建立生态的非常关键的一个抓手,非常关键的抓手。它和商业化一定要非常好的平衡,但绝对不是说天然的就是矛盾的两面,矛盾的地方绝对有,不然的话大家不会这么纠结,但是我个人认为要处理好平衡,是需要有非常强的定力和判断力,但你一旦处理好,它并不一定就一定会发展成矛盾体,这是我个人的一个观点。”

我想,这应该就是阿里云坚定开源战略的主要原因之一。

但是同时他也表示,不要走到另外一个极端:

“大家千万不要落到另外一个陷阱里面去,认为‘开源就是灵丹灵丹妙药,开源就能解决问题了’。我个人也是非常反对这个观点,关键还是看你后续社区的运营,是不是真的用心在做这个社区,是不是真的有高质量的贡献出来,让大家真正的从里面能够受益。我觉得这个是后面的挑战。”

根据披露的 PolarDB for PostgreSQL 开源路线图,阿里云是有计划、有步骤的将主要的、完备的部分向社区开放。我想,这将揭幕云原生数据库的新时代。

前两年 ,有位做投资的朋友曾咨询我,“基于 Linux 的操作系统前景如何?”作为从业计算机行业多年的老兵,我沉吟再三,告诉他,没有什么值得投资的方向和企业,如果有,也要做好长期投入的准备。

自然,这是我的一家之言,但是也是我观察已久的感受。在当时的我看来,中国的基础软件行业发展经历了几十年的摸爬滚打,依旧没有走向快车道。不过,如今再次思考这个问题,我觉得,或许有个不太一样的答案了。

中国基础软件发展亟待新力量

肇始于上世纪九十年代的民用计算机和互联网普及热潮,推动了一大批企业和部门投入到计算机行业,这其中就包括以操作系统、数据库等为代表的基础软件。

但在很长时间内,由于当时的市场形势、政策管理等因素,基础软件行业迟迟得不到发展。倒是许多做上层应用开发的企业,得到了不错的发展机遇,这也更加剧了国内计算机产业忽视和避开对基础软件的投入和建设。一方面,我们看到互联网、电商、直播、游戏等取得花团锦簇的发展;但是另一方面,我们也应当看到,如同筑塔于沙,这些都建立在非自主的基础软件的地基之上。

新形势下对基础软件的新需求

作为伴随着中国互联网普及发展一同成长起来的 IT 人,说实话,我经常感慨的是,从业之初真的不敢想象如今的计算机和互联网能发展到这样惊人的地步。现在的计算机、互联网,乃至大数据、AI 等已经深入生活和社会,甚至成为了国计民生的数字基础。

但这些数字基础的背后,是我们缺乏自主创新的基础软件的隐患。基础软件向上决定了应用软件是如何打造的;向下决定了什么样的 ICT 基础设施的架构是最高效的。我们需要在基础软件层面,坚持发展基础软件根技术,并广泛得到市场的认可,应用到千行百业的行业应用中,才能证明中国的基础软件产业是有生命力的、能够蓬勃发展的、能够加速并使能行业数字化建设的。

那么,在如今的新形势下,如何改变这个现状呢?华为公司高级副总裁、中国地区部总裁鲁勇提出,“科技自立自强已经成为「十四五」国家发展的战略支撑,就是要让数字中国构建在扎实的、可靠的底座上,算力创新势在必行。”

基础软件产业迎来新发展的契机

常言道,新问题也是新机会。虽然中国基础软件产业存在一些发展不足,但不经意间,从了解到的一些情况看,我们已然在某些领域取得可喜的发展。从国产 Linux 厂商的几经沉浮到渐成气候,从一水的 Oracle、MySQL 到 TiDB 的横空出世,从 CentOS 滥觞到 openEuler 一跃成为国内最大的基础软件社区,似乎在并不太长的时间里,中国的信息基础设施领域出现了一些值得注意的新动向。

就在前两天举办的华为中国生态大会2021上,一众中国的基础软件企业联合发布了《共同打造基础软件根技术》倡议。提出了“加强基础科学的研究和突破;加强基础软件的协作与创新;加强基础教育的投入与培养”,倡议业界“坚持开源开放,推动全球科技进步共同打造基础软件根技术”。会上还举行了以“肩负历史使命,打造中国基础软件根技术”为主题的圆桌论坛,来自绿色计算产业联盟的李卫忠,麒麟软件有限公司执行总裁孔金珠,统信软件有限公司高级副总经理朱建忠,云和恩墨联合创始人董事长、首席架构师盖国强,北京海量数据技术股份有限公司总裁肖枫,华为鲲鹏计算业务副总裁openEuler社区理事长江大勇就打造中国基础软件根技术的核心议题展开了深入的探讨。会上中国软件行业协会副理事长、秘书长吕卫峰,携手绿色计算产业联盟宣传部部长李卫忠、openEuler开源社区理事长江大勇和华为公司副总裁、计算产品线总裁邓泰华一起发布《中国基础软件根技术发展白皮书》(框架),这充分展现了业界对于建设中国自主创新的基础软件产业的决心。

基础软件产业是一个战略性的基石产业,不仅仅需要逐一夯实各个薄弱之处,而且应该有宏观的战略指导思想。国家在十四五计划中着重提出了对基础软件、信息技术、开源的宏观指导。而基础软件产业的企业也纷纷在新形势下提出了响应战略。比如说华为,这两年一直在践行其提出的“三个三”方针来建设宏大的鲲鹏和昇腾基础软件生态。所谓的“三个三”是指:

  • 三个开源:开源openEuler操作系统、开源openGauss数据库和开源 AI 框架Mindspore。通过开源得到自主创新、自主发展的条件和土壤,让更多的企业和个人可以参与到中国基础软件的发展进程中,共同进步;
  • 三个开放:鲲鹏应用使能套件、昇腾 AI 应用使用套件和系列化开发套件。通过开放基础设施套件,让行业应用、业务应用可以以一个更低的成本参与到中国基础软件的开发和基于这些基础软件的应用之中,更好更快的打开基础软件的市场,覆盖更多的应用和业务场景,让更多的企业愿意也敢于使用自主创新的基础软件;
  • 三个使能:使能上游开源、使能伙伴发展和使能人才发展。通过使能上游、伙伴和人才,解决行业发展的大问题。通过基础软件使能伙伴,帮助其在更大范围的行业应用中一展手脚,帮助伙伴从1到N打开更多的行业应用市场,开发更多的应用场景,接受市场验证与认可。在人才发展方面,通过“智能基座”项目与高校合作,从师资、教材、课程课时、学科学院建设上,为中国基础软件产业建设提供未来的人才支撑,从基础培养,到专业人才的塑造,扩大整个自主创新的基础软件产业生态。

随着开源之风吹遍,中国也拥有了一批以开源为主旨和战略的公司。在前两天中国信通院发布的第一批开源供应商名录里,就有 26 家企业入选,这里不乏多年深耕开源的领军企业,也有积极拥抱开源的传统企业。

与之伴生的是,在这些开源生态中,已经聚拢了大量的熟悉开源、精通某个领域的开发者群体。以华为为例,华为鲁勇曾表示,“华为超过 70% 研发人员都是投入在基础软件领域”。并且,像涟漪一样,不断形成和扩大更大的开发者群体。在全国建设的 24 个生态创新中心,已经孵化了超过 6000 个鲲鹏昇腾解决方案,完成了超过 70 万个开发者的培训,认证了超过 3000 家合作伙伴。

中国基础软件,前景可期

回到本文开篇的那个问题。我认为当下的中国的基础软件领域获得了前所未有的重视,无论是政策扶植、资本青睐,还是学界支撑和技术群体的扩大,都为之后的中国基础软件爆发性发展奠定了有力的基石。

而稳固而广泛的基础软件,也使能了上层的信息社会、行业应用,形成真正自主创新的完善的信息社会基础设施。更进一步的,广大为信息社区添砖加瓦的独立软件供应商们,也将有坚实的立足点,可以构筑可信、可靠、高质量的行业解决方案。

相信,无论是华为、腾讯这样大型公司,还是 PingCAP、RT-Thread、统信这样的新锐企业,都能跻身于中国的基础软件发展浪潮,夯实中国的信息化发展高速公路之基。

过去,我眼中的华为是神秘、大公司体制的代名词,但是,这一次 HDC.Cloud 华为开发者大会的参会体验和所见所闻,打破了我对于华为的认知,如今的华为与开放、创新等关键词紧密联系在一起。

一、引语

突如其来的全球性疫情的爆发,打乱了这个世界很多既定的事情。作为一个 IT “会虫”,我每年要参加很多重要的行业峰会,但如今的疫情形势,显然现场参会不再是一个好主意。在年前,我参加了华为的 HDC.Cloud 媒体预热会,近距离了解了原计划在春节后举办 HDC.Cloud,对这次计划中的大会充满了期待,也准备亲自去了解一些有趣的话题。

在目前看起来还是愈演愈烈的疫情之下,全球各类 IT 行业的峰会纷纷停摆,或从线下改为线上,或延期观望,甚至直接取消的也比比皆是。

而这次华为的 HDC.Cloud 也在调整之后,决定将原本预计参会规模达上万人的行业顶级峰会改为线上举办。说实话,在参会之前,我对线上会议能不能如以往般直面演讲者获得最新的重要信息还是有一定的疑虑的——不过事实上证明,至少在华为的 IT 基础设施加持之下,效果要比预期的好,只是心疼我滚烫的笔记本电脑。

作为中国的一家开源社区,华为的开源举措和战略是我最为关注的,因此,在这篇文章中,我将向大家分享我对华为在开源方面的观察和感受。

二、软件开源

可以说,以华为这些年来的表现来看,已经将开源和开放作为其主要的生态战略来推进,这在华为的很多宣传和会议上,尤其是这次的 HDC.Cloud 上更为显著。几乎在每个话题和演讲中,都会或多或少地提及开源和开放生态。

首先说开源软件,除了华为捐赠给 Apache 基金会的 ServiceCombCarbonDataMetaModel 等若干顶级项目之外,华为在 GitHub 上的几个企业账户中还有很多项目:

让我们再梳理下 openEuler 社区的几大里程碑事件:

  • 2019 年 9 月 18 日,华为宣布操作系统 、数据库等的开源计划,openEuler 开源社区上线(社区地址:https://openeuler.org/zh/)。
  • 2019 年 12 月 31 日,openEuler 源代码正式上线,至 3 月 25 日,下载 ISO 的累计次数:5479,贡献代码的总人数 220、总次数 5324。
  • 2020 年 3 月 27 日,openEuler 开源社区正式发布 openEuler 20.03 LTS(长期支持)版本。该版本是自开源社区上线以来的首个 LTS 版本。

当前,openEuler 社区秘书处、技术委员会、安全委员会等组织已开始运作,社区参与者申请并成立了 30 多个项目组。

这些其实并不出乎我们的预期,不过在这次会议上,大家之前关注颇多的 openEuler 这次披露了一个重要消息,它成功地和国内 4 家重要的操作系统厂家麒麟软件、普华基础软件、统信软件、中科院软件所等达成了合作,共同宣布基于 openEuler 的商用版本操作系统正式发布,以加速鲲鹏相关技术在各行业的落地和应用。

openEuler 社区后续将每两年发布一次 LTS 版本,每 6 个月发布一次社区创新版本,并提供 CVE 漏洞管理能力。 openEuler也将始终坚持 Upstream First 策略,所有能力第一时间向上游开源社区推送。

openEuler 20.03 LTS 版本基于华为长期的技术积累和产品实践,在稳定性、安全性上达到了业界领先水平,并通过软件全栈的技术优化,充分释放多样化计算平台算力。

这说明了什么?openEuler 不仅仅是一个普通的 Linux 发行版,而是作为上游发行版,以开放的姿态迎来了国内各大操作系统厂商的支持。这在我的印象中,还是国内第一次跨越一家一地的操作系统层面的大合作,其开放形态可见一斑,也映射出了大家对鲲鹏计算生态的看好。

三、硬件开放

除了软件的开源,华为硬件开放方面也取得了长足的进展,这体现在了华为为其通用计算处理器“鲲鹏”和人工智能处理器“昇腾”打造的开放生态上。

很多人知道开源软件,但是对硬件怎么开放不甚了然。随着互联网技术的发展,开源这个词已经逐渐被大众所接触和理解。以粗浅的解释来说,所谓开源软件就是将软件的源代码公开出来。有些人会疑问,那么硬件怎么开源呢?

开源硬件和非开源硬件有很多区别,但是开源硬件联盟(OSHWA)定义了一个大多数人同意的定义,如果你熟悉开源软件,这不会听上去太奇怪:“开源硬件(OSHW)是一个指有形的造物:机器、设备或者其它物理东西的术语——其设计向公众发布,任何人可以制造、修改、分发并使用那些造物。”

为了营造开放的计算生态,华为聚焦做好处理器、板卡和主板等底层基础硬件设施,并开发硬件设施的相关资源,使能合作伙伴优先发展自有品牌的计算产品整机。目前全球已经有黄河、长虹天宫、紫光恒越、同方、湘江等11家整机厂商基于鲲鹏主板推出自有品牌的服务器及PC产品。对于个人来说,我们可能很快就可以用上基于鲲鹏处理器的 PC 和服务器产品了。

多样化计算时代,计算产品能够有新的选择,得益于华为一直以来在技术研发方面的高度投入。从2004年华为开始投资研发第一颗嵌入式处理芯片以来,目前已总共投入超过2万名的工程师,在去年9月的华为全联接大会上,华为基于“鲲鹏+昇腾”双引擎正式发布了计算战略,以“一云两翼双引擎”的计算产业布局,致力于为世界提供最强算力。最终形成了以“鲲鹏+昇腾”为核心的基础芯片族,满足世界对通用计算和智能计算的最新需求。

三、开发者扶持

再次投入 2 亿美元的沃土计划 2.0

作为开源的土壤,开发者也是屡屡被华为提在口中的。在华为开发者大会 2020(Cloud)上,华为高调宣布“沃土计划 2.0”的进一步举措,将在 2020 年投入 2 亿美元推动鲲鹏计算产业发展,并公布面向高校、初创企业、开发人员及合作伙伴的扶持细则。

  • 高校教研扶持:面向高校,提供1亿人民币的扶持金额,包括人才培养,云资源及样机支持,同时华为与教育部签署3年协议投入 10 亿人民币,共同推进人才的培养。
  • 初创企业及开发人员扶持:面向初创企业及个体开发人员,以云资源及线下活动的方式发放 1 亿人民币的补助,每家初创公司最高可获得 75 万人民币的云券。
  • 合作伙伴发展扶持:面向合作伙伴,提供6亿人民币的扶持总额,其中 3 亿人民币一次性研发费用补贴,3 亿人民币的云资源。

华为云与计算 BG 总裁侯金龙在《与全球开发者共成长,共赢计算新时代》主题演讲时表示:“开发者是改变世界的重要力量,也是企业创新的引擎和产业生态的灵魂。华为去年发布了沃土计划 2.0,计划 5 年内发展 500 万开发者,目前华为云开发者已经增长到 160 万。”

华为云与计算 BG 总裁侯金龙在主题演讲

打造鲲鹏的开发工具平台

为了让每位开发者用上并用好鲲鹏,华为在大会上发布了 CloudIDE 开发环境服务、鲲鹏加速库和开发者社区。

站在鲲鹏开发者的角度,如果在本地做开发构建,则需要做交叉编译;而如果在鲲鹏环境做原生编译,则面临着和其它工作的割裂。而现在,有了支持鲲鹏原生开发环境的华为云 CloudIDE,这个痛点就迎刃而解。华为云 DevCloud 研发总监王亚伟介绍, CloudIDE 只需要几十秒时间就能快速创建鲲鹏原生的云端开发环境,开发者可以直接在浏览器内连接到云端实例,进行编码、调试、测试,10 分钟就能快速开发鲲鹏云原生应用。

作为华为云 DevCloud 开发平台组件之一,CloudIDE 是轻量化的基于 Web 的集成开发环境服务,支持鲲鹏原生和多语言,打通了开发态和运行态。目前,已有超过 40 万用户在 DevCloud 上开发了超过 50 万个项目。而且,2020 年 CloudIDE 对所有鲲鹏实例全年免费。

此外,华为还提供了鲲鹏加速库。它分为基础,压缩,加解密,存储,多媒体五大类,应用开发者可以在代码修改量不到1%的情况下,将性能提升大于 10% 甚至在加解密等场景下将性能提升超过 100%。

如今,鲲鹏开发者们还有了一个活跃的开发者社区,汇聚集了全栈软硬件知识、鲲鹏产业资讯、政策发布、认证查询等信息,华为还为社区提供全天候 7x24H 的专家在线服务。

四、结语

华为在计算产业的发展策略“硬件开放,软件开源,使能合作伙伴”,同时华为也是业界唯一一家同时拥有“CPU、NPU、存储控制、网络互连、智能管理”五大关键芯片的厂商。

对于华为来说,惟有以软件开源+硬件开放,才能发掘更大的潜能、释放更大的算力,为数字经济时代提供最具创新性的核心生产力。随着华为持续不断地提供各种资源,帮助广大开发者学习和使用鲲鹏,会帮助更多的伙伴逐步实现应用的迁移。

华为是国内难得的高研发投入企业,并不断推出开放的策略,对于整个产业中的我们每个人来说,都是一个重大的利好消息。学习、理解、利用华为所开放出来的这些技术,对于我们这些从业者来说,都是不可多得的好资料。也希望更多的企业能够向华为学习,从闭源、封闭,渐渐走向开放。

我们已经开发了几个小程序,分别是用于显示 Linux 命令用法的“Linux”、用于显示和搜索 Linux 中国文章的“Linux文章”,以及改善公众号文章内链接访问体验的“文章助手”。这几个独立的小程序各司其职,也在一定领域有所重叠和关联,因此,最近几天,我将它们链接了起来。

从 “Linux” 链接到“Linux文章”

首先,在“Linux”小程序内显示命令用法的页面上,在“延伸阅读”部分会推荐相关文章,之前这个部分的数据是采用远程 API 的方式来呈现 https://linux.cn 网站上的相关文章。不过,这些文章的内容其实在我们的“Linux文章”小程序内也可以访问,而且还是原生的小程序体验,所以,我们将两个小程序进行了关联。

一方面,采用云开发提供的访问另外一个云空间的方式,在“Linux”小程序内调用“Linux文章”小程序的云函数来获取相关文章(顺便做了一个重构)。

另外一方面,在“Linux”小程序的“延伸阅读”里展示的相关文章标题,点击后会跳转到“Linux文章”中对应的文章。当然,由于小程序本身的限制,在跳转前会做个确认提示,如果选“是”则跳转,如果选“否”,我们展示保留了回退模式,依然可以用 webview 方式访问远程网站上的文章,只是 webview 体验没有专门为小程序环境做过优化。

从“Linux文章”链接到“文章助手”

其实最初“文章助手”小程序的灵感就来自于“Linux文章”小程序,所以,一直以来在“Linux文章”中就保留着“文章助手”小程序中相关的功能,包括复制链接、显示链接信息等,甚至还有一些更多的功能。

不过,考虑到“文章助手”小程序会在链接管理方面更加深入,比如前一段时间,我们就为“文章助手”小程序添加了显示链接的更多信息的功能。而将这些功能再回迁到“Linux文章”小程序不但代码臃肿,而且需要维护两个不同模块,显然不够专业。

因此,我去除了“Linux文章”小程序中的链接管理功能,并指向到了“文章助手”小程序,这样,将来在“文章助手”小程序中可以提供更丰富的链接管理功能。此外,目前在“Linux文章”小程序中的直接访问微信链接的功能,我也会之后移植到“文章助手”小程序上。

最后,我在想,从“文章助手”小程序到“Linux”小程序是否也有关联的场景呢?目前还没有成熟的想法,或许之后会找到合适的场景吧。

总结

通过几天的努力,我将三个原本彼此独立的小程序彼此关联了起来。

我感觉,在小程序的功能和定位上,解耦小程序的功能有助于开发出健壮而轻快的小程序。而让小程序可以彼此配合,则可以形成小程序之间的联动和互补。虽然现在小程序之间跳转会弹出一个确认提示颇为破坏用户体验,但是这个事情也是利弊参半的。

另外一点就是,善于利用小程序的云开发环境的远程调用,可以让小程序之间更容易联动起来。