android為什么可以用apache license而不是GPL?
網(wǎng)友解答: 想必題主的意思是android內(nèi)核是基于Linux的,為什么沒有被Linux的GPL協(xié)議傳染。最近正在關(guān)注開源許可證的問題,在網(wǎng)上搜了一些資料,把自己認(rèn)為靠譜的答案總結(jié)一下。
想必題主的意思是android內(nèi)核是基于Linux的,為什么沒有被Linux的GPL協(xié)議傳染。最近正在關(guān)注開源許可證的問題,在網(wǎng)上搜了一些資料,把自己認(rèn)為靠譜的答案總結(jié)一下。
先來看一段維基百科上的話:
“Android是執(zhí)行于Linux kernel之上,但并不是GNU/Linux。因為在一般GNU/Linux里支持的功能,Android大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業(yè)應(yīng)用,必須移除被GNU GPL授權(quán)證所約束的部分”我們知道在自由軟件基金會的說明里,如果移植于Linux系統(tǒng)的軟件沒有調(diào)用Linux上GPL庫,那就不會受GPL的傳染,而Linux內(nèi)核里大多數(shù)的庫都是在LGPL協(xié)議下發(fā)布的,所以大部分在Linux系統(tǒng)上的軟件都不必遵守GPL協(xié)議。按照維基百科上這段解釋,Android采取的策略就是不使用Linux內(nèi)核中GPL庫,而改用自己新加的庫。這里面最重要的應(yīng)該是bionic這個庫,它替代了原來Glibc的作用并在其基礎(chǔ)上新暴露了很多接口(盡管Glibc其實是發(fā)布在LGPL協(xié)議下的)。通過這種方式,只有內(nèi)核需要遵守GPL,而Android的其他層通過bionic(BSD協(xié)議)等與內(nèi)核通信,則避免了他們受到GPL的傳染。
通過規(guī)避對GPL庫的調(diào)用來規(guī)避整個系統(tǒng)受到GPL傳染是Android的主要策略,但其實關(guān)于這個方式還是有爭議的,最關(guān)鍵的在于Bionic這類庫是否真的能做到隔離GPL,事實是有人指出Bionic向外暴露了一些只有內(nèi)核才能調(diào)用的接口,本身已經(jīng)受到GPL污染了,起不到隔離的作用。但現(xiàn)在事實是Android的這種模式在商業(yè)上取得了巨大的成功,可能大家已經(jīng)默許了Android的這種“耍賴”行為了吧。
關(guān)于這個問題,在我的文章中有更詳細的討論,歡迎關(guān)注。