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