操作係統的靈魂是什麼?
阿裏雲OS與穀歌Android之爭、中興明確即將推出自主操作係統,讓操作係統頓時成一熱詞。
飛漫軟件CEO魏永明自稱“碼農出身”,開發過類似Android的操作係統。這兩天,他特意寫文一篇,向大量非技術出身讀者科普何謂“操作係統”、操作係統之必要性與難度。深入淺出,通俗易懂。
虎嗅摘出其中技術性沒有那麼強的段落,供大家參考。
引言
近一個月是個多事之秋(2012年9月),IT 和互聯網領域也不平靜。阿裏雲操作係統受到穀歌的打壓,華為任正非提出要開發自己的操作係統,中興也宣布今年第四季度將發布自己的操作係統。一時間,微博上有關自主知識產權操作係統的討論如火如荼。這樣的討論,就如同“水木清華”某些板麵上的“月經貼”一樣,每隔一段時間就要火一次。但大部分討論其實討論不到點子上,就如同“瞎子摸象”一般,大家基本上隻是站在自己的立場,基於自己的經驗在判斷孰是孰非。這樣的討論效率低下,本人認為有必要寫一篇科普性的文章,從政治、技術、工程、法律等幾個方麵給“自主”操作係統來一個比較清晰的定義,並嚐試給出一些技術、工程等方麵的建議。
“自主”操作係統的不必要性
在談“自主”操作係統的必要性之前,筆者先談談“自主”操作係統的不必要性。
在開源軟件大行其道的今天,操作係統不再那麼神秘,任何有足夠財力的企業,依賴現有的開源軟件,都可以比較容易地推出一個能夠運行的操作係統。出於此觀點,很多人認為有 Android 這樣的開源操作係統,就沒有必要再開發一個自己的操作係統了,到底誰擁有開源操作係統的知識產權,是無所謂的事情。
這個說法是有一定道理的。
從法律(指開源軟件許可證)和技術上講,就算 Google 不打算開源新的 Android 版本,不允許某些廠商使用 Android,我們一樣可以在已經開源的 Android 之上繼續發展自己的 Android 係統隻要遵循已經開源的 Android 的許可證約束即可,而 Android 係統主要使用的開源軟件許可證有 GPL(Linux 內核)、LGPL(各種運行時函數庫)、Apache(Dalvik 虛擬機及 Java 類庫),其實是非常寬鬆的。
這個說法的不足之處在於,未考慮到可能的專利(軟件相關的專利通常和實現無關,就是說,你重寫一段代碼,並不表示你可以規避對應的專利),以及是否有能力自行發展 Android 的問題。
前者非常要害。穀歌在開發 Android,尤其是 Dalvik 虛擬機以及 Java 類庫的過程中,肯定積累了大量專利,而這些專利是淩駕於軟件的著作權和許可證之上的。也就是說,如果你基於現有的 Android 派生了一個分支,要想將運行有這個 Android 派生版本的軟件放到自己的手機裏邊銷售,穀歌馬上可以拿出專利大棒來限製你。當前,穀歌尚未拿出專利大棒來限製各種派生於 Android 的係統。拿阿裏雲 OS 和穀歌最近的爭論當中來看,穀歌也隻是說阿裏雲 OS 導致 Android 不兼容。但一旦有廠商真的使用了阿裏雲 OS,穀歌馬上就會拿出專利大棒,這將毫無疑問。
至於有沒有能力來自行發展 Android 的問題,在中國有大量碼農基數的基礎上,隻要有源代碼,就可以在短時間內組織團隊自行發展Android。
“自主”操作係統的必要性
強調需要“自主”操作係統的主要有兩類人:政府中的政策製定者以及大型企業的決策者。
對政策製定者來講,麵向未來由中美兩國主導的國際環境,作為兩極世界中的中國,有沒有自主的芯片、有沒有自主的操作係統,關係到兩個層麵的東西,一個是國家安全,一個是麵子。在這樣的認識下,“核高基”的出現自然而然,其目的是支持國內企業發展核心電子器件、高端通用芯片及基礎軟件產品。我們暫且不談核高基項目在實施過程中存在的製度性問題,它表明的國家是在戰略上的一種布局,是一種國家意誌,涉及到政治領域。
作為企業決策者,沒有自主的操作係統,他將在很多方麵受製於人。就拿阿裏雲和穀歌的爭議事件來看,宏碁受到了來自穀歌的壓力,然後就乖乖投降了。這裏邊有兩個值得思考的地方:(1) 既然 Android 這麼好,為什麼宏碁還要和阿裏 OS 合作?後者肯定沒有 Android 成熟啊。(2) 為什麼穀歌一施壓,宏碁就放棄了和阿裏 OS 的合作呢?(虎嗅注:宏碁目前稱還沒有放棄)顯然,宏碁有動機選擇另一個 OS 給自己的智能手機,可能的原因無外乎兩種:阿裏給錢了或者宏碁不希望被穀歌控製;另外,宏碁又那麼容易地被穀歌搞定,說明穀歌能帶給宏碁的利益遠遠大於阿裏。
另外聯想到微軟向 Android 廠商收取專利許可費的事情,像宏碁這樣的廠商,肯定也會被微軟勒索,也包括中興、華為等國際化的 Android 手機廠商,無一例外。對企業決策者來講,這很難受給別人做嫁衣啊,有時候還兩頭受氣!所以,小的廠商需要投靠大樹來庇護自己(大多數乖乖就範於穀歌或微軟),大的廠商就要考慮是不是開發一個“自主”的操作係統來抗衡了。
這樣的思路下,華為、中興等大的智能手機廠商,開發“自主”操作係統的動機非常強。
像阿裏這樣的公司,開發OS,其目的是要複製 Google 的商業模式,加上阿裏 OS 又沒有撇清和 Android 的關係,受到 Google 的打壓就在情理之中了。
“自主”操作係統應該具備的特征
那麼,“自主”操作係統應該張什麼樣?要回答這個問題,我們先看看假的“自主”操作係統張什麼樣。所謂假的“自主”操作係統,就是那些號稱“自主”操作係統,但其實:
隻是在已有的開源操作係統之上加了一層皮。比如各種基於 Android 的第三方 ROM,比如 MIUI、Flemy 等。這種操作係統僅僅在 UI/UE 上做了一些工作,就如同一個人換了一身衣服那樣,實質上這個人不會因為換了一身衣服而從張三改叫成李四。
修改了已有開源操作係統的內部代碼,做了一些優化或者去掉了別人的一些東西,添加了一些自己的內容。比如阿裏 OS 就屬於這種,或者哪些號稱深度定製的 Android 係統也屬此類。這種做法如同整容,的確動了些刀子,甚至改變了性別,但人還是那人,改了名字或性別也還是那人。
這麼類比下來,讀者應該就知道了,真的“自主”操作係統,必須要有自己的靈魂,隻有這樣,不管換什麼衣服、是不是經過了整容,那人還是那人;通俗一點講,隻有換了腦袋的才能是一個全新的個體。
阿裏雲OS與穀歌Android之爭、中興明確即將推出自主操作係統,讓操作係統頓時成一熱詞。
無法形成有效知識產權的軟件組件,或者說,滿世界有很多(開源的)實現的軟件組件。比如內核、基礎函數庫、網絡協議、圖形庫、瀏覽器引擎等等。這些東西可以看成是形成一個智能動物(比如“人”)的骨架或者軀體、甚至心髒,但遠遠算不上腦袋或者靈魂。這也是為什麼筆者主張在“自主”操作係統中要盡量使用現有的成熟開源軟件、而且不建議再行發明此類輪子的原因。
要知道哪些東西是靈魂,我們分析下 Google 在和阿裏 OS 爭論的過程中主要維護的是什麼東西:
Google 的說法:阿裏 OS 采用了 Android 的虛擬機和 Framework,但又不兼容 Android,破壞了 Android 的生態係統。這個說法可能還不是 Google 打壓阿裏 OS 的最關鍵原因,但起碼說出了他們的擔憂:阿裏 OS 是想借 Android 打造自己的一個生態係統!另外,Google 對那些隻換衣服的 Android 係統采取聽之任之的態度,和他們一貫以來標榜的“隻要兼容,我們歡迎”的態度一致也就是說,這些係統沒有從根本上動搖 Google 的生態係統。
所以,真正的“自主”操作係統的靈魂,就是那個背後的、無形的生態係統,一個看似開放但其實封閉的生態係統。一旦加入這個生態係統,你就很難下來正所謂“上了賊船下不來”。
這就是我的回答:
一個真正“自主”的操作係統,必須建立自己的生態係統,一個開放的,但在某種程度上又封閉的生態係統。
操作係統生態係統?這名詞大家說了很多年了,一個生態係統具體應該是什麼樣子?筆者從如下幾個方麵解釋一下:
技術層麵。操作係統必須通過某種技術將自己和其他的操作係統區隔開來。比如 Android 采用 Java 語言,但使用了不同於 Sun(現在是 Oracle) JDK 的 API;iOS 采用了 Object C 語言,為應用程序提供的接口和框架甚至有別於蘋果自己的 Mac OS X;Windows Phone 采用了 C# 語言,在 .Net 框架下進行開發。為什麼這些操作係統不使用 C/C++ 這類語言呢,C/C++ 尤其是 C 可是這些操作係統內核的編程語言啊!?這裏有如下幾個原因:
1、操作係統開發者不希望普通的應用程序通過使用比較低級的編程語言來控製係統或設備,畢竟操作係統是給智能手機、平板電腦這種消費類的電子設備使用的。
2、通過采用更加高級的語言來簡化編程和開發人員的學習難度。
3、通過對看起來非常複雜的框架的持續演進,達到牽著開發者和廠商鼻子走的效果。
4、便於形成依附於某個操作係統的獨有的開發者社區和文化。
法律層麵。操作係統必須通過創建自己的有效知識產權體係來保護自己。前麵已經說過,越底層的軟件組件越沒有市場價值(碼農們可能不喜歡聽這話,但現實就是這樣的)。通過建立全新的、包裹在底層操作係統之上的框架、編程接口、編程語言等基礎設施,操作係統開發商才有可能建立起有別於他人的有效的知識產權保護體係。也就是說,如果連框架、編程語言、編程接口等都抄襲他人(就算是開源的、許可證允許的),那永遠也無法形成一個可以有效保護自己的知識產權體係。
市場層麵。通過和上下遊企業的合作,建立某種聯盟或者許可、授權機製,讓操作係統的用戶(芯片廠商、手機廠商、平板廠商)能夠從中獲益。比如 Android 開放聯盟,做的就是這個事情。
開發者社區。一個好的操作係統之生態係統,要充分照顧開發者的利益,具體有如下幾點:
1、要有好的開發工具,便於開發者學習、開發和調試軟件。
2、要有好的文檔或者教程,幫助開發者迅速掌握相關開發技巧。
3、最重要的,要能夠讓開發者賺到錢。
看到這裏,相信大家都會意識到:這也太難了吧!的確,這非常難,這也是為什麼 Moblin、MeeGo、Bada、WebOS 等操作係統相繼失敗,而到目前,隻有 iOS、Android、Windows Phone 這三種操作係統的原因。
最後更新:2017-04-02 15:15:13