这是古老湿的第82篇原创
2019年,鸿蒙 1.0 发布——没有代码,没有 SDK,没有生态,名副其实的「PPT 操作系统」。
2020年,鸿蒙 2.0 发布,一切似乎都和计划的一样美好:
操作系统代码开源了,一口气发布了130多个代码仓库,能开发鸿蒙 app 了……
但每一项,都有「糊弄事」的嫌疑:
OS代码的确开源了——但开源的是魔改版的嵌入式操作系统 LiteOS,而 LiteOS 早在 2015 年就已经开源;
130多个仓库数量不少——然而中间有大量无意义的凑数代码;
鸿蒙 app 终于可以开发了——但目前只能跑在嵌入式系统里、仅能给物联网写应用(智能冰箱、智能空调的水平),远远达不到余承东早在 2019 年就说的「鸿蒙随时可以替代安卓」的水平,距离手机操作系统更是还有十万八千里。
……
种种迹象表明,鸿蒙 2.0 的开发进度,远没有大家认为的那么美好。
鸿蒙的「按揭开源」已经被诟病很久了,根源很可能在于当年的牛皮吹的过大,以至于现在一路狂奔也赶不上。自己吹的牛,只能含着泪一点点亲自擦屁股。
原本说好的「微内核」等,在今年华为开发者大会上不见踪影,反倒是把 2015 年就已经开源的 LiteOS 重新魔改了一下推出前台,并号称 IoT(物联网)是鸿蒙分布式操作系统的重要生态之一。
理论上,这么说当然没错,连 Google、苹果都对 IoT 有非常强烈的执念,华为发力物联网也很正常。但是去年承诺的东西拿不出,今年拿出来的东西似乎又有着「拿旧货临时顶场」的嫌疑,难免让人怀疑华为自身对于开发一个全新操作系统到底有多少的诚意?更何况 LiteOS 本身已经推出五六年,在生态方面没什么进展,改个「鸿蒙2.0」的名字就能逆天改命吗?这是算命先生给出来的建议吗?
要说「开源的物联网操作系统」,国内一点不新鲜。阿里巴巴的 AliOS Things 就是一款开源、微内核的物联网操作系统,而且早在 2017 年就已经开源;腾讯也有 TencentOS tiny 这款开源的物联网实时操作系统;以及虽然出身小厂、却被市场广为接受的 RT-Thread 物联网操作系统。
(在Github上有6000多次commits的AliOS-Things相当活跃,开源、微内核,不看名字我以为是鸿蒙)
这么多珠玉在前,都没乘上「爱国」这班快车,可惜了。我这副老胳膊老腿,面对如此鸿蒙 2.0,实在沸腾不起来。
说一千道一万,既然已经鸿蒙 2.0 代码开源,我们就先看一下鸿蒙的代码。
很难想象,在一个全民瞩目、且号称已经可用的操作系统中,还存在很多函数要么内容为空、要么毫无意义,仅仅用一堆低水平、高重复的代码来填充仓库。
是华为工程师背着代码行数的 KPI?还是「抛砖引玉」坐等外部开发者提供「场外支援」?
(代码地址:https://openharmony.gitee.com/openharmony/drivers_liteos/blob/ccddeb611bcb5461f3d8fd637674297f3667e0bb/mem/src/mem.c)
以上图为例,若干函数 return 0,而没有任何内部逻辑,这样的函数毫无意义,只是用来当作占位符或者滥竽充数。
我们用一个简单的比喻来阐述代码的原理——如果将程序员写函数当作厨师做饭,一个正常的流程应该是:
1. 想好做什么菜(定义函数);
2. 开始做菜(书写函数内部逻辑);
3. 最终宣告菜肴完成(return 0)。
鸿蒙的开发者则跳过了中间的「做菜」步骤——刚决定做菜,就宣布菜已做好,至于最关键的怎么做菜、用什么做菜,则神奇失踪了。
这样的代码,没有任何意义,只能说纯属凑数。
除了上述代码,还有类似这样的代码:
(代码地址:https://openharmony.gitee.com/openharmony/multimedia_frameworks_audio_lite/blob/51798ac0557c6fb757ba1f1088fc5fb1ad119a04/audio_encoder/audio_encoder.cpp#L78)
在这个音频相关的文件里,开发者堆叠了一堆毫无意义的代码,翻译一下大概就是「如果是土豆丝,就给你土豆丝;如果是炒鸡蛋,就给你炒鸡蛋」之类的如同精神病人一般胡言乱语的业务逻辑。代码水平的高低暂且不说,红框圈起来的部分还疑似出现笔误,大概是程序员在复制粘贴的时候忘记改这一行了。
以上两个例子只是说明一下鸿蒙 2.0 开源出来的都是些什么样的东西,让大家在沸腾之前先搞清楚到底为何而沸腾。
我不知道这样的「开源」意义何在。优秀的开源作品,几乎都是在开源早期就显示出优秀的代码质量和巨大的应用潜力,进而吸引更多人贡献代码。而鸿蒙这种质量的代码,我严重怀疑到底能吸引到多少程序员添砖加瓦。就算是开源项目、就算等着大家一起出力完成,也应该自己搞定这些基础代码再来邀请其他程序员合作吧?反正我不会把自己的时间浪费在一个连产品方自己都胡乱凑数的项目上。
鸿蒙项目从宣布开源至今,一直在技术圈保持着神秘面纱。即便是鸿蒙 2.0 部分发布的当下,依然有大量信息不为人知。原因之一就是,华为要求鸿蒙研发人员签署「保密协议」,除了开发者大会上放出的代码,外界得不到任何消息。这显然与「开源」二字背道而驰。
(现在等来开源了,结果却……)
在软件工程界,一旦选择开源,就必须面对外界的监督审查。不仅仅是一次性释放出来的代码,更要对开发进度彻底开放透明、并保持对产品的更新与维护、处理社区反馈、对外部开发者的代码 PR 进行 review 与合并等等。以惯例来看,开源项目绝无签署什么保密协议的必要性,毕竟代码本来就是要公开的,让开发者签保密协议纯属**子放屁。
然而令人哑然的是,鸿蒙这样一个举着开源大旗的项目,偏偏要和内部开发者签署保密协议,到底是怕技术过于先进、被安卓和 iOS 抄袭?还是怕开发进度过于搞笑、公开出来只剩啪啪打脸?
经过上面对鸿蒙代码的查看,我们也大概知道为什么要让开发者签署保密协议了。毕竟华为 2019 年「鸿蒙随时可以取代安卓」的豪言壮语,言犹在耳,现在却只能在嵌入式设备上跑一跑。对于打脸,华为是有切肤之痛的。
华为消费者业务CEO余承东在 2019 年曾说,经过方舟编译器的编译后,主流应用性能可以超过安卓系统 60%。
然而在今年的开发者大会上,余承东又说「鸿蒙系统现在已经能够达到安卓系统70%-80%的水平」。
本来鸿蒙性能是安卓的 160%,结果越开发越差,到鸿蒙 2.0 直接腰斩到 80%——莫非是华为工程师水平太差,导致鸿蒙「出世就是巅峰」、此后却一路下行?
其实,华为高管在鸿蒙上的「前后不一致」,从去年开始就非常惹眼。
2019年7月,华为董事长梁华表示,鸿蒙是为物联网开发的操作系统,是否发展为手机系统还未确定。
2019年7月,华为公共及政府事务部总裁陈黎芳澄清,鸿蒙是用于工业系统,并非为手机操作系统设计。
2019年10月23日,华为轮值董事长徐直军在华为媒体沟通会上称,鸿蒙本来是用于华为内部一个内核的名字,后来被媒体误传为华为的操作系统。
2020年4月22日,曾声称「鸿蒙两三年内赶超苹果系统」任正非,改口说要想超越苹果和安卓,不会超过 300 年。
……
到底是华为内部对于鸿蒙定位出现了偏差?还是余承东、任正非等几位高管对于鸿蒙的发展过于乐观?
从已经部分开源的鸿蒙 2.0 来看,恐怕兼而有之。
如今回望华为高管在一年前发出的的「鸿蒙属于工业系统,并非为手机设计」的澄清,我觉得这个说法相当靠谱。最重要的证据就是,无论华为内外对于这个系统如何进行吹嘘,最终拿出来的产品,始终不是手机操作系统。在「废话无用,代码拿来」的工程领域,你交出来的货代表你的真实本领,吹出去的牛永远只是笑柄。
不过按照今年华为开发者大会上的最新路线图,鸿蒙在 2021 年将全面支持大容量设备,也就是手机。到时候,我们再来看一看鸿蒙 2.0 的代码到底写成什么样、能不能让人沸腾吧。
反正今年,我先不沸腾了。
评论(0)