“自主”操作系統(tǒng)——為什么及如何
1 引言
近一個月是個多事之秋(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)貼”一樣,每隔一段時間就要火一次。但大部分討論其實(shí)討論 不到點(diǎn)子上,就如同“瞎子摸象”一般,大家基本上只是站在自己的立場,基于自己的經(jīng)驗(yàn)在判斷孰是孰非。這樣的討論效率低下,本人認(rèn)為有必要寫一篇科普性的 文章,從政治、技術(shù)、工程、法律等幾個方面給“自主”操作系統(tǒng)來一個比較清晰的定義,并嘗試給出一些技術(shù)、工程等方面的建議。
1.1 作者的資格
為了說明本人有足夠的資格來寫這篇文章,給大家介紹一下本人的經(jīng)歷。本人碼農(nóng)出身,1993到1998年期間主要在微軟平臺上做程序開發(fā),曾編寫過 DOS、Win32、MFC 程序,期間涉及 C/C++ 語言,SQL 數(shù)據(jù)庫、網(wǎng)站后臺等。從 1998 年底開始專注于 Linux 和嵌入式系統(tǒng)。主要作品為大名鼎鼎的 MiniGUI。在創(chuàng)辦飛漫軟件的近十年時間里,作為企業(yè)創(chuàng)始人和研發(fā)負(fù)責(zé)人,組織研發(fā)團(tuán)隊持續(xù)開發(fā) MiniGUI,開發(fā)了多個版本的嵌入式瀏覽器產(chǎn)品,也曾和美國公司合作,開發(fā)過類似 Android 這樣的移動操作系統(tǒng),還將 Android 運(yùn)行在了 MeeGO 上(也就是國際上有點(diǎn)名氣的 ACL,飛漫是主要開發(fā)者)。除了極其豐富的軟件開發(fā)、管理經(jīng)驗(yàn)之外,本人還編寫過幾本操作系統(tǒng)相關(guān)的書籍,不過比較老了,比較出名的是本人主持翻譯的 《Linux 設(shè)備驅(qū)動程序》第二版、第三版。有這些經(jīng)歷和相關(guān)經(jīng)驗(yàn)做基礎(chǔ),我相信本文所述將是比較客觀和完備的。希望本文對政策制定者、大型企業(yè)的決策者、自主操作系 統(tǒng)的開發(fā)管理者,以及一般的碼農(nóng)們或多或少有一些幫助。
1.2 限制和定義
操作系統(tǒng)的類型很多,粗粗算起來,從小到大,有針對嵌入式系統(tǒng)的實(shí)時操作系統(tǒng),比如 VxWorks、Nucleus 等;有現(xiàn)在大家熟知的針對移動終端的 Android、iOS、Windows Phone 等;有 Windows、Ubuntu Linux 等針對 PC 的操作系統(tǒng);還有針對服務(wù)器的操作系統(tǒng),比如 Windows NT 等。
從技術(shù)上講,操作系統(tǒng)的概念可大可小。小的話,一個內(nèi)核就可以稱為一個操作系統(tǒng),比如 Linux 內(nèi)核、BSD 內(nèi)核、Minix 內(nèi)核等;大的話,則通常指的是整個軟件平臺,比如 Android、iOS、Windows Phone,有時還會將軟件商店、開發(fā)社區(qū)等包含在內(nèi),從而外延到整個生態(tài)系統(tǒng)。
本文所指“操作系統(tǒng)”,以及大家近期討論的操作系統(tǒng),其實(shí)基本上被限制在移動終端領(lǐng)域當(dāng)中,就是指能夠和 Android、iOS、Windows Phone 等相提并論的操作系統(tǒng),主要用于智能手機(jī)、平板電腦,而不是實(shí)時操作系統(tǒng)、操作系統(tǒng)內(nèi)核或者服務(wù)器操作系統(tǒng)——準(zhǔn)確講,應(yīng)該是指一個針對智能手機(jī)和/或平 板電腦的軟件平臺以及對應(yīng)的生態(tài)系統(tǒng)。不過,我們當(dāng)前還是把它稱為“操作系統(tǒng)(OS)”吧。#p#
2 到底要不要“自主”操作系統(tǒng)
對此問題,不同的人有不同看法,但其實(shí)都很偏頗。碼農(nóng),尤其是喜歡 Google 的碼農(nóng),通常會說,Android 是完全開源的,沒有必要重復(fù)造輪子;企業(yè)決策者或者政策制定者,則往往會認(rèn)為必須有自主的操作系統(tǒng)。其實(shí)兩者都有道理,但兩者都沒有看到事物的本質(zhì)。
2.1 “自主”操作系統(tǒng)的不必要性
在談“自主”操作系統(tǒng)的必要性之前,筆者先談?wù)?ldquo;自主”操作系統(tǒng)的不必要性。
在開源軟件大行其道的今天,操作系統(tǒng)不再那么神秘,任何有足夠財力的企業(yè),依賴現(xiàn)有的開源軟件,都可以比較容易地推出一個能夠運(yùn)行的操作系統(tǒng)。出于 此觀點(diǎn),很多人認(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(各種運(yùn)行時函數(shù)庫)、Apache(Dalvik 虛擬機(jī)及 Java 類庫),其實(shí)是非常寬松的。
這個說法的不足之處在于,未考慮到可能的專利(軟件相關(guān)的專利通常和實(shí)現(xiàn)無關(guān),就是說,你重寫一段代碼,并不表示你可以規(guī)避對應(yīng)的專利),以及是否有能力自行發(fā)展 Android 的問題。
前者非常要害。谷歌在開發(fā) Android,尤其是 Dalvik 虛擬機(jī)以及 Java 類庫的過程中,肯定積累了大量專利,而這些專利是凌駕于軟件的著作權(quán)和許可證之上的。也就是說,如果你基于現(xiàn)有的 Android 派生了一個分支,要想將運(yùn)行有這個 Android 派生版本的軟件放到自己的手機(jī)里邊銷售,谷歌馬上可以拿出專利大棒來限制你。當(dāng)前,谷歌尚未拿出專利大棒來限制各種派生于 Android 的系統(tǒng)。拿阿里云 OS 和谷歌最近的爭論當(dāng)中來看,谷歌也只是說阿里云 OS 導(dǎo)致 Android 不兼容。但一旦有廠商真的使用了阿里云 OS,谷歌馬上就會拿出專利大棒,這將毫無疑問。
至于有沒有能力來自行發(fā)展 Android 的問題,在中國有大量碼農(nóng)基數(shù)的基礎(chǔ)上,只要有源代碼,就可以在短時間內(nèi)組織團(tuán)隊自行發(fā)展 Android。
2.2 “自主”操作系統(tǒng)的必要性
強(qiá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)品。我們暫且不 談核高基項目在實(shí)施過程中存在的制度性問題,它表明的國家是在戰(zhàn)略上的一種布局,是一種國家意志,涉及到政治領(lǐng)域。
作為企業(yè)決策者,沒有自主的操作系統(tǒng),他將在很多方面受制于人。就拿阿里云和谷歌的爭議事件來看,宏碁受到了來自谷歌的壓力,然后就乖乖投降了。這 里邊有兩個值得思考的地方:(1) 既然 Android 這么好,為什么宏碁還要和阿里 OS 合作?后者肯定沒有 Android 成熟啊。(2) 為什么谷歌一施壓,宏碁就放棄了和阿里 OS 的合作呢?顯然,宏碁有動機(jī)選擇另一個 OS 給自己的智能手機(jī),可能的原因無外乎兩種:阿里給錢了或者宏碁不希望被谷歌控制;另外,宏碁又那么容易地被谷歌搞定,說明谷歌能帶給宏碁的利益遠(yuǎn)遠(yuǎn)大于阿 里。
另外聯(lián)想到微軟向 Android 廠商收取專利許可費(fèi)的事情,像宏碁這樣的廠商,肯定也會被微軟勒索,也包括中興、華為等國際化的 Android 手機(jī)廠商,無一例外。對企業(yè)決策者來講,這很難受——給別人做嫁衣啊,有時候還兩頭受氣!所以,小的廠商需要投靠大樹來庇護(hù)自己(大多數(shù)乖乖就范于谷歌或 微軟),大的廠商就要考慮是不是開發(fā)一個“自主”的操作系統(tǒng)來抗衡了。
這樣的思路下,華為、中興等大的智能手機(jī)廠商,開發(fā)“自主”操作系統(tǒng)的動機(jī)非常強(qiáng)。
像阿里這樣的公司,開發(fā)OS,其目的是要復(fù)制 Google 的商業(yè)模式,加上阿里 OS 又沒有撇清和 Android 的關(guān)系,受到 Google 的打壓就在情理之中了。
2.3 “自主”應(yīng)強(qiáng)調(diào)在“有效知識產(chǎn)權(quán)保護(hù)下的自己主導(dǎo)”
根據(jù)上面的分析,看來我們還真的需要有“自主”的操作系統(tǒng)。但是,“自主”到底是自主什么呢?
在功能手機(jī)和實(shí)時嵌入式系統(tǒng)領(lǐng)域,我們不是沒有“自主”的操作系統(tǒng),比如 MTK 或者展訊的操作系統(tǒng),以及諸如早期的 Hopen、道系統(tǒng)等。在通用操作系統(tǒng)領(lǐng)域,國家也長期支持了諸如麒麟操作系統(tǒng)、紅旗 Linux、中標(biāo) Linux、新華 Linux 等多家本土操作系統(tǒng)廠商。但市場表明,國家支持的這些操作系統(tǒng)都將消亡或者正在消亡。
本人認(rèn)為,國家支持下進(jìn)行“自主”操作系統(tǒng)的開發(fā)有合理之處,畢竟開發(fā)操作系統(tǒng)是一件比較困難的事情。但是,這里邊有一個重要的誤區(qū)和制度設(shè)計上的錯誤,就是只強(qiáng)調(diào)了“自有知識產(chǎn)權(quán)”,而沒有強(qiáng)調(diào)“自己主導(dǎo)”。
在強(qiáng)調(diào)“自由知識產(chǎn)權(quán)”的情況下,政府對受資助企業(yè)的“自主”操作系統(tǒng)進(jìn)行考核時,大部分情況下考核的是企業(yè)有沒有獲得對應(yīng)的知識產(chǎn)權(quán),就是軟件的 著作權(quán)和/或?qū)?yīng)的專利,而并沒有考核能否主導(dǎo)一個產(chǎn)業(yè)鏈。就如同 Google 那樣可以控制這個產(chǎn)業(yè)鏈一樣,受資助的企業(yè),能不能做到讓別人用了你的操作系統(tǒng),就沒法不繼續(xù)用?在這樣的思路下,政府需要在更長的周期內(nèi),考核受資助企 業(yè)的市場份額是否有擴(kuò)大,是否建立了良好的生態(tài)系統(tǒng),讓使用者、開發(fā)者欲罷不能,而不是簡單的著作權(quán)證書和專利數(shù)量,或者是否達(dá)到了一個給定的出貨量(因 為出貨量是可以作假的)。
也就是說,我們應(yīng)該重新定義“自主”這兩個字,從“自有知識產(chǎn)權(quán)”向“有效知識產(chǎn)權(quán)保護(hù)下的自己主導(dǎo)”轉(zhuǎn)移。
為什么這里強(qiáng)調(diào)“有效知識產(chǎn)權(quán)”呢?這是因?yàn)?,在開源軟件成為趨勢的情況下,構(gòu)建一個自己的操作系統(tǒng),可以使用很多已有的開源軟件,我們沒有必要所 有代碼都自己編寫,而且越底層的代碼就越?jīng)]有必要自己重寫一遍。這如同一只桃子,好吃的是果肉,而不是果核。像內(nèi)核、基礎(chǔ)庫、常用運(yùn)行時函數(shù)庫等等,都不 必自己重新開發(fā)。而且這么做幾乎沒有任何潛在的法律問題,當(dāng)然,前提是你要告訴大家你用了哪些開源軟件,而且你也尊重了這些開源軟件的許可證。這樣下來, 一個操作系統(tǒng)的軟件著作權(quán)已經(jīng)不再重要,重要的是相關(guān)的專利、自己獨(dú)有的創(chuàng)新以及圍繞操作系統(tǒng)建立起來的生態(tài)系統(tǒng)。#p#
3 “自主”操作系統(tǒng)應(yīng)該具備的特征
那么,“自主”操作系統(tǒng)應(yīng)該張什么樣?要回答這個問題,我們先看看假的“自主”操作系統(tǒng)張什么樣。所謂假的“自主”操作系統(tǒng),就是那些號稱“自主”操作系統(tǒng),但其實(shí):
- 只是在已有的開源操作系統(tǒng)之上加了一層皮。比如各種基于 Android 的第三方 ROM,比如 MIUI、Flemy 等。這種操作系統(tǒng)僅僅在 UI/UE 上做了一些工作,就如同一個人換了一身衣服那樣,實(shí)質(zhì)上這個人不會因?yàn)閾Q了一身衣服而從張三改叫成李四。
- 修改了已有開源操作系統(tǒng)的內(nèi)部代碼,做了一些優(yōu)化或者去掉了別人的一些東西,添加了一些自己的內(nèi)容。比如阿里 OS 就屬于這種,或者哪些號稱深度定制的 Android 系統(tǒng)也屬此類。這種做法如同整容,的確動了些刀子,甚至改變了性別,但人還是那人,改了名字或性別也還是那人。
這么類比下來,讀者應(yīng)該就知道了,真的“自主”操作系統(tǒng),必須要有自己的靈魂,只有這樣,不管換什么衣服、是不是經(jīng)過了整容,那人還是那人;通俗一點(diǎn)講,只有換了腦袋的才能是一個全新的個體。
那么在操作系統(tǒng)當(dāng)中,什么東西是靈魂?這個問題回答起來蠻難的。我們先看看哪些東西肯定不屬于靈魂:
- 無法形成有效知識產(chǎn)權(quán)的軟件組件,或者說,滿世界有很多(開源的)實(shí)現(xiàn)的軟件組件。比如內(nèi)核、基礎(chǔ)函數(shù)庫、網(wǎng)絡(luò)協(xié)議、圖形庫、瀏覽器引擎等等。這 些東西可以看成是形成一個智能動物(比如“人”)的骨架或者軀體、甚至心臟,但遠(yuǎn)遠(yuǎn)算不上腦袋或者靈魂。這也是為什么筆者主張在“自主”操作系統(tǒng)中要盡量 使用現(xiàn)有的成熟開源軟件、而且不建議再行發(fā)明此類輪子的原因。
要知道哪些東西是靈魂,我們分析下 Google 在和阿里 OS 爭論的過程中主要維護(hù)的是什么東西:
- Google 的說法:阿里 OS 采用了 Android 的虛擬機(jī)和 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),一個看似開放但其實(shí)封閉的生態(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 框架下進(jìn)行開發(fā)。為什么這些操作系統(tǒng)不使用 C/C++ 這類語言呢,C/C++ 尤其是 C 可是這些操作系統(tǒng)內(nèi)核的編程語言?。??這里有如下幾個原因:
- 操作系統(tǒng)開發(fā)者不希望普通的應(yīng)用程序通過使用比較低級的編程語言來控制系統(tǒng)或設(shè)備,畢竟操作系統(tǒng)是給智能手機(jī)、平板電腦這種消費(fèi)類的電子設(shè)備使用的。
- 通過采用更加高級的語言來簡化編程和開發(fā)人員的學(xué)習(xí)難度。
- 通過對看起來非常復(fù)雜的框架的持續(xù)演進(jìn),達(dá)到牽著開發(fā)者和廠商鼻子走的效果。
- 便于形成依附于某個操作系統(tǒng)的獨(dú)有的開發(fā)者社區(qū)和文化。
- 法律層面。操作系統(tǒng)必須通過創(chuàng)建自己的有效知識產(chǎn)權(quán)體系來保護(hù)自己。前面已經(jīng)說過,越底層的軟件組件越?jīng)]有市場價值(碼農(nóng)們可能不喜歡聽這話,但 現(xiàn)實(shí)就是這樣的)。通過建立全新的、包裹在底層操作系統(tǒng)之上的框架、編程接口、編程語言等基礎(chǔ)設(shè)施,操作系統(tǒng)開發(fā)商才有可能建立起有別于他人的有效的知識 產(chǎn)權(quán)保護(hù)體系。也就是說,如果連框架、編程語言、編程接口等都抄襲他人(就算是開源的、許可證允許的),那永遠(yuǎn)也無法形成一個可以有效保護(hù)自己的知識產(chǎn)權(quán) 體系。
- 市場層面。通過和上下游企業(yè)的合作,建立某種聯(lián)盟或者許可、授權(quán)機(jī)制,讓操作系統(tǒng)的用戶(芯片廠商、手機(jī)廠商、平板廠商)能夠從中獲益。比如 Android 開放聯(lián)盟,做的就是這個事情。
- 開發(fā)者社區(qū)。一個好的操作系統(tǒng)之生態(tài)系統(tǒng),要充分照顧開發(fā)者的利益,具體有如下幾點(diǎn):
- 要有好的開發(fā)工具,便于開發(fā)者學(xué)習(xí)、開發(fā)和調(diào)試軟件。
- 要有好的文檔或者教程,幫助開發(fā)者迅速掌握相關(guān)開發(fā)技巧。
- 最重要的,要能夠讓開發(fā)者賺到錢。
看到這里,相信大家都會意識到:這也太難了吧!的確,這非常難,這也是為什么 Moblin、MeeGo、Bada、WebOS 等操作系統(tǒng)相繼失敗,而到目前,只有 iOS、Android、Windows Phone 這三種操作系統(tǒng)的原因。
但是,世上無難事只怕有心人。接下來我告訴你如何搭建一個真正的“自主”操作系統(tǒng)。#p#
4 如何開發(fā)“自主”操作系統(tǒng)
4.1 開發(fā)“自主”操作系統(tǒng)的兩種目的和策略
開發(fā)“自主”操作系統(tǒng)的主要目的有兩種:一種是想再造一個類似 Android、iOS 的操作系統(tǒng),并作為其競爭者;一種僅僅是為了在商務(wù)談判和合作中獲得一個比較好的籌碼。當(dāng)然,還有一種目的就是騙取政府的財政支持,對這類不良目的,不屬本文討論范圍。
我們先猜度一下國內(nèi)外這幾年出現(xiàn)的一些“自主”操作系統(tǒng),其目的是什么:
- 中國移動通過博思通訊開發(fā)的 OMS。本質(zhì)上 OMS 是 Android 的一個派生系統(tǒng)。很明顯,中國移動開發(fā) OMS 的目的屬于前一種。中國移動希望利用自己強(qiáng)大的市場地位來左右手機(jī)供應(yīng)商的 OS 選擇,并建立起類似蘋果那樣的全封閉的平臺和生態(tài)系統(tǒng)??上У氖?,OMS 并沒有取得預(yù)期效果,在來自聯(lián)通、電信的強(qiáng)大市場壓力下,中國移動不得不允許 TD 手機(jī)使用正統(tǒng)的 Android 系統(tǒng);OMS 也正在被市場淡忘。這里有個比較有意思的現(xiàn)象,Google 從來沒有公開質(zhì)疑過 OMS 系統(tǒng),阿里 OS 的做法和 OMS 類似,卻遭到了打壓。這里有兩個原因,一個是中國移動的市場地位擺在那里(加上還是巨型國企),Google 不敢輕舉妄動,另外一個是 OMS 采用的是 Android 早期版本,那時候 Android 的市場地位還沒有這么強(qiáng)。
- 中國聯(lián)通所謂的 UniPlus??上У氖?,UniPlus 似乎從來沒有面過世,也許中國聯(lián)通只是放了一個煙霧彈而已。要是真開發(fā),目的自然應(yīng)該和中國移動的 OMS 類似。
- Firefox OS。這是 Mozilla 公司推出的純粹基于 HTML5/CSS3/JavaScript 等網(wǎng)頁前端開發(fā)技術(shù)推出的操作系統(tǒng),和 HP 收購自 Palm 的 webOS 有類似的軟件架構(gòu)。HP 收購了 webOS 之后的半年,即宣告放棄 webOS,而 Mozilla 卻希望通過類似技術(shù)的 Firefox OS 成為 Android 的競爭者。一會兒我們分析下為什么 Firefox OS 要比 webOS 有更強(qiáng)一些的生命力。
- 華為提出要開發(fā)的“自主”操作系統(tǒng)。作為一個智者,任正非不可能不知道一個真正“自主”的操作系統(tǒng)應(yīng)該是什么樣子的。華為就算再有錢,再有人才, 短時間內(nèi)也是搞不定一個“自主”操作系統(tǒng)的(如前所述,主要是建立對應(yīng)的生態(tài)系統(tǒng)太難了)。這么說來,華為開發(fā)“自主”操作系統(tǒng),其目的其實(shí)就是做一個備 胎,以便在和 Android、Windows Phone 等合作時能夠有一個可以討價還價的砝碼。也就是說,華為并不是真的要做“自主”的操作系統(tǒng);或者這么說,支持團(tuán)隊去做,做成 Android 那樣最好,做不成 Android 那樣,如果真有一天打起架來可以湊合用也行。
- 阿里 OS。馬云同志的野心很大,他做阿里 OS,就是要復(fù)制 Google 在移動互聯(lián)網(wǎng)的商業(yè)模式,進(jìn)而在移動互聯(lián)網(wǎng)領(lǐng)域推廣阿里體系的服務(wù)和內(nèi)容??上У氖?,馬云貌似不太懂技術(shù),也沒個明白人給他做參謀,結(jié)果被人害了,花了錢 還被人捏住了七寸。最新的傳言,說阿里 OS 要換將,繼續(xù)再投個 2 億搞。馬云同志啊,光有錢是不行的,你身邊還得有個把技術(shù)大牛幫你把關(guān)、出謀劃策才行啊。
好,面對這兩種開發(fā)“自主”操作系統(tǒng)的目的,應(yīng)該有什么樣的策略呢?其實(shí)策略很簡單,不管你是真心還是假意,都應(yīng)該按照本文第 3 章給出的“自主”操作系統(tǒng)之特征進(jìn)行開發(fā),除此之外,別無他法。任何期望找捷徑的方法,都不可能獲得成功。這里所說的找捷徑的方法具體有:
- 給 Android 整容。如 OMS、阿里 OS。
- 忽略操作系統(tǒng)之生態(tài)系統(tǒng)的重要性,在 Linux 或其他開源操作系統(tǒng)內(nèi)核、系統(tǒng)庫等基礎(chǔ)上包裹一個簡單的框架而形成的操作系統(tǒng)。這種操作系統(tǒng),其復(fù)雜度和 Linux 發(fā)行版相當(dāng),離本人定義的真正“自主”操作系統(tǒng)還差十萬八千里。讀者可能會問,這樣的系統(tǒng)做備胎不是還行嗎?為什么也得按照真做那樣開發(fā)呢?你要知道的 是,對手也不是傻子,人家看你的架勢,就知道你不是真做——你起碼得拉出真做的架勢來,人家才能怕你??!
順便談?wù)勎覍跒g覽器技術(shù)的 web 操作系統(tǒng)之看法。
理論上講,瀏覽器可以做很多事情,甚至可以替代 PC 機(jī)上的通用操作系統(tǒng)。但是,最新的瀏覽器技術(shù)(HTML5/CSS3等),還存在一些技術(shù)上的問題。主要的問題有如下兩個:
- 瀏覽器主要采用的 JavaScript 編程語言,本質(zhì)上是一種難于管理(源代碼保護(hù)、無法進(jìn)行有效的軟件架構(gòu)設(shè)計、難于調(diào)試等等)的編程語言,同時內(nèi)存消耗巨大,性能不佳。最新的說法 是,F(xiàn)acebook 創(chuàng)始人直言全面采用 HTML5 的策略是個失誤,正在向操作系統(tǒng)的原生應(yīng)用轉(zhuǎn)移。也就是說,JavaScript 語言難以承載一個良性發(fā)展的生態(tài)系統(tǒng)。
- 因?yàn)樵S多原因(主要是利益和政治因素),HTML5 相關(guān)的標(biāo)準(zhǔn)有分裂的跡象,同時進(jìn)展緩慢。
HTML5 技術(shù)作為原生應(yīng)用的一種補(bǔ)充,可以起到很好的作用,但是,如果要想在瀏覽器技術(shù)上建立一個真正可以和 Android 等競爭的操作系統(tǒng),恐怕還需要很長的時間(技術(shù)上必須有突破)。要不然,Google 現(xiàn)在主推的應(yīng)該是 ChromeOS,而不是 Android。
現(xiàn)在回答剛才提到的問題:“為什么 FirefoxOS 可以比 webOS 的生命力更加長久些呢?”主要的原因是,F(xiàn)irefoxOS 是開源的,有比較強(qiáng)大的企業(yè)在主導(dǎo)其發(fā)展,作為一個脫胎于開源基金會的企業(yè)(Mozilla公司),也能獲得合作伙伴的一些好感;相反,因?yàn)?webOS 是封閉,HP 又沒有能力像蘋果那樣打造一個完全封閉的平臺和生態(tài)系統(tǒng),所以最終的命運(yùn)是被人拋棄了。雖然后來 webOS 也走上了開源的道路,但大勢已去,HP 不親自帶頭搞,光靠開源社區(qū)是搞不成的。
4.2 技術(shù)層面上的考慮
假定你是一名“自主”操作系統(tǒng)項目的技術(shù)管理者,你第一步要考慮的問題是什么?許多人的回答可能是:先選操作系統(tǒng)內(nèi)核、基礎(chǔ)庫什么的。其實(shí)錯了,第一步要考慮的應(yīng)該是你打算選擇什么編程語言作為原生應(yīng)用的編程語言。
世界上的編程語言有很多種,有些語言貼近機(jī)器,比如匯編語言、C語言,有些語言貼近人,比如 Basic、Java,還有些語言用于特定領(lǐng)域,比如網(wǎng)頁服務(wù)器端使用的 PHP,有些適合做不同軟件之間的粘合劑,比如 Perl、Python。本文第 3 章已經(jīng)解釋了編程語言以及圍繞編程語言形成的運(yùn)行環(huán)境、框架是將操作系統(tǒng)區(qū)隔于其他操作系統(tǒng)的主要技術(shù)特征。因此,我們必須慎重選擇一種編程語言。而且一 旦選定了一種編程語言,“自主”操作系統(tǒng)在開發(fā)者看來長什么樣,其實(shí)就基本上定了。
選擇編程語言要考慮如下因素:
- 這種編程語言是否易于學(xué)習(xí)和掌握?是否有龐大的開發(fā)者在使用它?
- 這種編程語言是否具有高級語言的基本特征,比如,支持面向?qū)ο缶幊蹋?/li>
- 這種編程語言是否是編譯執(zhí)行的?
- 這種編程語言是否利于保護(hù)開發(fā)者的知識產(chǎn)權(quán)?
- 這種編程語言是否有完整的工具鏈支持?
- 這種編程語言是否有集成開發(fā)環(huán)境的支持?
- 這種編程語言是否易于保護(hù)整個操作系統(tǒng)不會被惡意代碼輕易破壞?
- 如此等等。
其實(shí)很多讀者看到這里,都會想到 Java 語言。是的,Java 語言或其派生語言如 C# 是構(gòu)架“自主”操作系統(tǒng)的最佳編程語言。可惜,已經(jīng)被 Android 和 Windows Phone 給捷足先登了。
如此一來,你可以考慮重新設(shè)計一門類似 Java 的語言,也可以通過其他手段,讓你使用 Java 語言構(gòu)建的操作系統(tǒng)有別于其他操作系統(tǒng)。比如,構(gòu)建自己的虛擬機(jī),如 Android 使用的 Dalvik 那樣(Dalvik 和 Oracle 的 JDK 標(biāo)準(zhǔn)虛擬機(jī)有很大不同,從而讓 Oracle 還挺難告贏 Google 的);你也可以用 Dalvik,但讓類庫、運(yùn)行環(huán)境和 Android 不同(這樣做的法律風(fēng)險要大一些)。總之,你需要有自己的創(chuàng)新,全部抄襲是不行的。
確定了編程語言,接下來的工作其實(shí)就比較直接了,從上而下設(shè)計就是了。主要有:
- 定義和實(shí)現(xiàn)提供給原生應(yīng)用程序的基礎(chǔ) API 和/或虛擬機(jī)。
- 在應(yīng)用程序基礎(chǔ) API、標(biāo)準(zhǔn) C/C++ 函數(shù)庫和相關(guān)組件(通常都是開源軟件)的基礎(chǔ)上構(gòu)建操作系統(tǒng)的運(yùn)行環(huán)境和框架。主要涉及系統(tǒng)服務(wù)、模塊之間的通訊機(jī)制,包括圖形界面、瀏覽器引擎、OpenGL ES 支持接口等等。
- 同時選擇操作系統(tǒng)內(nèi)核,通常也就是 Linux,要與眾不同,用 BSD 也行。
- 搞定集成開發(fā)環(huán)境和模擬器,讓開發(fā)者可以在 PC 機(jī)上為你的操作系統(tǒng)開發(fā)應(yīng)用程序。
- 讓你的操作系統(tǒng)運(yùn)行在真實(shí)硬件上,為開發(fā)者提供應(yīng)用樣例和文檔。
- 持續(xù)迭代,讓你的“自主”操作系統(tǒng)不停往前發(fā)展。
上面的第一點(diǎn)和第二點(diǎn),是“自主”操作系統(tǒng)有別于其他操作系統(tǒng),且支撐你可以和其他人競爭的關(guān)鍵點(diǎn)。往下的東西都不是構(gòu)成“自主”操作系統(tǒng)真正競爭力的東西。
這么看來,其實(shí)也挺簡單的。不是嗎?貌似有錢、有個把技術(shù)上的明白人就能做到。技術(shù)上沒問題了,市場、法律等方面的事情,請專業(yè)人員幫忙,中國這類人才還是蠻多的,缺的,其實(shí)還是技術(shù)人員以及懂系統(tǒng)工程和軟件開發(fā)的管理人員。
4.3 快速搭建一個“自主”操作系統(tǒng)
這里給大家介紹筆者早先和美國一家公司合作,嘗試搭建的一個操作系統(tǒng),其實(shí)在當(dāng)年這些東西的基礎(chǔ)上,搭建出來一個有別于 Android 的開源“自主”操作系統(tǒng)還是非??斓摹?/p>
這個系統(tǒng)使用了 Linux 內(nèi)核和標(biāo)準(zhǔn)的 C/C++ 函數(shù)庫,以及一些和 Android 體系結(jié)構(gòu)類似的 C/C++ 運(yùn)行庫,使用了筆者公司的開源軟件 MiniGUI、WebKit 瀏覽器核心引擎等等。基礎(chǔ)的東西就這些。之上是開源的 Kaffe JVM(后來改成了 Cacao JVM),和符合 J2SE 規(guī)范的類庫實(shí)現(xiàn),再往上就是運(yùn)行環(huán)境和框架了。見下圖:
可惜的是,真正具有核心價值的運(yùn)行環(huán)境和框架,是美國合作方自己開發(fā)的,我手里沒有源代碼。相信讀者也能明白,美國合作方掌握的才是精華。
如果要在這套系統(tǒng)基礎(chǔ)之上快速開發(fā)一個“自主”的操作系統(tǒng),我們需要:
- 重新定義類庫,也就是基礎(chǔ) API,讓我們的系統(tǒng)從靈魂上有別于其他系統(tǒng)。必要的話,優(yōu)化或替代開源的虛擬機(jī)(淘寶最近開源了一個 JDK 虛擬機(jī),不過是針對 J2EE 的)。
- 全新設(shè)計和實(shí)現(xiàn)適合于智能手機(jī)的運(yùn)行環(huán)境、框架。
- 全新設(shè)計基本的智能手機(jī)應(yīng)用軟件。
- 開發(fā)模擬器,并集成到 Eclipse 集成開發(fā)環(huán)境中。
- 還有,這個系統(tǒng)是 2006 年開發(fā)的,我們還需要將底層的內(nèi)核、基礎(chǔ)函數(shù)庫等更新到比較新的版本。
要做的工作還是蠻多的,但這個系統(tǒng)在 2007 年的時候,就已經(jīng)可以運(yùn)行在主頻在200M Hz 左右的手機(jī)上了。
當(dāng)然,這個系統(tǒng)離本人定義的真正“自主”的操作系統(tǒng)還有很大的距離。但是,起碼技術(shù)上的方向是基本正確的,要知道,這個系統(tǒng)幾乎是和 Android 同時發(fā)起的。后來在 2007 年,Google 宣布開源 Android 后,美國合作方敏銳感覺到了 Android 將是未來的趨勢,就直接轉(zhuǎn)向了 Android 平臺,項目也就終止了。#p#
5 給相關(guān)人員的建議
5.1 給政策制定者
這里所說“政策制定者”主要指的是“核高基”等政府資助項目的決策人。其實(shí)前面已經(jīng)說過了,這里重申一下:
政府需要在更長的周期內(nèi)(至少五年),考核受資助企業(yè)的市場份額是否有擴(kuò)大,是否建立了良好的生態(tài)系統(tǒng),讓使用者、開發(fā)者欲罷不能,而不是簡單的著 作權(quán)證書和專利數(shù)量,或者是否達(dá)到了一個給定的出貨量(因?yàn)槌鲐浟渴强梢宰骷俚模?。也就是說,我們應(yīng)該重新定義“自主”這兩個字,從“自有知識產(chǎn)權(quán)”向 “有效知識產(chǎn)權(quán)保護(hù)下的自己主導(dǎo)”轉(zhuǎn)移;在知識產(chǎn)權(quán)方面,要強(qiáng)調(diào)有效專利數(shù)量,而不是著作權(quán);甚至應(yīng)該要求受資助企業(yè)按某種許可證條款開放源代碼。
政策制定者甚至可以參照本文 3 章給出的“自主”操作系統(tǒng)之定義,將整個“自主”操作系統(tǒng)的研發(fā)和推廣分為三個部分:
- 科研類,兩到三年為周期,以研究新的編程語言及其相關(guān)設(shè)施(如虛擬機(jī)及其優(yōu)化技術(shù))為主。
- 工程類,兩到三年為周期,圍繞指定的編程語言發(fā)展外圍工具鏈(編譯器、調(diào)試器)、開發(fā)工具、運(yùn)行環(huán)境、框架等。
- 法律類,半年到一年為周期,研究和分析采納已有編程語言面臨的知識產(chǎn)權(quán)風(fēng)險,如何規(guī)避等等。
政策制定者切忌急功近利,要按照客觀規(guī)律辦事,將科研類的課題交給研究機(jī)構(gòu),將工程類以及市場推廣等方面的課題交給企業(yè),將法律類的課題交給大專院校。只有這樣,才能首先讓方法正確,方法上正確,加上合理的考核制度,才能讓錢產(chǎn)生真正的效益。
在花錢方面,在一盤大棋下的統(tǒng)一部署下,初期讓多一些的企業(yè)或機(jī)構(gòu)參與,一年一驗(yàn)收,逐步淘汰那些不合格的,最后剩下來一、兩個企業(yè)就好。十億美金,外加企業(yè)自籌部分,我看基本夠了。
5.2 給大型企業(yè)決策者
有意開發(fā)“自主”操作系統(tǒng)的大型企業(yè)決策者首先要明白,開發(fā)“自主”操作系統(tǒng)是一個長期、艱巨的系統(tǒng)工程。甚至,你需要準(zhǔn)備一大筆錢來和已有的巨頭打官司(微軟賠付給 Sun幾十億美金之后,才讓自己的 C# 和 .Net 平臺成為“干凈”的語言和平臺)。
另外,如前所述,不管是真心還是假意,都要拿出十足的架勢來真做,而且,對內(nèi)、對外都要強(qiáng)調(diào)這點(diǎn)。要知道,你期望得100分,下屬大多數(shù)情況下只能給你 80 分;你期望得 1000 分,下屬也許就可以給你500分。這樣才能超出決策者自己的預(yù)期,才能收到更好的效果。
5.3 給“自主”操作系統(tǒng)的技術(shù)負(fù)責(zé)人
這事兒如果恰好讓你負(fù)責(zé),那簡直是,怎么說呢,是個“揚(yáng)名立萬”的機(jī)會??!你要知道的是,這事兒和制造“兩彈一星”差不多。
首先你要掂量掂量,你有沒有這個本事。所謂“沒有金剛鉆,不攬瓷器活”,說的就是這個道理。有興趣的也別來找我,我做點(diǎn)小項目可以,真要我負(fù)責(zé),我沒這個本事。
另外一方面,你要是違背知識分子的良知,幫助一些不良人員騙取國家的資助款項,就更不應(yīng)該了。這可是要被人戳脊梁骨的;有沒有錢拿永遠(yuǎn)是小事,昧了自己的良心可是大事。
5.4 工程上的建議
在具體的研發(fā)實(shí)施過程當(dāng)中,開發(fā)負(fù)責(zé)人必須特別注意工程方面的問題:
- 先做什么、后做什么,或者那些可以并行做。
- 不同的軟件模塊,應(yīng)采取不同的軟件開發(fā)管理模型。API 設(shè)計、框架等的開發(fā),適合采用瀑布法模型;應(yīng)用軟件或者小型模塊的開發(fā),適合采用敏捷開發(fā)模型。但整個系統(tǒng),應(yīng)要不停迭代,所以版本控制非常重要。
- 特別要注意代碼的質(zhì)量控制以及文檔的全面、完備、簡潔和邏輯性。
這方面,如果需要幫助,本人可盡微薄之力。