首先,鴻蒙不是安卓。


這篇文章沒有冗餘的解釋,是作為答案提供給和我一樣嘗試解題的人。為行文便利,隱去不必要的時間和名稱。


關於“鴻蒙是不是抄襲安卓”,“鴻蒙是不是安卓套殼”……這些問題歸根結底,是在關註同一個點,就是鴻蒙系統是不是完全獨立於已知的其他系統且有本質不同的。


答案是否定的。


原因有二:


第一,從UNIX開始,主流的操作系統沒有一傢是完全獨立的,都有對其他系統,尤其是開源系統的繼承和發展。


第二,並不是說華為沒有能力開發一個全新的系統,但目前,主導安卓系統的Google已經奉旨停止瞭對華為的支持,華為所有的設備都急需一個新的系統,這種迫在眉睫的關頭,另起爐灶從底層開發出全新且可用的系統,幾乎沒有可能。


那麼鴻蒙是不是一個新系統?從系統發展史來說,是的。從開發者的角度,是的。但關於這個新系統的一切,都還處在“鴻蒙”階段,在這一點上,鴻蒙是個好名字。


回答這個問題,真的讓人亦喜亦憂。


對於系統內核,鴻蒙的開發者網站如此介紹:“內核子系統:Harmony OS采用多內核設計,支持針對不同資源受限設備選用適合的OS內核。內核抽象層(KAL,Kernel Abstract Layer)通過屏蔽多內核差異,對上層提供基礎的內核能力……”


如果事實如此,那麼鴻蒙貨真價實是一個全新的系統。其中,“Lite OS”(最初被餘總稱為“微核心”)更是被寄予厚望。


但一個系統的使用不是寫一個新內核就夠瞭,而且目前在鴻蒙的開發者網站上,KAL的介紹仍顯單薄。為瞭系統的可用性,鴻蒙必須要做兼容安卓的妥協,否則華為自己的產品都要暫時失去支持。


系統開發團隊已經證實鴻蒙系統目前仍是“雙框架”:下層是“AOSP”,“上層封裝瞭鴻蒙的接口”。這裡的AOSP就是Google主導的Android Open Source Project。很多人據此認為,鴻蒙不是一個獨立的系統。


這種想法是錯的。AOSP是安卓系統嗎,答案是否定的。嚴格來說,AOSP是安卓系統的開源部分。安卓最初的開發版本,是一個基於Linux內核的手機操作系統,這個系統本身是完全開源的。但是後來,Google收購瞭安卓項目,並且建立瞭開放手機同盟組織,主導瞭後續的開發進程。同時,在Google主導下,項目對Linux內核及安卓架構進行瞭調整,使得安卓系統更加完善和易用,但也綁定瞭一些非開源的內容,典型的是Google自傢的GMS架構。這使得安卓成為瞭一個由開源和閉源兩個部分組成的系統。其中,開源的部分就是AOSP,非開源的部分就是貿易戰時,Google停止對華為提供的。


AOSP的開源協議是Apache2.0。它規定開發者可以對源代碼進行任意的修改並在修改中聲明版權以及在完成修改後閉源新的代碼或者進行商用。這是國內有許多深度定制安卓系統的法律和技術依據。也是鴻蒙使用AOSP代碼的依據。


所以可以肯定的是,鴻蒙沒有抄襲,恰恰相反,鴻蒙開發的目的,就是要完全和Google主導的安卓系統脫鉤。隻不過迫於現實的需要,它必須在現在和未來的一段時間裡繼續支持安卓系統的應用(包括對GMS相關功能的替代或轉譯)。正如開發團隊所說,鴻蒙會在未來的版本中逐步“解藕”,直至單框架隻保留鴻蒙。


這時會有一個新的問題,好的,我明白將來鴻蒙會和AOSP解耦而獨立,那麼是否意味著,現在它是安卓套殼?答案也是否定的。


準確並且非文字遊戲的回答是,從系統發展史的角度,鴻蒙現在是一個AOSP的全新分支(Fork)。鴻蒙並不孤單,亞馬遜公司的Fire OS,也是一個AOSP的分支系統,而且是閉源的。鴻蒙目前意義上是一個開源的系統,它的開源項目名為OpenHarmony,由華為捐贈給瞭開放原子開源基金會,“主要遵循Apache 2.0協議”,和安卓相同。


且嚴格來說,鴻蒙使用的僅僅是安卓的框架,同時已經進行瞭修改和發展。如果非說套殼,那它應該是Linux內核上的套殼,因為AOSP本身,一開始也是Linux的套殼。


最初的安卓和許多開源系統一樣,在系統內核上沒有選擇,隻能基於Linux。重寫內核對世界500強的華為不現實,對當時草創的安卓團隊更是天方夜譚。但是與其他開源項目不同的是,Google深深地影響瞭這個開源系統。為瞭更好地保護硬件廠商的硬件信息以便推廣新系統,Google對AOSP的Linux內核以及驅動程序的部分進行瞭針對性的修改,對硬件信息進行瞭部分隱藏,同時通過植入Google保留專利的服務,增強瞭系統的實用性。但是這相當於背離瞭Linux開放共享的原則。2010年2月,Linux內核開發者Greg Kroah-Hartman將Android的驅動程序從Linux內核“狀態樹”(“staging tree”)上刪除,從此,Android與Linux開發主流才徹底“解耦”。


如此說來,Linux作為內核是不是完全獨立的?不完全是。Linux是仿寫閉源系統UNIX而來。雖然最初的一萬行代碼由一位程序員自己寫的,但是真正的第一版Linux實際上由當時網絡上一批素未謀面的程序員共同完成。他們當時也隻有一個參考對象,就是UNIX。所以除瞭最初的源代碼,Linux幾乎從內到外完全模仿瞭UNIX,從現在的意義上說,Linux更像是“抄襲”,因為它的初衷就是做一個類UNIX的系統,程序和開發也都大都兼容UNIX。


Linux沒有成為UNIX的“套殼”版本的原因有兩個:第一,當時還有一萬行代碼啟動一個全新操作系統項目的現實可能。第二,因為UNIX源代碼當時早已由AT&T完成瞭私有化,無核可套。


有趣的是,Linux的產生正是因為UNIX的閉源。當時一位大學教授為瞭教學,隻好自己仿寫瞭一個類UNIX的簡化版系統,Minx,又碰巧有一個大學生認為這個系統太難用,才有瞭Linux的第一行代碼。


事實上,UNIX系統本身也不是完全獨立的系統。UNIX的歷史可以追溯到從 1965 年開始的 Multics 工程,隻不過這個工程以失敗告終。UNIX是在吸取失敗經驗的基礎上,對目標和代碼都進行瞭簡化而寫成。之後,UNIX推動瞭開發語言的發展,1972年,C語言誕生。次年,UNIX的開發人員用C語言重寫瞭UNIX的內核。大部分由C語言寫成的UNIX,理論上成為瞭第一個非匯編語言的程序。


這樣看來,C語言寫成的UNIX,或許是唯一沒有任何“抄襲”或“套殼”嫌疑的操作系統。


綜上所述,鴻蒙一系的操作系統,其發展歷程大致如下:


Multics(未完成)——UNIX(匯編語言版)——UNIX(C語言版)——UNIX(AT&T源代碼私有化)——Linux(完全開源)——早期安卓(基於Linux內核,安卓框架,開源)——Google時期安卓(基於Linux的改版內核,安卓+GMS框架,與Linux主流開發脫鉤)——鴻蒙(基於組合式內核,目前以Linux和華為Lite OS為主,采用AOSP+鴻蒙雙框架)。


至此,基本可以支持我提到的:“從系統發展史的角度,鴻蒙是新系統”的觀點。


至於從開發者的視角,首先,無論是內核,還是開發工具、開發環境,目前公開的信息仍很模糊。其次,鴻蒙目前最突出的創新點“分佈式應用”,如何在編輯代碼時就實現“一次開發、多端部署”,也還沒公開過Java版本完整示例。


且不說一個全新內核的開發,即便隻是建設和完善一個全新的框架,也需要大量開發者的參與和很長的時間積累。這有Linux和安卓的歷程可以參考。在這個過程中,華為如何主導或者說是否會主導OpenHarmony項目,應該會決定這個系統的生死。摒棄所有的營銷語言,華為以及所有的國內終端廠商,大概都知道未來的路有多遠。


當然,如果華為沒有遭到美國狙擊,這個時刻的到來,可能要推遲很多年。但這次狙擊對所有的中國企業、包括政府,應該都是一個警告:操作系統和CPU一樣,可以一擊致命。擁有獨立的操作系統,或者至少掌握大部分的核心技術,不是一個單純的商業問題。解決這個問題,不可能隻靠華為一傢公司的努力。


誠然,鴻蒙並不是操作系統的“鴻蒙”,但卻是中國在操作系統開發史上的鴻蒙。對此,我隻有祝願。




定囘


2021.6.3



註:
1. 限於個人能力,本文更近於歷史學的考辨,其中有任何計算機專業方面的錯漏,請不吝留言指正。
2. 本文大部分信息來自已公開的網絡資料。關於鴻蒙系統的細節,可以點擊原文進入其開發者官網瞭解。

創作者介紹
創作者 3C王者 的頭像
3C王者宇晨

3C王者

3C王者宇晨 發表在 痞客邦 留言(0) 人氣( 3 )