华为啃下硬骨头,窥视多样计算的未来
2020-10-22
来源: 曾响铃
创造一个让每个人的梦想都能实现的智能世界,可能是每个开发者心中都有的梦想。
可是开发者们的第一步该从何入手呢?
选择一种语言语法,用几十行代码来实现一个小小的功能?
还是通过数百行的数据结构,或是上千行的算法和优化,甚至高达几万行代码的架构来构建一个具体事项的解决方案?
如果开发者有足够的“野心”,他一定会选择数十万甚至上百万行代码的操作系统,作为一切软件开发的基础,创造出一个庞大且纷繁的生态。
那么问题来了,开发者如何才能参与到操作系统级别基础软件的开发工作当中去呢?
不久前,openEuler对外发布了openEuler 20.09版本,打开了一扇让我们看到多样计算未来的窗口,同时也给所有的开发者们提供了一个与伟大同行的机会。
一、Linus老矣,Linux的未来在哪?
每个开发者都想参与系统内核的开发,真正控制所有将在计算机中发生的事情,在接受这项挑战之前,开发者对这项工作的难度有多大的心理预期?
我们可以一起来看看Linux的内核维护项目。
作为当前世界上最为流行的操作系统,Linux在超过20亿的设备上运行。
十九年前初代Linux系统内核开源时,代码总量约11万行,经过了近百万次的提交,无数个版本迭代,目前源代码已经超过了2780万行。Linux也成为人类技术发展中不可或缺的一部分。
可就是这样一个在行业内极具影响和分量的项目也面临着后继乏人的窘境。
在今年7月的线上开源峰会与嵌入式Linux大会上,Linux缔造者Linus Torvalds谈到了为开源操作系统寻找未来维护者时的种种挑战。
目前,Linux内核维护者主要还是即将年满51岁的Linus和一些50或60后的老程序员,当Linux社区开始考虑交接变革时,并没有合适的年轻开发者可以接棒。
之所以会如此,除了Linus过于严厉,让年轻人望而却步之外,还有两个原因。
其一是如何获得社区的信任需要一个长时间的过程。
作为内核维护者,则意味着你必须长期存在,每天都要在电脑前阅读来自全球各地的电子邮件,对邮件做出反应,Linus坚持这项工作整整30年了。
当然,也并不是说你有时间,愿意为项目付出,就能成为合格的内核维护者。因为随着Linux系统不断进化,越来越多的人和智能化的开发都依赖于Linux内核,相应的,代码贡献者们对内核维护者的要求和期望也越来越高。
内核维护者必须“德高望重”,具有领导者的气质才能获得代码贡献者乃至整个社区的信任,而这都是需要时间的。
其二是这项工作确实很难。
由于学习门槛太高,缺乏曲线平滑的学习资料,一些资深的程序员,用各种不同的语言编写了20多年代码,在面对Linux内核开发时,仍然不知道该从哪里开始才能对项目作出有用的贡献。
事实上,Linux社区并不是没有意识到建立一个由浅及深、完善的学习文档和示例对于整个项目吸引新人才的意义,但根据Linux内核项目当今的体量,要做出一份完美的文档是一件非常艰难的工作。
与十几年前相比,Linux内核项目的上手难度已呈指数倍增长,一个新人开发者几乎要花费几个月甚至1年多的时间才能有可能掌握Linux内核的全貌,这是一个巨大的、艰难的过程。
二、华为啃下硬骨头,窥视多样计算的未来
世上无难事,只怕有心人。
在过去的十九年时间内,为Linux系统贡献过代码的开发者不计其数,目前仍在参与开发的还有21000多人。
如果说处理器是硬件的核心,那操作系统就是整个软件生态的根基,从上文提到的Linux内核维护项目的现状来看,建立一个属于自己的操作系统和软件生态,仅仅走出第一步,肩上就已经有数不清的枷锁。
在多样性计算时代大门悄然打开之际,华为站了出来,尝试着与那些桎梏行动的枷锁进行搏击,华为深知,这是自身脱离技术封锁困境的机会,也是作为开发者的目标和使命。
于是,我们看到了在最新发布的Linux Kernel 5.8版本中,华为一跃成为内核代码贡献排名第二。
从公司贡献角度来说,华为提交的补丁数量位列第二名,占比8.6%,代码修改行位列第一,占比27.8%。
或许会有疑问,这么难的一件事情,华为是怎么做到的?
对照着Linux内核维护项目,我们一起来看看华为是如何将问题逐一排除的。
首先,华为就像Linus所说所做的那样,做到了长时间的坚持。
10年前,华为在Linux社区合入了第一个patch,整整10年,华为始终坚持在社区贡献代码,在自身获得成长的同时,也赢得了社区和开发者们的尊重与认可。
社区和开发者们的认可来自于华为这10年来在基础软件上所体现出的全面实力。
目前,华为在社区已经拥有20+Maintainer,在容器所使用的核心功能Cgroup,软硬件解耦ACPI on ARM64,文件系F2FS/EROFS,RAS EDAC框架,Media子系统,IIO子系统,以及Perf on ARM64等子系统上,华为都为社区贡献了代码。
Linux Kernel 5.8版本中,华为贡献了1399个补丁,除了前文中提及的系统特性外,还有包括网络、文件系统、perf调测、安全等关键子系统的200+ 的bugfix补丁,这些都是Linux能够正常运行所需的基础软件系统,对于Linux是非常重要的。
其次,为降低开发门槛和提升开发效率,华为开发了自动内核缺陷发现机器人HULK Robot(Huawei Unified Linux Kernel Robot)来辅助开发。
开源模式下除了带来业务生态快速催熟等各种红利外,也引入了越来越多的挑战:海量频繁的补丁合入、成千上万的开发人员、一行修改百倍测试等等。
HULK Robot融合了大数据机器学习和语义分析技术,集成基于场景语意的模糊测试技术、全系统函数级故障注入配合精准的单元测试,使HULK Robot成为一个高效、精准的可扩展测试系统,大幅提高测试效率和问题检出效率。
最后,华为在融入开源生态的同时,也将自身的生态资源带入到开源社区。
在开源项目中,为了打通ARM全栈的能力,华为已经在40+ 主流技术社区做出代码贡献,目前包括但不限于:Kubernetes、OpenStack、Hadoop、TensorFlow、httpd、MySQL、X265等都已经支持ARM架构。
2019年年底,华为宣布基于Linux内核开发的服务器操作系统EulerOS正式开源,命名为openEuler。
华为和众多背后默默贡献的合作伙伴,开始逐渐开放他们在ICT基础软件领域的技术积累,其目标是将openEuler打造成最具活力的开源社区。
截至目前国内有6 家合作伙伴发行了基于openEuler的商业发行版,分别是:麒麟软件、统信软件、中科院软件所、普华软件、湖南麒麟、万里开源。
三、openEuler,一枚让开发者进入新时代的钥匙
openEuler打开了一扇让我们看到多样计算未来的窗口,同时也是一枚让开发者参与到多样计算未来建设,让开发者进入到多样计算新时代的钥匙。
openEuler包含了华为在操作系统、编译器、JDK等领域多年基础平台的开发经验,同时作为企业级的通用服务器架构平台,openEuler希望能从实践出发,推动国内操作系统真正走出第一步。
通过这次开源,openEuler与全球的开发者构建的是一个开放、多元的社区,更是一个架构包容的软件生态体系。
一个问题,中国的开发者们准备好了吗?
根据CSDN发布的《2019-2020中国开发者调查报告》显示,目前全国30岁以下开发者人数占比超8成,达到82%,这个数据在2018年还只有77%。
此外66%开发者拥有本科学历,12%开发者拥有硕士或以上学历。
根据开发者群体年轻化的趋势,30岁及以下开发者比例超过80%且有所提升,这意味着,越来越多的新鲜血液补充到开发者这个群体中,同时也对计算产业注入了源源不断的新动能。
让人可喜的是,数量如此庞大的开发者队伍中,大家的学习热情高涨,5成开发者通过自学,31%接受了软件开发的在职培训。其中37%的开发者愿意付费学习,近6成开发者每周学习6小时以上,7成开发者参加培训的预算来自个人。
不过其中也有困境,开发者的关注热点更多集中在大数据、区块链、人工智能和物联网等方面的应用层,在开源项目上,半数开发者很少参与开源项目的开发、维护、运营和社区发展等,全职参与的仅7%;超过6成的开发者从未在开源项目中获得收入;77%开发者每周在开源上投入不超过5小时。
可以确定的是,国内的开发者几乎100%都在使用一种或以上的开源技术,但如此少的开发者参与到开源项目中,实在让人遗憾。
openEuler 20.09版本是一道光,也是一柄剑,它拨开了笼罩在开发者四周的迷雾,斩碎了开发者欲破而不得的瓶颈,窥视到的是多样计算的美好未来。
openEuler 20.09版本的各种新特性充分体现了社区大协同所带来的优势:
中科院软件所贡献了RISC-V新指令集架构支持;
麒麟软件为社区共享了赏心悦目的桌面UKUI系统;
云原生虚拟化平台StratoVirt和 iSula容器升级版,两者的结合重构了轻量级云原生基础架构;
BiSheng JDK为 Java应用带来更强的性能;
IMA完整性度量架构和secGear机密计算框架,给开发者在多平台安全应用的开发效率带来倍级提升;
此外,20.09版本里面也包含Compass CI测试平台、A-Tune智能调优工具。
更低的门槛,越来越多的同行者,置身于多样计算的变革中,开发者在openEuler开源社区中必定能感受到更强大的力量。
虽然openEuler的背后有华为和众多合作伙伴的贡献和支撑,但无论从建立软件生态的角度,还是仅谈开源这件事,更重要的,都是之后要走的每一步。
1752年欧拉创造出了欧拉公式,它将数学最重要的几个数字,超数、自然对数、圆周率、虚数、自然数联系到了一起,当时的数学家们评论它是“上帝创造的公式”。
很多时候,我们只能看它,但不能理解它。
而包括openEuler在内的整个开源领域,需要的不仅仅是对开源这件事的理解,更需要每一位开发者在当前严峻环境下面对未来的视野,这其中的参与感与使命感尤为重要。
从0到1并不难,真正难的是能形成良性生态的1之后的每一个0。
参与其中的每一位开发者是最关键的要素,他们独一无二,他们要忍受孤独与寂寞,他们也要承担质疑与压力。
在1024程序员节来临之际,openEuler社区用一种特殊的方式向开发者们致敬,特意做了这样一个程序,用最迷人的数学公式经过最复杂的演变,生成独一无二的图像,送给每一个从事基础软件开发和整个开源领域里坚定、坚持且独特的开发者。openEuler社区特意做了这样一个程序,用最迷人的数学公式经过最复杂的演变,生成独一无二的图像,送给每一个从事基础软件开发和整个开源领域里坚定、坚持且独特的开发者。