Android开源语言总结之谈


  本文标签: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呢,至少能在软件商店里多卖一点钱,而且乔布斯看上去也更酷一点  。

Android界面

  

  我私底下已经说过,我愿意帮助完成这项工作,在这里我再次公开这样说  。但是如果没有Google程序员的加入,什么也不会发生  。”Android必须变成一个真正的开源系统  。如果像现在这样封闭下去,就会被开源社区抛弃,就一定不会成功,即使有Google的支持  。

  我接受他的批评,我确实有点感情用事  。主要是因为对Google有太大的期望,所以不能接受它现在的这种做法  。这一次,也许不能说Google做错了什么,毕竟都符合GPL许可证的要求  。但是代价也是巨大的——它放弃了创造未来的机会  。

  我坚信,未来主流的手机操作系统一定是开源的,就像我坚信未来Linux一定胜过Windows一样  。现在,既然Google放弃了这个选择,那么只能等待其他人来做出开源的手机系统了  。这也意味着,我们还要在黑暗中等待更久  。