android 為什麼可以用 apache license 而不是 GPL?

記得 Linux 是基於 GPL 的,android 用的是 Linux core,為什麼 android 可以用 apache license 而不是 GPL?

我記得用了 GPL 的 source code 必須要用 GPL license 啊?

是我哪裡的理解有問題么?


跨進程通訊的話,兩個進程即便一個是GPL,一個不是GPL,也是沒關係的。跟不用說內核和用戶態之間。否則的話,豈不是所有linux上的軟體都必須GPL。


嘗試回答一下。

Android大部分是屬於apache license的,但是kernel部分仍然屬於GPLv2。Linus Torvalds也在內核的COPYING文件里寫了does not cover user programs that use kernel services by normal system calls……

其次是由於Android在user space和kernel之間設置了一個中間層(Interface是這麼翻譯的嗎…),上層部分透過interface與內核交互,也就是說,kernel被隔離了。

最近有點忙,等有時間了把剩下的一些細節補上。

考試考得把這個坑給忘了……回來一看發現其他幾位大佬講得要比我清楚,我就不獻醜了……


為了保護廠商利益

GPL 是很好,但是要知道一款硬體從設計到最終產品,要耗費大量的人力,還有錢(而且其中不乏大量的專利和技術機密),辛辛苦苦這麼長時間搞出來的東西就開源,我覺得沒有廠商願意

舉個顯卡驅動的例子,NVIDIA 和 AMD 在 Linux 上面只提供了閉源驅動,為什麼?

留給你們自己想


大部分安卓程序是運行在Linux內核上作為用戶層程序來運行的,這些程序不會被內核感染,只有修改了內核才需要遵守GPL。

安卓把很多內核層的工作轉移到了用戶層,一定程度繞過了GPL。

要明白一點,開源是面向誰的?不是所有人,你如果沒有買安卓手機?憑什麼向你開源這個手機上安卓系統的源代碼?見:

http://zhihu.com/question/22339109/answer/24034337


只有使用了GPL源代碼的時候才會被污染。Android軟體只是運行在Linux Kernel之上,進程間通信。並不需要GPL。但是因為Linux的限制,手機廠商的驅動必須在內核中。那麼就會被污染。為了繞開這個限制,Google修改了內核,將很多內核的功能移到用戶層,使用Apache開源了這個中間層,這樣就繞開了GPL。同時重寫一些必須的C Library讓廠商使用


推薦閱讀:

開源軟體能被盜版么?
一個項目開源到底有哪些考慮?
基於「互聯網精神」的開源字型會對授權字型形成衝擊么?
說說大家知道的好玩有趣的開源程序?
如何看待微軟宣布.NET徹底開源和跨平台?

TAG:Linux | 開源 | GPL | Android | Apachelicense |