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