Android開源語言總結之談
Android開源語言采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分:底層以Linux核心為基礎,由C語言開發,只提供基本功能,下文進行說明指導。
這段話的意思是說,Google玩了一個花招,在kernel和應用程序之間,自己做了一個中間層,這樣就既不違反GPL許可,又能不讓外界看到廠商的硬件驅動和應用程序的源碼。里面的關鍵在于,Kernel和Android的許可證不一樣,前者是GPL許可證,后者是Apache Software License(簡稱ASL)許可證。
GPL許可證規定,對源碼的任何修改都必須開源,所以Android開源語言了,因為它修改了Kernel。而ASL許可證規定,可以隨意使用源碼,不必開源。所以建筑在Android之上的硬件驅動和應用程序,都可以保持封閉。為了得到更多廠商的支持,Google有意選擇了這樣做。
并且特意修改Kernel,使得原本應該包括在kernel中的某些功能,都被轉移到了userspace之中,因此得以避開開源。這樣做或許有利于推廣Android,吸引廠商和軟件開發商的加入,但是Google也放棄了構建一個真正開源的手機系統的機會。
從而也就不能獲得由全世界程序員提供智慧、分享代碼、推動創新的好處。關于許可證問題的深入討論,請閱讀Ryan Paul的文章《Why Google chose the Apache Software License over GPLv2 for Android》。
Google的這種做法,直接后果就是給Linux Kernel帶來了麻煩。Greg Kroah-Hartman清楚地說出了自己的不滿。由于這個原因,Google也從不把大量的硬件驅動程序和平臺源碼向kernel提交。實際上,它創造出了一個kernel的分支,大量的開發者都依賴那個分支。”
這就是Android干的事情:它修改了Kernel,但是又不提供修改的細節,自己搞了一個封閉的系統。說得難聽一點,它利用了開源社區,要求開源社區為它做貢獻,卻又不愿提供回報。所以,Linux Kernel就把Android開源語言踢出去了,真是再正常不過了。人們有權利質疑,Android這樣的哲學是否正確?是否符合Google“不作惡”的口號?
如果Android開源語言繼續這樣封閉下去,那么開源社區為什么要為它免費制作軟件呢?因為我又不是在為開源社區服務。而是在為Google服務。既然這樣的話,那還不如去支持iPhone呢,至少能在軟件商店里多賣一點錢,而且喬布斯看上去也更酷一點。
我私底下已經說過,我愿意幫助完成這項工作,在這里我再次公開這樣說。但是如果沒有Google程序員的加入,什么也不會發生。”Android必須變成一個真正的開源系統。如果像現在這樣封閉下去,就會被開源社區拋棄,就一定不會成功,即使有Google的支持。
我接受他的批評,我確實有點感情用事。主要是因為對Google有太大的期望,所以不能接受它現在的這種做法。這一次,也許不能說Google做錯了什么,畢竟都符合GPL許可證的要求。但是代價也是巨大的——它放棄了創造未來的機會。
我堅信,未來主流的手機操作系統一定是開源的,就像我堅信未來Linux一定勝過Windows一樣。現在,既然Google放棄了這個選擇,那么只能等待其他人來做出開源的手機系統了。這也意味著,我們還要在黑暗中等待更久。
【編輯推薦】