国产操作系统很多年没有搞成为什么有人会认为鸿蒙会成功?
只谈技术,不谈情怀,我认为鸿蒙是有可能成功的。
如果是一年前,我甚至都对鸿蒙能否成功表示怀疑,但是我参与了一些项目以后,发现这条路确实是有可能的。
说到鸿蒙,一定会有很多人会说两个字:套壳。从技术的角度上看,套壳是一个中型的词汇,因为很多时候,软件不得不套壳,甚至只能套壳,而且就套壳这两个字,绝大多数工程师都不一定能做好。
操作系统要想成功,需要自身的技术,以及生态。这里的生态就非常宽泛了,包括硬件生态和软件生态,硬件生态具体的又包括各种硬件以及配套的五花八门的驱动,以及各种五花八门的应用层软件。
那么如果要从头写一个操作系统,该如何扩大自己的生态?
这时候,需要普及一些基本概念了:
1. 操作系统内核本质上跟应用层关系不大
2. 写一个简易的操作系统内核并不复杂
3. 大公司有能力编写一个复杂且完善的操作系统内核
4. 应用层兼容性有应用层的办法
5. 如果大公司自身有硬件产品,那么硬件生态不是一个很大的障碍
这些基本概念,如果读者看到这里觉得不对,那么也没必要反驳,也就没必要继续看这个回答了,你说的对。
好了,前面说了,只谈技术,不谈情怀,下面是真正的技术时间:
决定软件生态的本质,其实是兼容性,而兼容性,其实现在已经有现成的例子,就是Linux,并且,最最重要的事情是Linux的生态和Linux的内核并不是完全绑定的关系。软件能跑起来,需要有一套操作系统API支撑,但是Linux其实只提供了系统调用,上层的事情其实是应用层的C语言接口,而这套接口恰恰跟操作系统内核是没关系的。(这段是重点)
举个极端的例子,如果我拿一个嵌入式系统,提供跟Linux兼容的系统调用(包括系统调用ABI,调用号,参数),然后再在用户态套一层glibc,或者不用glibc,用musl之类的库,那么只要操作系统提供一套跟Linux差不多的系统环境(比如procfs,比如环境变量),那么你就会惊奇的发现,在这个嵌入式系统之上,能直接或者半直接的运行一些Linux的应用软件,无需做任何更改。
所以,鸿蒙的策略是什么,就是兼容Linux,造一套跟Linux一样的环境出来,那么软件生态的大的问题就没有了。我能这样说,是因为我真的做了这样的事情,也见识到了在跟Linux完全不沾边的操作系统之上,跑Linux应用的例子。并且真正投入的人力,其实并不多。
既然一个规模并不大的团队在一个不太长的时间里就能搞定类似的产品,那么华为是否有这个能力呢?我认为华为应该有这个能力。
为什么国产操作系统系统之前都没有成功,这是因为技术的发展,选择正确的方向,比企业或者国家的技术能力本身更重要。这也是很多人在职场上喜欢说的一句话:选择比努力更重要。
龙芯半死不活,其实跟龙芯当年选择MIPS作为参考很有关联,如果龙芯当年选择的是ARM,那么现在可能完全不一样。
同样的,操作系统领域,过去没有人认为这套路是能成功的,是因为过去厂商更喜欢另起炉灶,更像是Linux和FreeBSD这种各自竞争的关系,包括诺基亚手机,都喜欢自己从头搞一套完全不兼容的东西。
但是现在各个厂商已经发现了,Linux除了PC平台都快要统一天下了,并且有安卓的成功先例,那么内核兼容这套路,是可以走通的。至少这个技术方向,是没问题的。
走到今天,前面的基本概念里,1-4已经没有任何阻碍了,剩下的就是5,而华为在第5条上是有优势的,华为本身有自己的硬件生态,可以在自己的硬件生态上直接做产品试验,这是很多小公司,以及很多纯软件公司做不到的事情。reactOS就是一个对Windows完全兼容的内核,但是reactOS本身不做硬件,那么硬件兼容性就是一个很大的门槛。但华为没有这个问题,自己能组装PC,造手机,做芯片,那么事情就变得容易了。
那么,鸿蒙有没有可能会失败呢?可能会有的。
1. 鸿蒙其实是在制裁之下的产物,准确的说是planB,正常的企业不会做这种费力不讨好的事情,毕竟企业是要赚钱的,如果外部环境发生变化,那么华为自然没有必要做这种投入大,回报慢的事情。
2. Linux暂时是统一天下了,万一Linux社区分裂了呢?万一Linus哪天挂了呢?(真的不是诅咒他老人家)放到20年前,30年前,谁能想到Linux如今的普及规模?
3. 万一华为自己完蛋了呢?万一任正非挂了呢?(他比Linus岁数大不少吧?)
最后,我认为鸿蒙是有可能成功的,这种可能性还不太小,至少从纯技术的角度上看,不那么困难。
评论区放开,我大概不会做什么回复。