写点什么

一个 50 岁中国操作系统开发者的故事丨 openEuler 英雄汇

  • 2020-12-26
  • 本文字数:2976 字

    阅读完需:约 10 分钟

一个50岁中国操作系统开发者的故事丨openEuler英雄汇

陈棋德,一位 50 岁的操作系统老兵,在中国 Linux 发行版研发领域砥砺耕耘了二十余年。为什么他会选择看起来过于“硬核”的操作系统研发工作,一干就是这么多年?为什么他认为中国的 Linux 系统一定不能只做衍生版?在他眼里,中国基础软件的现状又是怎样的?带着这些问题,InfoQ 记者采访了陈棋德。在 12 月 25 日即将举办的 openEuler Summit 2020 上,陈棋德还将做专题分享,敬请期待。


二十年专注一件事:操作系统研发


1996 年 7 月,陈棋德硕士毕业进入到中科院计算机网络信息中心工作,正式接触到了 Linux 系统。时隔多年,他仍清楚地记得当时使用的是 Slackware 的 3.1 版本。1999 年 7 月,陈棋德加入了北京拓林思软件有限公司(Turbolinux)从事 Linux 发行版的研发工作,一干就是二十年。


20 世纪 90 年代,计算机在国内远未普及,投身操作系统开发的人数更是凤毛麟角。


国内我知道最早投身操作系统开发的人都在中科院和一些大学里,比如中科院软件所的孙玉芳老师。(孙老师已于 2005 年病逝)


谈到与操作系统结缘的经历,陈棋德表示故事其实很简单。学生时代,陈棋德学的就是计算机专业,与现在不同的是,当年学计算机的人并不多。在中科院计算所读书期间,陈棋德接触到了开源软件,产生了对底层技术的兴趣。


当时我很高兴能够看到操作系统等底层技术的代码,当有来自 Linux 领域公司的机会时,毫不犹豫地就选择了加入 Turbolinux,与 Turbolinux 三剑客一起工作。这些年一直从事基础软件方面的工作主要是源自对技术的兴趣和对开源理念的认同。


陈棋德在采访中笑着提到,年纪大了以后,有些事情都记不住了,当年学源码基本上过目不忘,现在看旧代码有时会忘记当时为什么要这么写。这 20 多年发生过很多故事,记忆虽有模糊,有三件事却给他留下了深刻的印象:


早年间,公司曾邀请自由软件运动发起人 Richard Stallman 访问中国。爬长城时他提到一年只用工作 6 到 7 周就能满足生活需求,其他的时间专注做自己想做的事情。从那个时候我就认识到从事开源软件工作还是需要在一个富裕的社会背景下,这样大家才可以做自己喜欢的技术方向的工作。


二是在 Linux 的发展初期,公司的研发高手利启诚等人只用了一天时间就取得了重大突破,实现修改内核代码在字符终端上显示中文的特性。利启诚也是内核文件系统 InterMezzo(2.4.15 版本加入) 的三个主要开发者之一,他是国内在早期就能参与 Linux 内核开发的程序员。身边的内核高手给我留下深刻印象。



三是 Turbolinux 在拓荒企业级服务市场时曾攻克的一个技术难题。当时的背景是在电信行业,某通讯公司百万行代码的应用在 Linux 2.4 上性能不佳,胡欣蔚(现 openEuler 社区技术委员会主席)等人去了现场和对方架构师交流,找出了其软件架构未能发挥 OS 性能的根本原因,最终提升了 3 倍的效能。这是我碰到的第一个让应用在 OS 层面充分发挥硬件性能的企业级实践经历。


陈棋德对操作系统一直有一个观点:国内要想有很好的发展,一定不要满足于只做 Linux 的衍生版,而是要去做一个开源的、生态良好的操作系统。在 openEuler 操作系统出现以后,他觉得时机到了。


与 openEuler 结缘的故事


openEuler 是一个开源、免费的操作系统平台,自开源至今,短短一年时间已经有 2000 多位贡献者,70 余个 SIG 组,社区迅速发展壮大。


今年,陈棋德正式加入了 openEuler 社区。但其实,他与 openEuler 的缘分在很久以前就开始了。


前文提到的 openEuler 社区技术委员会主席胡欣蔚,多年前就曾与陈棋德一起共事。openEuler 技术委员会的另一位委员熊伟,早年间也曾在 Turbolinux 工作,某种意义上,陈棋德算是他的入门师傅。


我一直比较关注国内的 Linux 行业,了解到 openEuler 的技术路线后也跟他们做过多次交流,最终选择了加入社区一起贡献。目前在社区我主要负责 xfce 和 gnome 两个 SIG 组,在提交包的过程中也参与测试了 openEuler 社区的基础设施。其他时间还会跟踪内核和编译器等底层方面的包,并和国外 Linux 版本做对比,以便更好地了解 openEuler 的优势。


陈棋德表示,要做好一个独立的 Linux 发行版需要庞大的开发者群体。以 Fedora 为例,其开发人员规模在 3500 人左右,而其中的大部分人员都是上游社区的开发人员,能统计到的 Red Hat 公司的开发者就有七百人之多。这意味着,能参与到上游社区开发的人员,最差的也是编程能力出众的高水平程序员。


我很高兴看到华为把世界一流水平的基础软件底层能力开放出来做 openEuler,我也期待 openEuler 能够越做越好,成为国际主流的 Linux 发行版。开源操作系统成功的关键无外乎二者:完善的生态和广泛的产业链支持。构筑生态的前提是自己做得足够好,这就要求技术上我们尽可能地做到 upstream first,希望在不就的将来 openEuler 社区开发人员的 upstream 人员数量能够超越 Fedora。


CentOS 8 将于 2021 年底停止维护的大新闻与这次采访不期而遇,此次事件不论是在 openEuler 社区还是操作系统行业内都引发了广泛的讨论。陈棋德表示,CentOS 8 的用户其实可以继续用其他 RHEL/CentOS 的衍生版本,比如 Oracle Linux 就表示用户可以使用其替代 CentOS。而在另一个层面上,他表示用户也可以尝试迁移到 openEuler 上,因为开源操作系统的好处就是去厂商绑定,多一个选择对迁移不是难事,对社区都是好事。


中国基础软件:要技术,更要市场


在很多圈外人看来,国内操作系统行业发展不尽如人意。而陈棋德却认为,在 Linux 内核层面上,中国的发展其实并不算差。


数据统计显示,Linux 内核来自中国程序员的贡献已经排在世界第二,仅次于美国。Coly Li 写过一篇名为《Linux 内核在中国大发展的黄金十年》的文章,系统介绍了最近十年国内内核发展的情况,我的观点与他相同。


以 Linux 为例,国内操作系统目前技术实力已经今非昔比,而且有能力参与 OS 市场的商业竞争。最近几年华为连续出现在 Linux 内核贡献前列的名单中,今年更是已经到了世界第二。在开源操作系统方面,国内的各大科技巨头也有广泛投入。


真正与国际相比,不足之处仍在于我们大牛层面上的人数还不够多,在最高水平方面有所差距。


我认为国内操作系统可能的机会有几个方向。首先还是希望 openEuler 能做到成功,因为它本身处于 Linux 的成熟期内,又建立起了科学、规范化的社区治理模式。另外的新兴产业如物联网操作系统也存在很大机会,我本人也在持续关注 Linux 在物联网方面的应用,同时也关注了很多国内外物联网操作系统的发展动向。


上层软件一直是聚光灯下的焦点,而基础软件如操作系统却稍显“硬核”,不够“性感”。很多人认为这或许也是操作系统行业人才青黄不接的原因所在。


但陈棋德却不这么看,他认为技术在这个里面只是很小的一个因素,最重要的仍旧是市场规模的问题。


个人认为人才断档的本质原因,是国内操作系统行业市场规模太小,不足以养活太多从业人员。我之前看过 IDC 的报告,2019 年国内 Linux 市场规模只占 9 亿,国内 Linux 厂商分得 2 亿。所以从市场规模的角度看,无法支撑起一个庞大的从业人群规模。Linux 内核在国内经过了十年的快速发展,人才是足够的,但是国内 Linux 操作系统市场规模太小,导致很多操作系统人才去做了别的开发工作比如存储等等。和美国相比,国内基础软件市场占 GDP 的比重远小于美国。我觉得随着经济的发展,如果能够建设和发展处一个良性的基础软件市场,具备足够的市场规模,到时候自然会有更多年轻人加入到这个行业中来。

2020-12-26 11:163788

评论

发布
暂无评论
发现更多内容

模块五作业

seawolflin

架构训练营

Golang协程之了解管道的缓存能力

Regan Yue

协程 Go 语言 8月日更

@ConditionOnClass的使用

Rubble

8月日更

装饰器模式

wzh

面试 设计模式 装饰器

Vue进阶(五十四):vue-cli 脚手架 dev-server.js 配置文件详解

No Silver Bullet

Vue 8月日更

JVM GC机制

wzh

面试 JVM 垃圾回收 GC GC Root

IDEA2020.1构建Spring5.2.x源码

4ye

Java spring 源码 后端 8月日更

为了完成小姐姐安排的打分系统,又熬了一个小时的夜补充视图与模板

梦想橡皮擦

8月日更

Nginx-基本概念和使用

Rubble

8月日更

Android EditText输入框实现下拉且保存最近5个历史记录

Andy阿辉

android Android 小菜鸟 编程思想 8月日更

ShardingSphere源码解析 初步准备

Java 源码 ShardingSphere

JVM内存划分

wzh

面试 JVM 方法区

Android开发:新建后缀为txt的文件并且使用的步骤

三掌柜

8月日更 8月

vue入门:vuex概括与使用

小鲍侃java

8月日更

策略模式

wzh

面试 设计模式 策略模式

几种常用设计模式的简单示例

编程三昧

JavaScript 大前端 设计模式 8月日更

手撸二叉树之合并二叉树

HelloWorld杰少

8月日更 数据结构算法

java操作sql server数据库

Python研究者

8月日更

Java web程序的运行时环境

wzh

Java tomcat 面试 Web JVM

Android.mk

Changing Lin

8月日更

Go- 字符串

HelloBug

索引 字符串 Go 语言 拼接 长度

kubernetes/k8s CNI 分析 - 容器网络接口分析

良凯尔

Kubernetes 源码分析 Kubernetes Plugin #Kubernetes# cni

【布道API】权限错误码选择:401、403 或 404

devpoint

HTTP Authorization REST API 8月日更

类加载机制

wzh

Java 面试 JVM 类加载器 JVM类加载

四种常见的 POST 提交数据方式

一个大红包

8月日更

使用Redisson优雅关闭订单

码农参上

redission 8月日更

观察者模式

wzh

面试 设计模式 观察者模式

如此爱国,必然自毁长城

箭上有毒

8月日更

Java技术开发专题系列之【Guava Collections】实战使用相关Guava不一般的集合框架

码界西柚

Java Guava 8月日更 Guava Collections

JAVA 规范

gin

回调模式

wzh

面试 设计模式 回调函数

一个50岁中国操作系统开发者的故事丨openEuler英雄汇_开源_小智_InfoQ精选文章