从“新”出发,万字长文谈操作系统国产替代
曾经国内的通用操作系统市场几乎被国外企业垄断。从我国上世纪九十代推进信息化建设开始,数代国人从懵懵懂懂到熟练运用电脑,就是面对着国外操作系统,一步步地追逐着时代浪潮学习信息技术的理念、技术与应用。在很多普通用户的心目中,国外的操作系统产品和计算机的笼统概念几乎就是等同的。
我国的操作系统技术研究也在同一时期起步。在“七五”计划中,我国开始了操作系统领域的研究工作,并基于 Unix 早期版本研制出了我国自己的通用操作系统。
但无奈操作系统领域正值技术变革时期,国外在 Unix 技术上已经积累了二十多年的使用和研发经验,到了突破的临界点,在新变量的刺激下,新的操作系统出现,迅速垄断市场。我国的通用操作系统从起步就已经落后,在市场上缺少用户基础,对于新的技术趋势缺乏认知,缺少持续研发通用操作系统的人才储备和技术实力。在各种因素的影响下,我国的操作系统发展逐渐脱离通用领域,偏居于一些敏感的细分领域。
在这样的背景下,我国的操作系统发展沉寂了多年,而国外操作系统发展迅猛,逐渐占据了我国信息化的关键领域。随着信息化的不断深入,信息化设施成为国民经济基础设施,国家开始认识到信息安全的重要性,以及操作系统自主在国家信息安全中的重要地位。
我国的操作系统发展有了新的使命,再次焕发活力。但此时我国的操作系统发展水平与国外已经越拉越大,要达到国外的水平并非一蹴而就。在政策激励下,国产操作系统的发展从“自主可控”艰难出发,经历“安全可信”等几个阶段,到目前正式提出国产替代。经历了长时间的分析、调研、准备、尝试,持续不断的积累下,到目前条件成熟,进入了全面铺开的阶段。
从 2020 年信创全面启动到今天,在政策利好和风向投资牵引下,诸多实体和厂商进入信创操作系统领域,头部厂商正在形成,开源基金会和开源社区逐步成立,通用与细分领域兼顾。组织联盟正在形成,竞争与发展格局正在按照预先的设想逐步成形。为国产操作系统未来的发展,开启了很多可能。
从生态角度来看,以开源社区为活力源头,通过头部厂商加入与捐献,为中国基础软件领域的开源运动打下基础、注入活力。以生态组织联盟,促进软硬件结合、解决兼容性问题,促进行业标准的形成。通过产学研联合,推进国产操作系统的应用推广、培养后继人才。目前都取得了显著的成绩,为国产软件的发展注入信心。
从产业角度来看,各个实体厂商各具优势,且具有很强的成长性。对于自身发展有明确的定位和清晰的规划,同时积极参与生态的建设,保持持续的投入。众人拾柴火焰,生态建设和商业实现并举,相互激励,正在进入良性的发展轨道。
从技术角度来看,目前选定 Linux 开源为基础,有很现实的考虑。我国的操作系统发展,起于“七五”计划后期,对于 Unix 等操作系统有深入的研究,在八十年代就已经取得了自研中文通用操作系统的成果。但 Windows 系统的崛起和大举进入中国,对于我国的操作系统研究规划产生了影响,使得后续的研究缺少市场的支持,处于停滞状态。国内的操作系统研究转向了细分领域,虽然无法改变在通用操作系统领域大大落后的局面,唯一可幸的是在更广义的操作系统领域,始终保留了一定的投入,最重要的是持续培养了操作系统领域的人才,未使人才断代。
Linux 也属于类 Unix 系统,它也曾承受 Windows 系统的压力,但是得益于开源运动持续注入的活力,Linux 系统逐渐成熟,目前 Linux 系统已经有广泛的应用案例,在服务器领域已经处于领先地位,桌面领域也有了基础的应用生态,而且这个项目源代码完全开放,一定程度上满足了我国的安全诉求。因此,Linux 技术路线的选择是自然的结果,是对我国早期操作系统研究所积累成果的衔接,也是我国自主可控战略长期发展考量的结果,也是最符合现阶段市场和应用条件的选择。
在 Linux 项目中,我国厂商以 CPU 和设备厂商为首,在项目代码贡献中占据的比重越来越高。目前的 Linux 开源项目发展依然迅猛,我国厂商参与 Linux 生态不仅能够使自身收益,也能够促进国内基础软硬件产业的发展。基于 Linux 技术的操作系统的市场占有率,以及其开源属性,足以保证基于 Linux 技术的国产操作系统可以支撑起操作系统国产替代的核心使命,以及在未来我国信息化持续发展过程中,以我国自主的操作系统生态、技术和产品保证国家基础设施的信息安全和正常发展。
所以在操作系统国产替代完成后,我国基于 Linux 技术的国产操作系统发展之路还有很长的一段路要走。在这个过程中,我们也需要不断地在市场中磨合、锤炼,不断积累技术和经验,不断培养人才和壮大生态,走上一个持续积累、进化的发展道路。
从应用角度来看,自信创 2020 年正式铺开以来,到现在国内 PC 装机量中 Windows 的占比已经大大降低,越来越多的实际案例证明国产软硬件替代的解决方案在大到企业级小到个人 PC、移动终端等应用场景的可用性。
在前期充分的准备下,信创成果斐然。但对比国外操作系统发展水平,我们仍然在追赶阶段,国产替代只是一个阶段任务。在此基础上,国家在自主性方面的需要,产业在持续增长性方面的需要,技术在竞争力方面的需要,正在形成合力。自主可控的操作系统、国产操作系统、自研操作系统等等,犹如一个个浪花一样不断涌现,将在统一的生态下汇聚成一个答案,就是中国的操作系统。
从通用计算机出现以来,操作系统一直是非常活跃和饱受关注的领域。从操作系统的发展历史来看,Unix 系统在上世纪六十年代出现,Windows 在八十年代出现,Android 在本世纪初出现。操作系统的发展每隔二十年左右就会迎来一次剧变,如今又一个二十年即将到来。
虽然我们不能简单地从历史数据机械地得出操作系统二十年更新一代的结论,但是分析过往操作系统发展的重要节点背后的关键刺激因素,我们可以更加相信剧变即将到来。Unix 系统的出现是因为通用计算机,Winodws 的出现是因为 VGA 图形显示卡,Android 的出现是因为智能手机。硬件技术的突破带来的信息基础设施的扩展,是操作系统技术更新换代的根本原因。 一项技术如果真正发展成熟,它应该像水一样容易获取,没有门槛地造福大众。但现今的操作系统所面临的高昂成本或者兼容性、稳定性等等问题,仍然困扰着众多的用户。显然当今的操作系统技术远远没有成熟,而先进 5G 技术的发展,将会再次带来信息基础设施的扩展,必然也会引发操作系统的更新换代。
讨论操作系统不能不讨论它的双生子——编程语言。Unix 系统与 C 语言谁成就了谁,就像是一个鸡生蛋还是蛋生鸡的问题,永远没有答案。但毫无疑问,这二者的影响力一直延续到了今天。即使后面又发展出了几代新的操作系统,但是基础的概念仍然没有脱离 Unix 和 C 语言所确立的范畴。
正如操作系统由内核与上层组件组成一样,编程语言也由语言核心和应用框架构成。操作系统与编程语言两者的发展相互牵缠,彼此息息相关,呈现出一种类似 Tick-Tock 的发展节律。Unix/C 之后出现的几代操作系统主要是在上层组件和运行框架上的革新,还没有深入到操作系统和编程语言的底层概念。这并不是说操作系统和编程语言已经非常完美难以再进步,而是这种深层次的进化更加困难,尤其是编程语言的进化,所涉及到的技术更加基础也更加难以掌控,需要更长时间的酝酿。
相对于操作系统来说,编程语言在这数十年间的新尝试可能更加引人注目。一方面,最近几代操作系统的确缺乏颠覆性的创新,更多的是一种延续和升级。因此操作系统底层技术并不需要根本性的改变,只需要量的积累就可以满足这种变化。编程语言在这个层次上也有很多发展,各种应用框架不断出现,开发者手中的工具箱越来越丰富。另一方面,语言本身核心的理念和范式,也在不断发展,函数式编程、元编程等等,吸引了很多人研究,也有不少的应用。但在这方面的发展并没有被吸收到操作系统的底层技术中,主要还是语言核心部分的革新更加困难,还没有达到成熟。
因此我们观察到,编程语言领域的变革是非常激烈的,吸收新思想而设计的新的编程语言不断的出现,上世纪九十年代和本世纪初达到了一个高峰期。虽然还没有产生推动操作系统底层技术进步的效果,仍然处在自我完善的过程中。但也应该看到,即使新的编程语言仍然还不成熟,但其向外辐射的影响力正在增强,逐渐改变编程语言发展与操作系统底层技术发展没有有效结合的局面。Rust 正在进入 Linux 内核,微软已经在尝试使用新的语言重写操作系统内核。
在未来几年内,新的编程语言与新的内核彼此结合的情况将会成为越来越清晰的发展路线,二者彼此的结合也将促使各自的快速发展,使这种结合更加紧密,进入聚变的阶段。在这种趋势下,结合新的编程语言和新的内核,一定会产生新的更加成熟的操作系统,会和前几代的操作系统大为不同,将是一次颠覆性的变革,大大改变操作系统及应用软件的开发方式、部署方式、运行方式。这将是国外操作系统产业,从经验到技术积累到临界点,从而再次掀起的浪潮。
观察国外基础软硬件的发展趋势,新技术的衍生迭代过程,以 Linux 的主要发行商红帽为标志,国外实际在接近三十年前就开始了开源操作系统的商业化。而我国一直摇摆不定,直到最近几年才真正下决心培育自己的开源生态:开源基金会 - 开源社区 - 发行厂商的产业格局。这已经比国外晚了几十年,显然我们失去了宝贵的积累经验和试错的时间。
实际上,国外的操作系统产业与开源生态的发展格局并不是一成不变的。面向不同用户群体的发行版不断出现,不断壮大开发者和用户群体,发行版的多样性对生态发展起到了很大作用。从开源运动本身来说,也呈现多样性,变得更加成熟,开源协议出现了不同的版本,大大促进了开源技术向商业领域延伸。
而基于开源技术的产品,有的是完全开源的,有的是开源 + 闭源结合的,有的是纯的开源生态,有的是独有的细分生态。这种多样性,其实正说明国外的开源生态系统在经历了长期的发展、磨合后,已经进入了具有张力的成熟期。
在大的开源理念下,与商业结合的具体方式有很多不同的形式,哪一种更适合我国的营商环境,其实有一个自然的磨合阶段更好。所谓磨刀不费砍柴功,找到正确的方式,对我国操作系统的长期发展一定是非常有利的。而其中,生态的多样性无疑是一个关键,没有多样性的生态,内部的活力最终将会枯竭。而这种多样性,正是我们现阶段所缺乏的。
国外生态的多样性,使我们观察到一个有趣的现象:在操作系统创新、新一代操作系统的研发上,具有独立生态的厂商,具有更大的驱动力,而开源社区,却变得缺少自我颠覆。这说明商业与生态已经反向锁定了开源社区的技术取向。而这一切的底层逻辑是基础软件具有强大的辐射能力,只要没有颠覆性的变革出现,基础软件的架构就能够通过量的积累应对一般性的变化,所以 Linux 内核的代码量越积越多,已经积重难返了。
曾经开源运动是打破软件厂商技术垄断的力量,而今天厂商变成了开源框架下推动创新的主力军。时过境迁,角色也会互换,但生态的多样性,始终在推动开源生态持续发展。这是我们在自主生态建设中,需要认真关注的一点。
从操作系统的最新研发热点来看,Linux 内核为基础的开源操作系统技术路线显现出一丝被颠覆的可能,最显著的一点是微内核的兴起。在三十年前当开源社区与学术界就微宏内核的前景进行辩论时,当时的情况下,Linux 系统正崭露头角,虽然争论没有结论,但是后来的发展事实却证明了 Linux 的胜出,至少反映出大众心里是这样偏向的。但是今天或许这种情况会显著改变,在新启动的开源内核项目中,大多采用了微内核的技术路线。而 Linux 内核自身的发展,也进入了拐点,正在向微内核化方向发展。
以 5G 技术为基础的物联网带来新的发展高潮,将传统互联网和基于其上的云的边界都大大扩展,虚实融合成为讨论热点。在新的场景下,对于操作系统的定义可能会有全新的变化。
而作为操作系统乃至所有软件的基础的编程语言和开发、构建工具也在持续不断的演进,不断有新的语言和编程模型出现。应用开发的要求从偏重性能逐渐转向安全和可靠。一定会出现新的语言和新的操作系统,开启一个全新的时代。而这个从酝酿到变革的过程,从生态层面来看,中国的产业界基本是缺失的,缺乏投入、缺乏参与者,只能看到偶尔翻起的浪花,并没有形成一种具有牵引力的趋势。大多数的操作系统行业的参与者,更多地关注着当下,极少关注更远一些的未来。在这方面的差距,不是简单的国产替代能够补足,值得我们深思和警醒。
另外,Linux 系统自主可控是伪命题,我们并不能随意修改 Linux 的内核代码,因为需要严密的审核,而这些负责审核的主要是国外的专家团队。我们也没法控制 Linux 的发展方向以及与 Linux 相关的知识产权,因为这些都是属于开源社区的。在涉及安全领域的时候,我们仍然面临知识产权和法律方面的问题。
中国需要真正自主的操作系统,首先需要我们完全自主的编程语言、开发工具和完全自主的内核,两者缺一不可。我们应该看到,新的编程语言和新的内核在新的技术突破、新的理念、新的市场的刺激下,正在逐步显现。我们不能蒙蔽双眼,只盯着国产替代的任务和国内市场,而应该在这个拐点抓住机遇,奋起超越。
与商业相比,技术的发展没有捷径。商业的根本是资本,只要有资本就可以持续推动商业发展,并不需要关心这个资本是自己的还是借来的。在持续的商业发展中,通过不断的积累,终究会形成自有资本,在这个基础上经济的独立也可以毫不费力地实现。
而技术的发展是没有捷径的,因为技术的可持续性来源于创新能力。而没有基础的技术底蕴,没有经过试错阶段,是不会有创新能力的。商业只关心结果,而技术的发展,过程才是最重要的。
操作系统的出现伴随着计算机的发展。从最初的 Unix 系统,到后来的 Linux 系统,再到安卓系统,再到 ChromeOS,其实是一脉相承的。编程语言也是一样。C 语言伴随着 Unix 出现,后来发展出 C++,以及后来吸收了 C 语言优点或者针对 C 语言缺点进行改进而发展出的种种新的编程语言,比如 Rust,其实也是一脉相承的。在操作系统领域,我国在细分领域还是取得了不少成果的。但是在编程语言方面,世界流行的编程语言中,没有一个是在中国的科技树中结出的果子。
从国外操作系统发展来看,技术发展的连续性才能形成一定的厚度,从而支撑产业的良性发展。国外从 Unix 以降数代操作系统的发展,都离不开编程语言的发展,Unix 系统时期的 C 语言,Winodws 系统时期的 Visual C++,Android 系统时期的 Java 语言等等。其中一个共同的事实是,编程语言的发展才是操作系统更新换代的基础。
可见技术是基础,产业是上层建筑。有了技术底蕴和持续性的发展,参天大厦,一切皆有可能。而相对的,市场是虚的,生态也是虚的,在不同的历史阶段,对于成本的考量逻辑不同他们的价值就不同。唯有独立自主,基础技术上不断创新突破,才能在复杂的变局下握住通往未来的钥匙。
我国的信创产业,主要还是面向应用的,在信创基础软件目录中的,是应用所需要的基础软件,比如:操作系统、数据库、中间件等。但是没有包括这些基础软件持续发展所需的编程语言与工具,这些才是基础的基础。可见信创产业只是阶段性目标,主要是面向应用的,核心是解决应用领域的自主可控。而我们所希望的国产替代,从基础技术到生态到应用,从解决现实问题到可持续发展,使我国的信息化基础实现完全的自主可控和持续发展,还有很长的路要走。
当前国产替代最复杂的是涉及到各行各业的应用的迁移,保证业务系统的稳定正常运行。但是从操作系统发展的角度,仍然处在较低的水平。我们国产替代所设定的目标,国外早已经达到,并且在积累大量经验和新技术后,又走到了新台阶的边缘。我们跟国外操作系统不是一代的差距,很可能会继续扩大,如果我们只满足于市场与生态的置换的话。实际上信创只是阶段任务,是为下一阶段国产替代发展打下的基础。国外的发展已经处在临界点,我们要做的是忘掉目前的成果,打包好行囊,从“新”出发,直面新的变革,新的机遇与新的起点。在解决产业和生态问题后,技术端与应用端的连接有了更强的通道,技术的突破有了更有力的支撑,所以应该更加向下深入,瞄准基础软件的基础前进。反过来,技术的突破又可以直接在应用端产生价值。
我们不能重蹈覆辙,在起步的时候就已经落后,既要打基础,也要紧盯技术发展趋势。国外下一代操作系统已经酝酿了很长时间,至今还没有突破,这里面有多方面复杂的原因,一方面 5G 技术带来的变化巨大,辐射到产业链还需要时间,另一方面新一代的编程语言还没有成熟,最后在前期的试错中,国外头部企业也犯了一些错误,需要时间调整策略、消化成果。美国作为技术领先者,他们掌握了最新的变革因素,并且已经做了尝试、积累,正在开启通向未来的大门。
而我国的产业技术,在完成国产替代后,实际上才刚刚打好基础,从产业角度来说仍然还处于低谷。我们看似成功获得最新的技术成果,和国外对手接近站在同一起跑线,但如果忽略潜藏的变化趋势,简单地看待国产替代,以市场占有率论功过,可能转瞬间就被拉开代差。因为在下一代操作系统的时代,对手将在技术、模式、商业方面远远超过我们。我们短暂地获得市场占有率后,在下一个历史阶段到来时,我们还会把这个市场占有率还回去。反过来,如果我们掌握这个通向未来的钥匙,那么我们就有机会和对手站在同一起跑线上,有超越对手的机会。
那么我们是否能够掌握这把钥匙呢?在编程语言和工具方面,我国企业也并不是全无作为,只是缺少统一的生态,没有形成趋势。以目前国产替代中生态建设的成果,瞄准重点发力,我们是有可能赶上这一波技术更新的。这将使我们的国产替代之路,踏浪而行,缩短很多时间。
掌握自己的语言,就等于在波涛汹涌的浪潮中掌握劈波斩浪的利器。在技术上的自主,不是国产替代和市场成功可以实现的。以市场换技术,满足了经济发展的需要,但是却牺牲了技术的自主性。中国在航天领域的成就,正说明技术是换不来的,只有依靠自己发展,才能实现技术的自主。
国产替代正在紧锣密鼓地进行,从目前的情况看可行性已经得到验证,应用领域在不断扩展。以此为基点,新的市场格局与技术生态正在形成,这将成为我国信息产业未来发展的基点。
但同时也应该看到,我们有了自己的操作系统和生态,并不是我们赶上了对手,而是未来的变局正在酝酿,差距有可能拉大。对手的资源正在投入下一代操作系统研发中,并且已经取得一个个的突破,临界点即将到来,而我们已经大大落后。
国产替代来源于安全述求,需要市场和生态的支撑,但是如果没有持续不断的技术创新和演进,市场的占有率只是短暂的,而失去市场和生态的支撑,我们将面临发展和安全的两难选择,安全诉求也将成为空中楼阁。
所以,国产替代不是抢占市场,而是要以市场激活我国信息产业的造血功能,形成强大而持久的创新能力,才是长远之谋。而编程语言与基础工具是我们不能缺失的重要领域。
我国不是计算机的发源地,很遗憾地错过了现代信息技术奠基的黄金时间,虽然我国在后来的大基础科学领域,证明了我国的科技发展能力。但是信息技术发展的时代机遇错过了,就不会再来。
虽然我国后来在操作系统领域做过很多努力,自七五计划开始,就在大学和科研机构进行研究,有成果也培养了人才。但是操作系统虽然是基础软件,但它本质上是一种应用技术,仅仅进行研究是无法研制出优秀的操作系统,只有在市场中,在应用中才能不断地完善磨砺国产的操作系统。正因策略的调整,所以如今国产替代以自有市场培养自主生态,才有了成效。
但要我国的操作系统技术真正的腾飞,还需要时代的机遇,还需要在技术上真正突破。我们错过了计算机,错过了互联网。但是在 5G 时代,我们赶上来了。中国在 5G 技术的发展过程中处于领导地位,而 5G 技术带来的互联网、终端设备,服务方式、业务类型的深层次的变化,必定会在整个软件栈带来深刻变化,首先就是操作系统领域的突破。
中国有发达的互联网市场,有领先的 5G 技术,在这样的有利条件下,理应争取下一代操作系统中,迎头赶上,占据一席之地。以 5G 衍生出来的新生态为契机实现超越。
对比国外操作系统发展的历史,我国在硬件技术突破,产业生态、市场等方面都具备了下一代操作系统的研制条件,是否能在下一代操作系统中占有一席之地,关系到国产替代是重蹈起步就落后的覆辙,还是实现技术的腾飞。而所欠缺的就是基础的基础,编程语言和相应的工具。
历史又回到起点,相比于“七五计划”时期,我们在政策,技术,市场,人才方面都有长足进步,对于如何发展自己的操作系统,有能力给出不同的答案。立足于本国信息产业发展,建立多样性的自主生态系统,掌握基础软件的基础语言与工具,需要我们不仅仅盯住国内市场,更应该关注变化,还要有决心,才能掌握主动,拥有煮海之力。
钟俊,统信软件研发技术专家,专注于内核与编译器技术,长期在通信、云计算、安全、信创等多个行业从事底层软件技术研发及相关工作。
点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!
Web 开放性或遭重大打击!谷歌四名工程师推出 WEI 方案,可让广告拦截变成历史
微信扫码关注该文公众号作者