Android,开源还是封闭

上传人:洪易 文档编号:40267390 上传时间:2018-05-25 格式:DOC 页数:7 大小:85.50KB
返回 下载 相关 举报
Android,开源还是封闭_第1页
第1页 / 共7页
Android,开源还是封闭_第2页
第2页 / 共7页
Android,开源还是封闭_第3页
第3页 / 共7页
Android,开源还是封闭_第4页
第4页 / 共7页
Android,开源还是封闭_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Android,开源还是封闭》由会员分享,可在线阅读,更多相关《Android,开源还是封闭(7页珍藏版)》请在金锄头文库上搜索。

1、阮一峰阮一峰:Android,开源还是封闭?,开源还是封闭?LonelyJames 发布于 2010-02-05 11:36:31| 10217 次阅读 字体:大 小 打印预览感谢感谢 fish 的投递的投递Google 玩了一个花招,在在 kernel 和应用程序之间,自己做了一个中间层和应用程序之间,自己做了一个中间层,这样就既不违反 GPL 许可,又能不让 外界看到厂商的硬件驱动和应用程序的源码。它修改了 Kernel,但是又不提供修改的细节,自己搞了一个封闭的系统。说得难听一点,它利用了开源社它利用了开源社区,要求开源社区为它做贡献,却又不愿提供回报区,要求开源社区为它做贡献,却又不愿

2、提供回报。所以,Linux Kernel 就把 Android 踢出去了,真是再正常不过了。这样做或许有利于推广 Android,吸引厂商和软件开发商的加入,但是 Google 也放弃了构建一个真正开源的手机系统的机会,从而也就不能获得由全世界程序员提供智慧、分享代码、推动创新的好处。满大街都在谈论 Android。它是当红炸子鸡。许多人觉得,iPhone 将受到它的强力挑战。我也曾经对它充满了期待,但是后来的事态发展,令我改变了看法。前几天,我就在网志上写了自己的担忧:“首先,Android 应用程序只能用 java 语言开发。其次,Google 对 Android 采用了一种全面霸权式的管

3、理,完全不是其他开源软件的开发方式,一切都由 Google 说了算,很多地方是黑箱, 外界不得而知。”没有想到,仅仅过了两天,担忧就变成了现实。Linux Kernel 的维护者 Greg Kroah-Hartman 宣布,将 Android 代码从 Linux kernel 代码库中删除。这意味着,Linux Kernel 的开发小组不认可 Android 的贡献,两者产生了冲突。消息公布以后,外界普遍觉得惊讶和可惜。好不容易,才有了一个这么受欢迎的开源手机系统,应该齐心协力、共同开发才对,为什么要“窝里斗”呢?到底是什么矛盾,使得 Linux Kernel 小组剔除 Android 代码呢

4、?Greg Kroah-Hartman 写了一篇详细的文章,解释这个决定。下面就来看看,他是怎么说的,以及 Android 到底是一个什么样的系统。在这之前,你最好知道 Greg Kroah-Hartman 是谁。他是目前 Linux Kernel 的核心开发人员,负责 stable 软件包的发布。就是说,每一个新版本的 Linux Kernel,都是经过他的手流出来的。此外,他还负责硬件驱动的部署。而他的手机就是 HTC G1,每天都在使用。所以,他是绝对有资格谈论这个问题的,他的看法代表了 Linux 社区对 Android的看法。首先,他指出 Android 和其他的 Linux 发行版

5、不一样:“Google has taken the Linux kernel, and nothing else from a “traditional“ Linux system.Google 只用了 kernel,别的东西都没用。”这就是说,与 Ubuntu、Debian、Redhat 这样的传统 Linux 发行版相比,只有系统的底只有系统的底层结构是一样的层结构是一样的,其他东西在 Android 里都不一样,尤其是程序员的编程接口是完全不同的。因此,Android 应用程序都必须重新写过,现存的 Linux 程序无法移植上去。所以,从严格意义上说,Android 是一种全新的系统,它

6、与它与 Linux 的距离,比的距离,比 Mac OS 与与 Linux 的距离还要远的距离还要远。然后,Greg Kroah-Hartman 肯定了 Android 这样做的积极意义:“Android also solves the problem that the phone manufacturers had been having for many years: a free version of Java and a unified application layer that programmers can write to that will work on all phone

7、platforms that integrate it.它解决了长期令手机制造商头痛不已的问题:业界缺乏一个开源的 Java 虚拟机,以及统一的应用程序接口。现在,程序员只要写一次程序,就能在各种 手 机硬件平台之上使用。”这段话解释了,为什么 Android 的应用程序,都必须用 Java 语言开发。因为不这样做的话,没法让程序做到硬件无关。且慢,这真的是理由吗?传统的 Linux 系统,也并不依赖特定的硬件啊!只要把源代码根据不同的平台,分别编译一下,同一个程序不也照样可以在不 同 的硬件架构、不同的 Linux 发行版中使用吗?那么,Android 只采用 kernel、只允许用 jav

8、a 编程的真正原因,到底是什么?台湾的科技网志 MMDays 一语道破真相:“Linux kernel 的版权是 GPL。这下问题来了:如果你是硬件厂商,希望你的硬件能在 Linux kernel 下运作,那么就必须要有驱动程序。如果驱动程序的程序代码公开,等于硬件规格也公开的差不多了如果驱动程序的程序代码公开,等于硬件规格也公开的差不多了。许多厂商不愿意这么做,所以就提供编好的驱动程序,但不提供原始码。Android 的重点就是商业应用,Google 采用了一些手法来绕过这问题。他们把驱动程序移到 “userspace“,也就是说,把驱动程序变成在 Linux kernel 上头跑,而不是一

9、起跑的东西,这样就可以避过 GPL。然后,在 kernel 这边开个小门,让本来不能直接控制到硬件的 “userspace“ 程序也可以碰得到,这样只要把“开个小门“的程序代码公布就行啦。”看明白了吗?这段话的意思是说,Google 玩了一个花招,在在 kernel 和应用程序之间,自己做了一个和应用程序之间,自己做了一个中间层中间层,这样就既不违反 GPL 许可,又能不让外界看到厂商的硬件驱动和应用程序的源码。里面的关键在于,Kernel 和 Android 的许可证不一样,前者是 GPL 许可证许可证,后者是 Apache Software License(简称(简称 ASL)许可证)许可

10、证。GPL 许可证规定,对源码的任何修改都必须开源,所以 Android 开源了,因为它修改了 Kernel。而 ASL 许可证规定,可以随意使用源码,不必开源,所以建筑在建筑在 Android 之上的硬件驱动和应用程序,都可以保持封之上的硬件驱动和应用程序,都可以保持封闭闭。为了得到更多厂商的支持,Google 有意选择了这样做,并且特意修改 Kernel,使得原本应该包括在 kernel 中的某些功能,都被转移到了 userspace 之中,因此得以避开开源。这样做或许有利于推广 Android,吸引厂商和软件开发商的加入,但是 Google 也放弃了构建一个真正开源的手机系统的机会,从而

11、也就不能获得由全世界程序员提供智慧、分享代码、推动创新的好处。关于许可证问题的深入讨论,请阅读 Ryan Paul 的文章Why Google chose the Apache Software License over GPLv2 for Android。Google 的这种做法,直接后果就是给直接后果就是给 Linux Kernel 带来了麻烦带来了麻烦。Greg Kroah-Hartman 清楚地说出了自己的不满。“.any drivers written for Android hardware platforms, can not get merged into the main k

12、ernel tree because they have dependencies on code that only lives in Googles kernel tree, causing it to fail to build in the kernel.org tree.所有为所有为 Android 写的硬件驱动,都不能合并入写的硬件驱动,都不能合并入 kernel。因为它们只在 Google 的代码里有效,在 kernel 里根本没法用。Because of this, Google has now prevented a large chunk of hardware drive

13、rs and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on.由于这个原因,Google 也从不把大量的硬件驱动程序和平台源码向 kernel 提交。实际上,它创造出了一个它创造出了一个 kernel 的分支,大量的开发者都依赖那个分支。的分支,大量的开发者都依赖那个分支。”这就是 Android 干的事情:它修改了 Kernel,

14、但是又不提供修改的细节,自己搞了一个封闭的系统。说得难听一点,它利用了开源社区,要求开源社区为它做贡献,却又不愿提它利用了开源社区,要求开源社区为它做贡献,却又不愿提供回报供回报。所以,Linux Kernel 就把 Android 踢出去了,真是再正常不过了。人们有权利质疑,Android 这样的哲学是否正确?是否符合 Google“不作恶”的口号?如果 Android 继续这样封闭下去,那么开源社区为什么要为它免费制作软件呢?因为我又不那么开源社区为什么要为它免费制作软件呢?因为我又不是在为开源社区服务,而是在为是在为开源社区服务,而是在为 Google 服务。服务。既然这样的话,那还不如

15、去支持 iPhone呢,至少能在软件商店里多卖一点钱,而且乔布斯看上去也更酷一点。slashdot 上有很多关于此事的讨论。有人指出:“Google 自己的网站,与微软的网站一样封闭。它开源出来的东西,都是根据 GPL 许可证不得不开源的。”好吧,姑且不谈 Google 本身,因为它至少不要求外界提供支持。但是 Android 不一样,你不能假装成开源系统,骗取社区的支持,然后又干着 封 闭系统的勾当。Google 必须做出选择。正如 Greg Kroah-Hartman 最后的呼吁:“I really dont know. Google shows no sign of working to

16、 get their code upstream anymore.我真的不知道未来。Google 看上去没有任何改变代码的迹象。I do hold out hope that Google does come around and works to fix their codebase to get it merged upstream to stop the huge blockage that they have now caused in a large number of embedded Linux hardware companies.我确实希望 Google 做出改变,把它的代码合并进我们的代码,弥补已经出现的代码分裂。Ive privately offered in the past to help this work get done, and am doing again here publicly. But I need the help of the Google developers to make it happen, without the

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号