本文为《九评鸿蒙架构》之一。
很多操作系统爱好者,首次进入鸿蒙生态,都是被微内核的宣传吸引过来的。目前主流操作系统中,Linux是宏内核,Windows NT是混合内核,XNU是混合内核。这个世界上不是没有过流行的微内核,QNX就是,结局连汽车大本营都被Linux偷了家。最近的实验,大概还在十年前Google尝试做过Zircon,结果出师未捷中道崩殂。华为如今拾人牙慧,把自家的LiteOS开源裁剪还通过形式化验证,让微内核阵营看到了一线曙光。
结果生产版本大失所望,专为IoT开发的LiteOS撑不起比手表大的设备,在手机、平板上运行的,是重新定制的闭源的HongMeng Kernel(也译成鸿蒙微内核)。这就让人非常无语,我们放弃Android,不是为了选一个更封闭的操作系统。手上这台鸿蒙电脑,实际的状态是,底层HongMeng Kernel是闭源的,上层HMS是闭源的,只有中间薄薄的一层OpenHarmony是开源的。那请问,这和OpenDarwin有什么分别?有,OpenDarwin真的包含完整的XNU代码。
闭源还导致一个严重问题,那就是外界谁也不知道华为是真的技术自主,还是在旧世界上缝缝补补。与之相比,vivo的BlueOS Kernel至少从第一天起代码就很干净,纯Rust编写,开源可见,兼容MMU和non-MMU,理论上可以从手表一路扩展到平板(只是蓝厂没有制裁焦虑,没有兴趣主动摆脱AOSP)。
从论文和实际表现看,鸿蒙微内核并不像一个原教旨的微内核,很可能也借鉴了混合内核的设计。如果设计上没有拉开代差,至少让苹果用户跳船就少了一个很重要的理由。
如果不能兼容BlueOS Kernel或者Zircon,OpenHarmony引以为傲的多内核架构就成了只许州官放火,不准百姓点灯(当然,类似说法会在系列专题中频繁出现)。
退一步讲,要是因为时间紧任务重,没条件去搞Zircon那么先锋的实验,就还用Linux也没什么丢人的,起码现有的大量硬件驱动和GNU脚手架,不用重新写了,高通手机和英特尔电脑的星河升级,也变得容易许多。鸿蒙之父王成录去了深开鸿后发布的Kaihong OS,正是践行了这样务实的方针。
现在的HongMeng Kernel,刚好卡在了不上不下的点上。要想完全发挥软硬件一体化优势,上限锁死在了OpenHarmony框架。要想发动开源社区去给它添砖加瓦,争取成为商业友好操作系统内核的首选,对不起此路不通。
多说一嘴,半开半闭的设计,对生态同样非常不利。在Android生态下,相当一部分程序不需要GMS就可以运行,这也是为什么华为海外市场还没有被清零。而在OpenHarmony生态下,API分成了HongMeng Kernel的、OpenHarmony的和HMS的,第一批被华为连拉带拽进来的开发者,基本都是混合使用了这三者,甚至华为还在不遗余力锁定HMS生态。这就意味着,这些千辛万苦完成了去美化的开发者,如果想要把应用编译到Kaihong OS等第二发行版上,还得再走一遍去华为化的流程。对于生态号召力远不如华为的深开鸿来说,这基本就是死路一条。
而失去了OpenHarmony的开发者基数,HarmonyOS生态也终将成为无源之水,无本之木。