2
雷鋒網按:本文作者何楚,開源軟硬件愛好者,Linux重度用戶,工程師、分析師。雷鋒網獨家文章。
近日,據外媒報道,Google 目前正在致力于開發(fā)一款新的開源操作系統—— Fuchsia,使用不同的內核全新編寫,支持 PC、手機以及其他智能設備。業(yè)界的聲音普遍認為:Fuchsia 的目的就是打通PC和手機,可能會是谷歌未來 IoT 的融合操作系統,甚至有聲音說是為了代替 Android 和 Chrome OS 而研發(fā)的下一代操作系統。
根據網絡信息:它使用的不是 Linux 內核而是叫 Magenta 的新內核;它的UI層使用的是 Dart 語言開發(fā)的Flutter;渲染器是Escher;應用程序框架Mojo。除此之外沒有太多對這個項目細節(jié)的說明。創(chuàng)始人在 irc 上被問道:“為啥沒個文檔說明也不宣布一下,就把它開源了?”,回答:“(我們)決定把它開源,而且覺得應從項目初期開始(因此一切都不完善,也因此沒有對外宣布)”。
所以要了解這個項目的具體情況,比較好的方法就是翻文檔和代碼。
官網的文檔資料很少,筆者把能找到的都翻出來過了一遍,嘗試把 Fuchsia 運行起來。
前面所說的 Magenta,是一個微內核和一系列用戶空間的服務、驅動的組合。目前它已經能夠在虛擬機、某幾款NUC小電腦和某款筆記本上啟動運行。在虛擬機里面運行后就是一個字符終端,執(zhí)行一個叫 mxsh 的 shell,另外還有少量的基本工具和測試程序集 。
只有 Magenate 內核的 Fuchsia 系統,在虛擬機運行起來是這個樣子:
圖:虛擬機內跑起來的 magenta 內核
看起來一點都不酷,對不對?!因為這個基本系統沒有圖形用戶界面(GUI)部分。繼續(xù)閱讀 Fuchsia 編譯文檔,經過長時間的下載、編譯、等待和嘗試,筆者也沒有能成功見到一個在 magenta 內核上運行的 GUI 程序。再仔細檢查源碼和文檔才發(fā)現,UI 部分現在還沒有被合并入項目。
好吧,資料說“它的UI層使用的是 Dart 語言開發(fā)的 Flutter;渲染器是Escher;應用程序框架Mojo”。那我們試試單獨編譯跨平臺的 Flutter,看看用戶界面會是啥樣。其他如內核、開發(fā)語言、基礎框架等,普通用戶是感知不到的——還是留給工程師們關注吧。
Flutter 是可以運行在 Android 和 iOS 上的用戶界面開發(fā)庫,從它的源代碼提交和bug跟蹤日志中的信息看,目前它的引擎還不能運行在 Fuchsia 上,不過已經很接近可以工作。Flutter 官網聲稱自己還是一個早期階段的開源項目,經筆者檢驗雖然是早期項目,但是在 Android 手機上運行起來演示程序還是很容易的。所以,一起圍觀下 —— “未來” 操作系統上的程序可能會是什么樣子(請忽略Android自帶黑邊和某運營商標志):
圖:跑在 Android 手機上的 Flutter Gallery 演示程序
Flutter采用 Materal Design 設計語言(規(guī)范),該規(guī)范定義了用戶界面上的元素的用途、外觀、展現形式以及形態(tài)變化的規(guī)范。
從用戶可見的角度來看,未來 Fuchsia 操作系統內運行的程序,其中的按鈕,對話框,圖片框等等界面組件,基本就應該跟上面圖片中差不多——當然未來也可能會改變——而那些科幻電影中炫酷亮眼的3D特效、隔空指點、虛擬(增強)現實畫面,暫時還不能從演示程序中看到。
嗯,目前來看 Fuchsia 上的 App 的界面,大概就是這個感覺。
Fuchsia 項目的知名參與者包括 Travis Geiselbrecht 和 Brian Swetland。
早在久遠的上個世紀九十時代中期,當時的蘋果公司因自家的操作系統無法及時推出,正尋找替代品。當時有兩個理想的候選產品分別是 Be 公司的多媒體操作系統BeOS,以及被蘋果公司掃地出門的喬布斯開辦的 NeXT 公司的產品 NeXTSTEP。后來由于 Be 公司要價太高等原因,蘋果公司收購了NeXT公司重新獲得喬布斯繼而研發(fā)出后來大放異彩的 OSX,而 Be 公司則由于經營不善在2001年黯然被Palm公司收購。
能被蘋果公司列為收購目標的 BeOS 實力自然不弱,而上面這兩位小哥,就曾在 Be 公司做操作系統開發(fā)。由于 BeOS 在當時來說設計非常先進,公司關門后很多工程師和愛好者覺得可惜,所以繼承BeOS的設計重新實現了一個開源系統名字叫 Haiku,Haiku 使用的內核叫做 NewOS。自然地 —— NewOS 的發(fā)起人和主力開發(fā)就是這倆哥們。
可能倆人對極度精簡的產品比較偏愛,又或者是覺得 NewOS 內核的設計還太過厚重,總之,2008 年倆人又針對嵌入式設備設計了一個極其輕巧的內核 littlekernel(簡稱:lk)。
一晃快20年過去,隨著所供職公司的關停并轉,他們又分別在Danger、Palm、Android、Apple、Google等巨頭公司工作過。Brian Swetland 最近的一份工作是在谷歌任高級軟件工程師,負責管理 Linux 內核開發(fā)相關事務。幾天前,他在 github 上公布了 Fuchsia,用到的內核叫做 Magenta,正是基于他們的 lk 內核項目擴展功能而來。
可以看出來,項目負責人絕對是經驗豐富的老司機了。
內核:Magenta,有可以在特定設備運行的早期版本,框架設計、核心功能、相關工具鏈較完善。如果需要支持新的(外圍)設備,還有大量驅動需要移植。
UI層:Flutter,組件庫已經基本完善,寫一些簡單程序沒有障礙,暫時還無法在 Fuchsia 運行。官方自稱屬于早期階段的版本,實際也是。另外目前沒有OpenGL ES 方面 3D相關的支持,官方承諾未來會公開自己的優(yōu)化版 3D編程接口。(所以可能也是暫時沒有炫酷亮閃未來界面的原因)
渲染引擎:Escher,資料較少不了解,不過應該在渲染速度和效果上有非常突出的優(yōu)勢。
主力編程語言:Dart,面向對象的跨平臺語言,相關的庫已經比較完善且是 Flutter 的開發(fā)語言。以后為 Fuchsia 開發(fā)App主要使用 Dart語言。
如果需要了解現在這個項目各個部件所處階段以及項目上資源投入的情況,也許下面的圖能有個簡單說明。圖中列出了最近一年以內,幾個項目源代碼每周被提交的數據(代表活躍情況)。左邊縱坐標是被提交的次數,每個項目的橫坐標是最近一年周期。
圖:項目活躍度圖
圖中標明了重要項目名字以及目前項目的貢獻人數。
可以看到參與人數多代碼提交比較活躍的,是內核 Magenta 和圖形界面層 Flutter 兩個項目。Flutter 項目比較特殊,它其實很早就啟動了,一直致力于為 Android/iOS 移動設備提供編碼統一的開發(fā)環(huán)境。除了 Flutter 之外,其他所有項目大概都是最近兩個月內被啟動的。其中目前最活躍的是操作系統內核部分,22 名貢獻者中可以看到不少 Google, Chromium 官方成員在提交代碼。內核開發(fā)極度需要技術和經驗,也不是勞動力密集型工種,幾名核心工程師已經足夠,由此可見目前谷歌對內核項目的干勁還是比較足的,只是其他配套項目關注的人數就稍微少了點。
圖上已經很明顯了,總的來說就是 Fuchsia 操作系統現在還在很早期的的階段,構架已經設計好,正一步步完善內容。
從搭建的框架可以看出,其特點基本上是其所選取組件的優(yōu)點的組合,比較有代表性的是:
適合嵌入式設備和高性能設備:magenta內核的基礎lk就是一個嵌入式系統的內核,它的代碼非常的簡潔,適合移植到不同的設備上。可以想象到的目標設備是:物聯網、移動手持設備、可穿戴設備等。
低延遲、高效率:在 Magenta、Escher、Flutter 的項目介紹中都可以看到“實時”、"高效”、“低延遲”這幾個關鍵字,那么可以預見 Fuchsia 的目標也是實現一個實時性非常高的操作系統。低延遲有什么用呢,想象一下VR眼鏡上看虛擬現實的時候,畫面沒有延遲的驚艷爽快感。所以低延遲對這個操作系統一個非常重要的考慮指標,也是核心優(yōu)點之一。順便提一下,我們普通人用到的 Windows,Linux,Android 都不是實時操作系統。OSX, iOS的延遲都比較低,但是一般也沒有把他們劃為實時操作系統。
高級編程語言:Dart 的目標是設計一個隨處部署、接口穩(wěn)定、基礎庫完善的開發(fā)語言。用在 Fuchsia 可以看出來要擺脫掉 Java 語言的意圖比較明顯,另外它也是一種需要VM的語言。不過Flutter 的官方資料顯示:經過對比測試,Dart 的在執(zhí)行性能、開發(fā)效率、面向對象、快速內存分配(回收)上的得分都非常高,因此才會被 Flutter 選為開發(fā)語言。
統一的UI體驗:由于采用了 Matrial Design 設計語言,所以在 Fuchsia 上運行的程序理論上具有統一的UI體驗。
沒有歷史包袱:完全從頭設計的系統,不會有為了兼容考慮的歷史包袱——比如 Java 虛擬機的慢速,又比如 Android 較慢的渲染速度。因此也可以把體積做的很小,塞到存儲容量很小的設備中。
網上提到 Fuchsia 取代 Android、Chrome OS,又或者 Fuchsia 跨平臺融合,筆者覺得可能性不是很大。且不說 Fuchsia 連是否會做出來最終發(fā)布都不確定,假設這個操作系統真的發(fā)布了,想代替 Androd 和 Chrome OS,或者融合現有市場上的應用形態(tài),都會非常難。
在一個存量市場上,任何一個全新的產品想替代舊的產品,必須要考慮兩個最大的阻礙:1、用戶習慣;2、生態(tài)環(huán)境。
Android 系統海量的用戶養(yǎng)成的使用習慣要想被 Fuchsia 替代,除非 Fuchsia 在兼容 Android 上做得非常好,否則用戶很難會使用一個不熟悉的新系統替換本來用著好好的老系統。另外Android 的上下游生態(tài)環(huán)境從開發(fā)語言、相關資料資源、從業(yè)人員數量、軟件開發(fā)商、設備廠商,到最終作出的軟硬件產品,這個生態(tài)圈內的資源數量都是巨大的。生態(tài)圈會自動將相關資源繼續(xù)留在原有陣營,很難被攻破。
關于生態(tài)圈最好的例子就是想與 Android/iOS 競爭的 Windows Phone——它已經從我們生活中消失了。
既然在存量市場上難以成功,全新開發(fā)的 Fuchsia 的目標一定是新興市場 —— 一種 Android 和 Chrome OS 等現有操作系統無法適應,而且應用形態(tài)又不一樣的——未來市場。
網上的猜測都說得比較清楚了,這個市場可能是:物聯網、虛擬現實、增強現實、可穿戴等。這些領域還沒有成為標準的壟斷者,現有的 Android,Chrome OS 等操作系統又不太適合這些領域的應用形態(tài)。而未來這幾個領域增長的想象空間巨大,值得投入。
回頭看 Fuchsia 的特點:嵌入式、低延遲、高性能、一致性,正是為了這些產品領域而設計。
所以,操作系統會融合么?Fuchsia會取代其他么?我認為非常長一段時間內都不會。
注1:本文內容從 Haiku 中文社區(qū)負責人 kurain 處獲得諸多有價值的史料信息。kurain 是 Haiku 官方國際化項目中的 Chinese Language Manager,幾乎獨自中文化翻譯了所有的 Haiku 官方文檔和開發(fā)手冊。同時 kurain 也是一名軟硬件極客,他的 github 帳號是 haiku-cn。在此對 kurain 表示感謝。
注2:本文行文倉促,相關文檔資料未能深入閱讀理解,如有錯誤敬請指正!非常感謝!
雷鋒網注:轉載請聯系我們授權,并保留出處和作者,不得刪減內容。
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。