android为什么可以用apache license而不是GPL?

网友解答: 想必题主的意思是android内核是基于Linux的,为什么没有被Linux的GPL协议传染。最近正在关注开源许可证的问题,在网上搜了一些资料,把自己认为靠谱的答案总结一下。

网友解答:

想必题主的意思是android内核是基于Linux的,为什么没有被Linux的GPL协议传染。最近正在关注开源许可证的问题,在网上搜了一些资料,把自己认为靠谱的答案总结一下。

先来看一段维基百科上的话:

“Android是执行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNU GPL授权证所约束的部分”

我们知道在自由软件基金会的说明里,如果移植于Linux系统的软件没有调用Linux上GPL库,那就不会受GPL的传染,而Linux内核里大多数的库都是在LGPL协议下发布的,所以大部分在Linux系统上的软件都不必遵守GPL协议。按照维基百科上这段解释,Android采取的策略就是不使用Linux内核中GPL库,而改用自己新加的库。这里面最重要的应该是bionic这个库,它替代了原来Glibc的作用并在其基础上新暴露了很多接口(尽管Glibc其实是发布在LGPL协议下的)。通过这种方式,只有内核需要遵守GPL,而Android的其他层通过bionic(BSD协议)等与内核通信,则避免了他们受到GPL的传染。

通过规避对GPL库的调用来规避整个系统受到GPL传染是Android的主要策略,但其实关于这个方式还是有争议的,最关键的在于Bionic这类库是否真的能做到隔离GPL,事实是有人指出Bionic向外暴露了一些只有内核才能调用的接口,本身已经受到GPL污染了,起不到隔离的作用。但现在事实是Android的这种模式在商业上取得了巨大的成功,可能大家已经默许了Android的这种“耍赖”行为了吧。

关于这个问题,在我的文章中有更详细的讨论,欢迎关注。

标签: