
公司
只从技术层面考量,不去谈什么情怀的话,我觉得鸿蒙是有成功的可能性的。要是在一年前,我甚至都会对鸿蒙能否成功持怀疑态度,不过在参与了一些项目之后,我发现这条道路确实存在成功的可能。一提到鸿蒙,肯定有不少人会说出套壳这两个字。从技术的角度来讲,套壳算是一个中性词汇,因为在很多情况下,软件不得不进行套壳操作,甚至只能选择套壳,而且仅仅是套壳这一操作,绝大多数的工程师都未必能够做好。一个操作系统若想取得成功,自身的技术以及生态都是不可或缺的。这里所说的生态概念非常宽泛,涵盖了硬件生态和软件生态。硬件生态具体来说包括各种各样的硬件、与之配套的形形色色的驱动,还有各种各样的应用层软件。那么要是从头开始编写一个操作系统,要怎样去扩展自己的生态?这时候就需要普及一些基本概念了:其一,操作系统内核本质上和应用层关联不大。其二,编写一个简单的操作系统内核并不困难。其三,大
公司具备编写复杂且完善的操作系统内核的能力。其四,应用层兼容性有应用层自身的解决办法。其五,如果大
公司自身拥有硬件产品,那么硬件生态就不会是一个很大的阻碍。这些基本概念,如果读者看到这里觉得有问题,那也没必要反驳,也不用继续看这个回答了,就当您是对的。好了,前面说过只谈技术,下面就进入真正的技术分析:决定软件生态的根本因素其实是兼容性,而关于兼容性,其实现在就有现成的例子,那就是
linux。并且最为关键的一点是,
linux的生态和它的内核并非是完全捆绑的关系。软件要能够运行起来,需要有一套操作系统API的支持,然而
linux实际上仅仅提供了系统调用,上层的事务实际上是应用层的C语言接口,而这套接口恰恰和操作系统内核没有关系。(这部分是重点内容)举个极端一点的例子,如果我采用一个嵌入式系统,提供与
linux兼容的系统调用(包括系统调用ABI、调用号、参数),然后在用户态再套一层glibc,或者不使用glibc而采用musl之类的库,那么只要这个操作系统提供一套和
linux相似的系统环境(例如procfs,例如环境变量),那么你就会惊讶地发现,在这个嵌入式系统之上,可以直接或者间接地运行一些
linux的应用软件,并且不需要做任何修改。所以,鸿蒙的策略是什么?就是兼容
linux,打造出一套和
linux一样的环境,这样一来,软件生态方面的大问题就迎刃而解了。我之所以能这么说,是因为我确实做过这样的事情,也见识过在与
linux毫无关联的操作系统之上运行
linux应用的实例,而且实际投入的人力其实并不多。