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