阿里雲,Android,傻傻分不清楚
在 Google 封殺 Acer 推出“阿里雲”手機之後,雙方各就此發表了兩輪聲明。這些聲明也使得事件爆發之初的一些判斷和表態看上去十分可笑,諸如“ Google 封殺是給阿里雲加冕”、“阿里雲因為採用與 Google 相似的web app戰略規劃所以被後者忌憚”等等,有些已經在雙方的聲明中被直接否定,也有些能明顯看出來作者不瞭解流動操作系統的體系架構以及GPL、ASL等開源協議的規定,所以對一些明顯的問題視而不見。
從 Android 之父安迪‧魯賓的兩次聲明中,我們可以看到, Google 封殺阿里雲,其實出於兩大目的:防止 Android 陣營的硬件基石開放手機聯盟(OHA)分裂;譴責阿里雲對 Android 應用APP的盜版。而阿里雲如果要回應這些指責,光發聲明是不夠的,還需要遵循開源協議,公開雲OS部分代碼。
盜版問題比較簡單,我們可以先把這個問題說清楚。安迪‧魯賓的第二份聲明中說,“你們(阿里雲)的應用商店中還包括了 Android 的應用,包括盜版的。”認真的老外很快找到了証據:科技博客Androidpolice發表了一篇調查文章《確認阿里雲應用市場發佈盜版 Android 應用,很多來自別的盜版站點》。他們發現在阿里雲的應用市場中,有神廟逃亡(Temple Run)等熱門遊戲的盜版拷貝下載,其署名提供方並非遊戲自己的開發商,而是中國國內某個 Android 應用市場,而後者提供了大量其他盜版APP下載;有一些原本是收費的遊戲也在阿里雲的市場中提供免費下載;最有趣的是,一款針對 Android ROM的工具軟件ROM ToolBox Pro也出現在阿里雲市場中──阿里巴巴方面一直堅稱阿里雲OS並未基於 Android ,那在自己的市場中放一款針對 Android ROM的工具有什麼意義呢?
AndroidPolice採訪了一些應用開發者,他們明確表示自己並未將應用APP上傳到阿里雲市場。一款收費遊戲(在阿里雲市場中被標為免費)的開發者表示,“這是我們第一次聽說阿里雲。我們不知道我們的應用被上傳到了那兒”。ROM ToolBox Pro的開發者語氣則比較激烈:“像阿里雲這樣的軟件破解網站只會傷害消費者和開發者”。
在盜版習慣仍然深入人心的中國,免費、開放的 Android 平台以及其上的免費應用給很多人一個錯覺,既然免費,就可以隨便用,所以發佈一些免費應用APP有什麼不對呢?但這的確是不對的,免費不等於作者放棄了所有權益,他們只是放棄了按份出售應用的做法,但署名權和其他權益比如市場推廣、運營等權益仍然屬於作者本人,上傳到哪個市場、適用於哪些手機的決定權同樣在原作者(這也有保証應用正常運行的考慮)。像上述阿里雲市場中更改應用作者署名、使用非授權版本等行為,已經侵犯了軟件作者的權益。至於把收費軟件改成免費應用放在市場里的行為,就更不用多說了。
也有些人說 Google 為什麼不去抓中國數量眾多的盜版market,非要跟阿里雲過不去?這裡面有個精力問題,也有個商業策略問題。盜版永無止息,但一旦有商業公司來運作,其破壞力就大得多(因為很容易變現出利益),反過來說侵權主體也好認定。所以反盜版歷來是重拳打擊商業、政府機構的盜版行為,對個人消費者和一些小組織則基本無視。
好。本來挺簡單的盜版認定問題也說了這麼一堆。下面進入稍微複雜一些問題討論,即阿里雲OS是否分裂了 Android 陣營。
這個說法成立的前提是,阿里雲OS要是 Android 的一分子,這樣才談得上內部分裂。這也是目前為止阿里反對最激烈的一點。無論是阿里雲CEO王堅,還是官方聲明,阿里都否定了“阿里雲OS屬於 Android 陣營”的說法。其中王堅說,阿里雲OS是“獨立的操作系統”;阿里巴巴副總裁約翰‧斯佩里奇說“阿里雲OS並不是 Android 生態系統的一部分”;阿里第二份官方聲明中也說,“阿里雲OS使用了自行研發的虛擬機,這與 Android 的Dalvik虛擬機不同。阿里雲OS的運行環境,也就是OS的核心部分,即有不同於Dalvik的阿里雲自己的JAVA虛擬機,也有阿里雲自行研發的雲應用引擎(cloud app engine),用於支援html5 web應用。阿里雲OS用了一些(開源的) Android 應用的框架和工具僅僅是作為補丁,讓使用雲應用的用戶可以在我們的生態系統中使用其他第三方應用。”
現在雙方都表明立場了, Google 說阿里雲基於 Android 的代碼,阿里說我們的核心是自己開發的(但操作系統的核心是“運行環境”這個奇怪的說法是頭一次聽說),只用了 Android 一些應用框架和工具做補丁,然後還要特意強調,這些部分是開源的。雙方各執一詞,按業內的做法,那就對比兩邊的源代碼好了。 Android 的大部分源代碼是公開的,阿里雲OS的代碼沒有看到公開,似乎他們也沒說要公開──但是且慢,按照開源協議,阿里雲OS必須公開一部分代碼。
從這場爭論開始到現在,輿論被有意無意地引導到阿里雲的遠景規劃與 Google 衝突、必須要有自主操作系統以免受制於人這些奇怪的宏大敘事角度去,卻沒看到有基於開源協議來分析阿里雲義務的聲音。
眾所周知, Android 是一個開源、開放的操作系統,但這二者並不能等同。同時,開源也並不意味著,任何人或者公司都可以拿著公開源代碼回去自己編譯出一個應用來,然後打上自主產權的標籤就可以去報獎立項了。開源代碼有著嚴格的流轉規範體系,使用開源代碼必須基於這些規範,來保護開發者的版權。我們以 Android 系統為例,來分析一下這些不同的開源標準,以及阿里雲應該遵守哪些標準公開代碼。
Android 系統基於Linux操作系統發展而來(阿里雲也自稱基於Linux而非 Android 系統)。Linux是一個開源系統,它採用了GPL開源協議,這是我們這裏提到的第一種開源協議。GPL協議規定,遵循該協議的代碼都是開源、免費的;一旦軟件作品中使用了遵循GPL協議的開源代碼,該軟件也必須開源、免費。業內通常管這種特性傳遞叫“傳染性”,只要使用了一行GPL開源代碼,整個軟件都被“傳染”為遵循GPL協議。注意,真正的GPL協議要比這裏的描述複雜、嚴謹不少,為了行文簡潔,本文僅僅選取了與這一問題相關的部分內容進行表述。
GPL使軟件開發者獲得了極大的自由,可以免費閱讀、使用全世界最優秀的程式代碼。但它的強傳染性也削弱了它的商業前景。一些手機製造商如果針對自己的硬件開發一份Linux驅動,它必然要調用一些Linux基本函數、類庫,該驅動因此會被GPL傳染,要公開所有源代碼。但這可能暴露廠商的硬件細節,造成洩密。同樣,一些商業公司也會認為,將自己的獨有技術拿出來支援Linux,會因為GPL的免費開源特性,造成創新成果流失(微軟的鮑爾默就曾經說GPL讓Linux染上了癌症)。
為了規避這一問題, Google 除了在操作系統核心使用了Linux代碼之外,在其他專門為 Android 開發的相當一部分代碼中,使用了傳染性不那麼強的開源協議:基於Apache的ASL或者基於BSD的BSD協議。這兩種協議的共同點在於對商業應用十分友好,遵循這兩種協議的開源代碼,商業公司可以拿過去用,而開發出的產品不一定需要也開源,可以視情況打包為閉源商業軟件。在 Android 系統中,大部分硬件驅動程式,以及 Google 專門為流動設備開發的基本函數庫Bionic,都慷慨地採用了BSD或ASL開源協議,其中包括Dalvik虛擬機等 Android 運行庫(runtime)。(整個 Android 操作系統各部分所遵循的版權協議見圖)
這裏要多說兩句, Google 為什麼要允許別人閉源使用自己的開源代碼呢,它有啥好處?必須要說明,開源協議的選擇體現了軟件的價值觀,也體現了開發者的商業考量。如果 Google 讓整個 Android 系統採用GPL協議,看上去所有開發者的進一步開發都會被開源出來,系統創新的速度可能更快;但這樣有個更大的副作用,就是很多商業公司就不願意介入 Android 開發了──一介入就被“傳染”了要開放自己的源代碼了。
為了團結其他商業公司,讓更多的手機廠商原意採用 Android 、更多的軟件廠商原意為 Android 開發豐富多彩的應用APP, Google 選擇了在Linux核心之外,另行獨立開發出 Android 的運行環境與函數庫,並將這部分以更為自由的BSD和ASL協議發佈。這樣,開發者基於 Android 開發的應用,願意貢獻給社區,就開源;希望保守自己的商業秘密,就閉源。這個策略目前來看相當成功, Android 手機、應用APP這一硬一軟兩個方面,在這幾年突飛猛進地發展,選擇了合適的開源協議功不可沒(關於 Google 選擇開源協議的分析,阮一峰翻譯了一篇文章,可以用來作為背景學習)。
通過 Android 的體系設計,我們大概對幾種不同的開源協議有了初步認識。現在就來分析阿里雲OS。阿里雲OS的體系結構如圖所示。可以看到,阿里雲OS同樣基於Linux核心。這就涉及第一個版權問題:這部分代碼按照GPL規定已經被“傳染”,必須開源。目前為止,在公開報導中,我們還沒有找到阿里雲OS“部分開源”的消息。
在這部分代碼開源之後,業內人就可以對阿里雲和 Android 做一個更透徹的比較,看看到底是前者直接使用了後者的代碼,還是真的如阿里自己所說,是獨立在Linux基礎上開發出來的新操作系統。因為 Google Android 中的Linux核心,與一般的Linux核心還有不同。為了適應流動設備內存小、CPU頻率低、對耗電量高度敏感的特點, Google 將這部分Linux核心做了修改,並依據GPL將修改開源。從這篇文章可以看到, Google 對Linux核心做了至少兩處重大改動:進程間通訊(IPC)模塊Binder,和至關重要的電量管理模塊。阿里雲OS既然也是流動操作系統,必然需要對本來為桌面系統開發的Linux做出相似的處理。這個處理方式,是沿用了 Google 的方式,還是真正的自主開發呢?代碼公佈後,自然見分曉。
雙方爭議的另一個核心,是阿里雲OS如何實現了對 Android 應用的兼容。 Android 系統的開發語言是java,為了精簡java程式使之適用於流動設備, Google 使用了Dalvik虛擬機。注意Dalvik不是java虛擬機,它是將java程式重新打包為一種更為精簡的形式運行。阿里雲在第二份聲明中說自己用了“不同於Dalvik的java虛擬機”,那不但二者的代碼不同,連工作原理也會有不同了。
包括Dalvik在內的 Android 運行庫,採用的是ASL和BSD協議,也就意味著阿里雲就算直接用了這部分代碼,也可以選擇不公開源代碼。但這不等於用了白用:ASL和BSD都規定,使用了遵循該協議的開源代碼,必須以顯要方式標明原開發者的版權歸屬;這種標明方式,通常形式有源代碼中保留原作者的權利聲明和其他原作者規定的說明。阿里雲既然已經披露了自己使用 Android 代碼的情況,這部分代碼中是否保留了 Google 的版權聲明,只需要查看相應程式的說明文件即可。
總算把開源協議這部分介紹得差不多了。花費這麼多筆墨的目的在於說明,這次 Google 與阿里雲之爭,不應該像以前業界的一些爭論演變為口水戰,而應該像另外一些爭論一樣,可以讓更多人瞭解操作系統、開源協議等相關知識,消除許多誤區(這兩類爭論我就不具體點名舉例了),避免被人當技術小白糊弄。要達到這個目的很簡單,阿里雲OS公開指定部分的源代碼,供業內行家與 Google 代碼進行比對即可。這不是強人所難,因為既然依照GPL、ASL、BSD等規範享用了一大批免費開源源代碼,那也應該遵循人家規定的義務。
當然,在中國這個用盜版軟件都異常有理的國家,各類開源協議都是防君子不防小人的,程式源代碼都是純文本文件,你不遵循協議,它也不會鬧脾氣不運行,或者在螢幕上打出一行字來罵你。但無論是阿里,還是另外號稱要做自主操作系統的華為、百度、聯想,都是國際級大公司,應該不會耍這種初級流氓。
也有一些有技術背景的朋友可能會奇怪, Google 的 Android 系統已經提供了相當寬鬆的條件,核心全部開源消除了安全隱患,龐大的社區和資金支援保証了系統快速進化,在這種情況下,為什麼這些公司還要一股勁地開發自己的操作系統呢?把精力用在做好跟公司業務有關的平台、APP上不是更好嗎。這個問題很難回答,我也沒有確定的答案。有些微博網友說是因為如果打出自主操作系統的牌子,阿里雲OS就可以獲得國家“核高基”( 核心電子器件、高端通用芯片及基礎軟件產品)資金資助。我查了一下,阿里雲在某些展會上的確出現在核高基成果展區,也有微博上的實名用戶說,阿里雲獲得了863計劃的8000萬元資金,他當時是評委。但這些資金項目與阿里雲捨棄 Android 走自主之路之間還暫時找不到官方表述和公開表達,所以建議網友們在找到新的証據之前,不要過於肯定地認定這一點。
最後,來說一下這次爭議對用戶的影響。可以肯定,這對 Android 開發者和用戶來說,是個大利好消息,因為 Google 表現出瞭解決 Android 分裂現狀的行動與關注度,而分裂問題一直是 Android 系統最大的憂患。資深流動互聯網專家郝培強(@tinyfool)兩年前就在新京報上發表過文章, Android 系統的標準化程度與iOS存在巨大差距,廠商各自推出的不同解像度、不同操作方式的手機讓開發者和用戶都深受其苦,各類 Android 版本之間的兼容、繼承也問題多多。 Google 應對這一問題的方式是組建開放手機聯盟,並在 Android 4.0後逐步在系統層面進行統一、限制明顯的分裂行為。
Acer 是開放手機聯盟成員,有權優先獲得最新的 Android 系統代碼和接口服務,如果它再去支援一款從底層到應用都與 Android 兼容的阿里雲OS,從 Google 的角度來看,擔憂洩密、分裂也的確有其道理。
在市場層面上,阿里雲不到五百萬台的出貨量遠遠說不上威脅 Google ,更不至於像王堅說的那樣“讓 Google 害怕”。但 Android 之父兩天內兩次發表聲明來回應這一問題,至少讓開發者、廠商和用戶看到了 Google 對於防止分裂、反對盜版的重視程度。從這個角度說,這次獲利最大的,將是廣大 Android 用戶、開發者和正統OS廠商。
我們也開了Google plus page,如有Google plus account的你,也可follow 我們吧!
https://plus.google.com/104792312952728477864