華為的鴻蒙開源之後,有人去看了代碼

本文來源:冠東兄的茶室

微信id:christonxu

作者:冠東兄

做過硬體,也做過軟件,要說到對二者研發的體驗,有一點很突出:

硬體你做出來了,就能用了,好用不好用是另一碼事。

但軟件不同,對於軟件來說,有沒有是一回事,能不能用是另一回事,更不要說好不好用了。

一個軟件開發出來,往往經過了性能測試,證明可以工作是遠遠不夠的,因為各種場景,各種壓力測試,等等,都可能會暴露出很多問題。

很多軟件公司就死在了這個階段上,做出了很有創新的軟件產品,但卻解決不了實際使用情況下的穩定與可用性。

談到菊廠的鴻蒙,從去年8月份宣布1.0版本發布開始,我是從來不談的。

因為一個號稱開源的軟件產品,居然在技術開發者大會上只有PPT而沒有提供可下載的代碼,怎麽都無法證明它真的存在。於是,等,等菊廠發布開源代碼。

這一等就是一年零一個月,雖然期間菊廠說在智慧屏上應用了鴻蒙,又有大牛揭露智慧屏裏顯示的是安卓9.0,我們還是終於等來了鴻蒙開源的這一天。

雖然開源的成了2.0版本,讓人無從辨別1.0版本作假案是否成立,但有總比沒有好吧。

還是先說說從那幾個方面入手分析吧:鴻蒙在手機上可用嗎?鴻蒙能代替安卓嗎?鴻蒙的代碼到底說明了什麼。

既然是聊天,就得說人話,不能老說技術術語。那麽我們就用產品管理上最常見的競品分析方法,來倒推鴻蒙系統到底目前是個什麼狀態。

這種方法在不了解對方具體設計參數時很管用,完全從對方公開發布的市場信息來進行比對,最佳是同一人言論比對,其次是不同人同一時期比對,再次是前後時間軸比對。正所謂,你吹的越多,漏的底也就越多。

這次大會還是余承東主持的。在鴻蒙的歷史上,余總的宣傳形象一直是有些大嘴巴,唱高調。

從下面幾個時間點的新聞題目就可以看出:

2019年8月,余承東提出鴻蒙會取代安卓系統。(這也就是那次1.0的發布會)

2019年10月23日,華為輪值董事長徐直軍在華為媒體溝通會上稱,鴻蒙本來是用於華為內部一個內核的名字,後來被媒體誤傳為華為的操作系統。

2019年7月,華為董事長梁華表示,鴻蒙是為物聯網開發的操作系統,是否發展為手機系統還未確定。

2019年7月,華為公共及政府事務部總裁陳黎芳澄清鴻蒙是用於工業系統,並非為手機操作系統設計。

這就是去年不同人同一時期的言論對比。從這個裡面其實可以看到,鴻蒙取代安卓系統這個說法在去年,其實算是一個忽悠類的宣傳。

那麽今年呢?今年的會上,余總自己說了些什麼呢?

據余介紹,鴻蒙OS 2.0正式面向應用開發者發布Beta(測試)版本,9月10日發布大屏、手表、車機版本,12月份將發布針對智能手機的Beta版本。他還宣布從明年起華為的所有智能手機都將支持鴻蒙系統。

但與此同時,余還介紹了產品演進時間表,我相信上一段話估計是市場部門給他的信息,而下面這段話是研發部門給他的。

「9月10日面向記憶體128KB—128MB終端設備開源,明年4月份面向記憶體128MB-4GB終端設備開源,明年10月份,面向4GB以上所有設備全面開源。」

好吧,這是同一個人在同一天,同一個場合所說的話。這是我們做競品分析最喜歡的原始材料。

如果第一段是真的,那麽手機開發商,應用開發商會在今年的12月份拿到手機的開源beta版,進行自己產品相應的開發與適配。

但從鴻蒙源代碼的能力上來說,在今年12月份只能支持128K-128M記憶體的設備,到了4月份,才可能支持4G以下的的設備。而2021年10月份才會支持4G以上設備。

那麽,問題就來了:請問現在還有記憶體128M以下的手機嗎?

物聯網設備倒是符合的一大堆,但你給合作伙伴一個支持128M以下的源代碼,他們怎麽做手機應用開發呢?

現在的智能機基本上都已經是4G記憶體以上了,那麽也就是說我如果是一個手機廠商,只有到了明年10月份之後,才可能拿到華為的可以測試的軟件版本。

那麽請問:今年12月發布的所謂「手機版鴻蒙」會是什麼?老人機專用軟件?還是PPT版本?12月發布手機版與明年10月份支持4G以上設備,必有一個是假,你覺得哪個假呢?

那麽鴻蒙從技術上能不能代替安卓呢?

菊廠總是說鴻蒙是微內核,分散式技術。這話很唬人,那我們就來看看什麼是微內核,安卓是不是微內核。

對於微內核,用戶服務和內核服務分別運行在不同的地址空間中;對於宏內核不管是用戶服務還是內核服務事實上都是內核在統一管理,它們是運行在同一地址空間中的。

下圖是二者一個簡單的對比表:

看完表,我們不得不談幾句技術,要不然說不清楚後面的話。

微內核定義:

內核管理著所有的系統資源,在微內核中用戶服務和內核服務在不同的地址空間中實現。

在應用程序和硬體的通信中,內核進程和記憶體管理的極小的服務,而客戶端程序和運行在用戶空間的服務通過消息的傳遞來建立通信,它們之間不會有直接的交互,這樣一來,微內核中的執行速度相對就比較慢了,這是微內核架構的一個缺點。

在內核架構中,用戶服務是獨立於內核服務的,因此任何用戶服務崩潰都不會影響到內核服務,這就加強了操作系統的健壯性,這是微內核的優勢所在。

另一點,微內核的擴展性強,添加一個功能,只需要建立一個新的服務到用戶空間當中,而內核空間不需要任何的修改。

因此,微內核可移植性強、安全並且易於擴展。

宏內核定義:

宏內核同樣管理著用戶程序和硬體之間的系統資源,但是和微內核不一樣的是,在宏內核架構中,用戶服務和內核服務在同一空間中實現。

具體一點,就是內核可以代表內核進程運行代碼,就是通常的內核進程;當用戶進程經過系統調用或者中斷進入到內核態時,內核也可以代表它運行代碼。

這樣一來,宏內核需要管理的資源多於微內核,其大小就相對大一些了。

在宏內核架構當中,內核管理著CPU調度,記憶體管理,文件管理和系統調用等各模塊的的工作,由於用戶服務和內核服務被實現在同一空間中,這樣在執行速度上要比微內核快。

然而,宏內核的劣勢也是顯而易見的,那就是當內核中的某個服務崩潰了,整個內核也會崩潰。

另一點,想要在內核中添加新的功能,就意味著內核中的各個模塊需要做相應的修改,因此其擴展性很弱。

簡單的說吧,微內核處理速度慢,但帶來的好處是安全性和擴展性好,對硬體要求低。

所以,微內核的主要應用場景是在物聯網設備上。

因為物聯網設備其實功能都很簡單,控制計算能力要求低。最重要的是物聯網設備對成本非常敏感。

比如一台冰箱,加一個智能控制與物聯網晶片在成本上加1塊錢2塊錢,廠商可能會接受。但如果加5塊錢,恐怕就很難了。畢竟,物聯網概念對於冰箱是錦上添花,而不是雪中送炭。

這次會上華為業務軟件部門的王成錄就比余總實在多了,介紹的都是鴻蒙在物聯網設備上如何使用,和電器商如何合作。

這就是因為鴻蒙這種微內核的系統,雖然運算能力弱,功能不強,但對於這些物聯網應用,足夠了,且便宜。

當然,你如果每台冰箱加個安卓系統,4G記憶體,曉龍晶片,那當然運行起物聯網應用來得心應手,搞不好你還能冰箱上面裝個螢幕看看電視。再變態一些,改用windows系統,intelCPU,在冰箱裏內置個一體機更棒。

可這純屬大炮打蚊子,不是技術做不到,而是能力過剩。

那麽智能手機呢?我們先不說手機操作系統的生態圈問題,菊廠的鴻蒙有沒有可能像安卓一樣建立起龐大的開發生態圈,只說技術本身。

目前智能手機的處理能力,與二十年前的386PC相比已經有過之而無不及。因此,目前智能手機的操作系統,基本上還是宏內核的。

比如安卓,可以看做是一個閹割過的Linux。國際上還沒有一個廠家,能夠在保證目前主流智能手機的性能情況下,開發出處理效率足夠快的微內核操作系統。

所以,理論上說基於微內核的鴻蒙系統達到目前安卓系統的處理能力,不是絕無可能,但絕不是這半年一年之內就能解決的問題。

這,其實也就是為什麼菊廠說明年10月才能支持4G以上終端設備的原因。

注意一點,這句話很有學問,它們說的是終端設備,手環也算終端設備。但他們說的並不是手機,因為手機的操作系統難度,遠比手環要高。現在的安卓手環,是用了強大的平台,完成了簡單的功能。

而鴻蒙要做的,是要把一個簡單的平台,逐漸壯大到可以完成復雜的功能。由上而下與由下而上,二者的難度不可同日而語。

最後怎麽也得聊聊代碼了。

這幾天,一些專業人士寫了他們對鴻蒙代碼的分析,我就借用一下吧。畢竟我早就不寫代碼了,前面的分析是從產品管理的角度來看的,這裡借用一下技術大牛們看了代碼的分析吧。

有的人還是糾結於之前鴻蒙是否就是安卓的問題。

知乎上一位牛人逐段分析了相應代碼,得出的結論是鴻蒙2.0和安卓是不同的,但和菊廠的liteOS(物聯網的東東)相近。

這個分析從側面證實了一點,到了2.0階段,鴻蒙是有的,解決了有沒有的問題。但能不能用,還待證實。

另一位echocxp的大牛掃看了一下134個庫,我截一段他的評價,當然把對菊廠的評價去掉了。

「這次放出的比較核心的系統是liteos https://openharmony.gitee.com/openharmony/kernel_liteos_a 」

「這是啥?能替代安卓嗎?當然不能,這是一個面向物聯網的小型操作系統,只提供了基本的記憶體管理和任務調度的功能。別說安卓,就是距離linux內核還有十萬八千里的距離。」

「這個系統大致等同於我們用的 ucos rt-thread等嵌入式操作系統。要我評價,玩具而已。」

「如果這個liteos撐不住大場面,那麽未來手機怎麽辦?從這次的鴻蒙放出的源碼來看,看不出什麼。但是我猜測只有兩種可能。」

「兼容安卓。我認為凡是號稱兼容安卓的系統,就是安卓系統。」

「Linux chromium 打造 web開發平台。這還有可能和安卓抗衡一些。但是別忘了 chromium也是google的東西。」

「你搜索一個下面的開源軟件列表,是不是看到了 linux kernel了。對了,華為未來大型系統必須也只能基於linux內核打造。請記住Liteos就是玩具。」

好吧,這兩位大牛還不夠細致,因為這次發布會前有個自稱菊廠程序猿的人表示,加班編譯完了所有500多萬代碼(其實發布會前加班編譯這個事情本身就說明這產品是趕出來的,沒做過啥壓力測試)。

於是大牛們就懶得數有多少行代碼,直接只看關鍵庫了。

而下面這位牛人更細心:

800萬行代碼,其中第三方開源庫和供應商開源庫中的代碼就有750萬行。有菊廠版權說明的為15萬行,疑似菊廠版權的另15萬行。

有興趣的可以去查一下安卓開源代碼的數量,以及谷歌的核心代碼數量。

要說鴻蒙代替安卓是明年的事情,我只能用鴻蒙這兩個字的原意來回答:鴻蒙者,混沌不清也。明暗部分,清濁不明。沒有盤古劈天大斧,什麼都不是真的。

閱讀原文