分类

再谈Android的许可证(续)

作者: 阮一峰

日期: 2010年2月20日

前一篇网志时,我参考了Ryan Paul的文章。

他是资深Linux程序员和评论者。他对Android许可证的评论,是我见到的最准确、最通俗易懂的介绍。当时,我翻译了一些片段,打算在自己的文章中引用,但是后来没用上。我觉得不甘心,于是今天就把全文译出,贴在下面,希望让更多的朋友看到。

如果你对GPL、ASL、BSD这一类的许可证名字,只有一些模模糊糊的概念,搞不清楚它们之间的区别。那么,我强烈推荐你阅读此文,读完后,你就会对开源软件的许可证,有一个基本的认识了。

值得指出的是,此文写于2007年,当时Google刚刚宣布Android项目,代码还没有完成,工程样机更是没有,外界只能凭几句文字叙述,猜测这个系统的样子。但是,Ryan Paul就是有这个本领,只看许可证选择,就判断出Android的开发模式。事实证明,他的判断完全正确,除了一点:他没有料到,Google会修改Linux内核,故意造成两者不兼容。

bg2010022001.jpg

(图片说明:自由软件基金会的标志)

bg2010022002.gif

(图片说明:Apache基金会的标志)

bg2010022003.jpg

(图片说明:FreeBSD基金会的标志)

=================================

Why Google chose the Apache Software License over GPLv2 for Android

为什么Android不是GPL许可证?

作者:Ryan Paul

译者:阮一峰

发表日期:2007年11月6日

原文网址:http://arstechnica.com/old/content/2007/11/why-google-chose-the-apache-software-license-over-gplv2.ars


Google finally entered the mobile software market by turning the 2005 acquisition of Android into the Open Handset Alliance.

Google终于进入了手机市场。2005年,它收购了Android。在此基础上,现在,它组建了"开放手机联盟"(Open Handset Alliance)。

Google hopes to promote third-party mobile software development and foster a broad developer community on top of Android's Linux-based mobile platform.

Android是一种Linux内核的手机操作系统。Google希望,这会吸引来第三方软件开发者,建立起一个大规模的开发者社区。

In the wake of Google's announcement, one topic that has been discussed by some members of the open-source software community is the significance of Google's licensing choice.

但是,此事公布后不久,开源软件社区就议论纷纷,大家在讨论Google为Android选择的许可证。

Although the underlying Linux kernel is licensed under version 2 of the Free Software Foundation's General Public License (GPLv2), much of the user-space software infrastructure that will make up the Open Handset Alliance's platform will be distributed under version 2 of the Apache Software License (ASL).

Linux内核的许可证,是自由软件基金会的GPL许可证第二版。但是,"开放手机联盟"的主要代码,却是Apache许可证(ASL)第二版。

This raises certain questions about Google's goals in the mobile space and the nature of the third-party application ecosystem that will emerge around the platform.

这使得有人怀疑Google的动机。它的目标到底是什么?Android平台上,到底会有怎样的第三方软件?

ASL, which is widely used in the open-source software community and has been approved by the Open Source Initiative, is a permissive license that is conducive to commercial development and proprietary redistribution. Code that is distributed under the ASL and other permissive licenses can be integrated into closed-source proprietary products and redistributed under a broad variety of other terms.

ASL许可证被开源软件广泛使用,并且得到了"开放源码促进会"(Open Source Initiative)的认可。它是一种不设限的许可证(permissive license),允许软件的商业性开发和垄断式发布。以ASL发布的代码,可以被合并入闭源的专有软件(proprietary product),并且在各种各样的限制性条件下发布。

Unlike permissive open-source licenses, "copyleft" licenses (such as the GPL) generally impose restrictions on redistribution of code in order to ensure that modifications and derivatives are kept open and distributed under similar terms.

与ASL不同,GPL则是一种Copyleft许可证。它对代码的发布做出了限制,规定所有对源码的修改和衍生,都必须公开,并且以相似的许可证发布。

Permissive licenses like the ASL and BSD license are preferred by many companies because such licenses make it possible to use open-source software code without having to turn proprietary enhancements back over to the open source software community. These licenses encourage commercial adoption of open-source software because they make it possible for companies to profit from investing in enhancements made to existing open-source software solutions. That potential for proprietary investment on top of an open stack is most likely what inspired Google to adopt the Apache Software License for its mobile platform. Availability of Android under the ASL will ensure that a broader number of companies will be able to adopt the platform and build on top of it without having to expose the inner workings of proprietary technologies that give them a competitive advantage.

许多软件公司更愿意采用不设限的许可证(比如ASL和BSD),因为这使得它们既可以使用开源软件,又不用向开源社区公开对软件所做的修改。所以,ASL和BSD鼓励了开源软件的商业性使用,使得软件公司愿意对开源软件投资,因为这些公司可以从中获利。这种在开源基础上吸引商业投资的潜力,很可能是Google为自己的手机平台选择ASL许可证的最大原因。将Android置于ASL之下,可以确保许多商业性公司会接受这个平台,并且在它上面使用自己的专有技术。

Although using a permissive license like ASL is the best way to build support for the Android platform, critics argue that Google has sacrificed an opportunity to encourage greater openness in the broader mobile software space. If Android was distributed under the GPLv2, companies building on top of the platform would have to share their enhancements, which could theoretically lead to widespread sharing of code and a more rapid acceleration of mobile software development.

虽然ASL确实是保证Android获得支持的最好方法,但是批评者认为,Google这样做的代价,是丧失了创造一个更开放的手机软件平台的机会。如果Android的许可证是GPLv2,那么在它上面做开发的那些公司,将不得不公开对系统所做的改进,理论上就会导致代码被更广泛地分享,因而手机软件的开发也会更快速地进步。

The counterargument is that distributing Android under a copyleft license could potentially limit the evolution of the mobile software ecosystem by discouraging commercial development on top of the platform. Proprietary mobile software development companies that integrate Android into their technologies would have to dramatically change their business models if they aren't given the ability to keep their enhancements proprietary.

另一些人不同意这种看法。他们认为如果Android选择copyleft许可证,会使商业性公司不愿意介入开发,从而使系统本身的发展困难重重。如果那些公司没有办法保护自己的专有技术不公开,那么即使它们愿意采用Android平台,也必须急剧地改变经营模式,而这是有风险的。

It is important to note that the ASL is only being applied to the assortment of user-space platform components that make up Android. The kernel itself is still licensed under the GPLv2, and third-party software that runs on top of the platform can be distributed under pretty much any license, including commercial and copyleft licenses.

有一点是不能忽视的,那就是只有Android的userspace部分是ASL许可证。系统的内核依然是GPLv2许可证。而运行在系统上方的第三方软件,可以用任何许可证发布,包括商业性许可证和copyleft许可证。

It is also important to note that, although the ASL was not compatible with previous versions of the GPL, it is entirely compatible with the GPLv3. This means that code distributed under the ASL can be incorporated into GPLv3 software. As a result, developers can choose to distribute Android derivatives under the GPLv3 in order to ensure that further development on top of their own enhancements remains open.

还有一点也很重要,那就是虽然ASL与GPLv2不兼容,但是它与GPLv3完全兼容。这意味着,在ASL下发布的代码,可以被用于GPLv3许可证的软件。因此,程序员可以选择将Android程序在GPLv3下发布,这样就能保证他们作品的进一步开发,将始终是开源的。

Ultimately, the decision to use the ASL is sensible. Although it would be beneficial to all if Google were to use Android licensing to further open the market, that likely would have stifled adoption of the platform by handset makers.

最终来说,Google选择ASL是情有可原的。虽然Android如果在GPL许可下发布,会使所有人得利,但那样也会阻碍这个系统被手机厂商采用。

When it comes right down to it, the handset makers are the developers who are most significantly affected by the Android license, since they are the primary distributors of mobile phone platforms. The ASL will allow individual handset makers to develop proprietary customizations for the platform as needed to accommodate the unique technologies in their individual products.

如果单就手机厂商而言,他们才是受Android许可证影响最大的开发者,因为他们是手机平台主要的发布渠道。ASL允许手机厂商对平台进行改造,使得Android变得好像他们的独家产品一样。

Third-party software developers who are building applications on top of Android will largely be unaffected by Google's licensing decision since the individual applications can be distributed under their own licenses.

而第三方的软件开发者,总体上不受Google许可证选择的影响,因为他们可以为自己的软件选择任何的许可证。

Another point worth noting is that Linux-based mobile platforms created by other mobile technology coalitions like the LiMo Foundation also facilitate mixing proprietary and open software.

还有一个值得注意的地方是,其他Linux核心的手机平台,比如LiMo,也是闭源软件和开源软件的混合。

As more details emerge and more source code becomes available, it's likely that third-party developers and handset makers will eagerly flock to Android in order to benefit from the ecosystem that Google is creating.

随着更多的细节和更多的源码被公布,手机厂商和第三方开发者,很可能会热切地投入Android的怀抱,享受Google创造的这个平台。

(完)

留言(15条)

支持BSD,不支持GPLv3。

后面的引用文章还是很中肯的,但是lz在译文前面的那句话有点刺耳"他没有料到,Google会修改Linux内核,故意造成两者不兼容"。看了作者最近的几篇关于android与linux内核的评论,不知道为什么作者总是带着有色眼镜去看android……
说实话,lz的几篇评论中一直有一个误区,就是把android的内核部分和其它核心组件混为一谈。android的核心不仅仅是linux,还有bionic,dalvik等等核心组件或运行库。按照您的观点,将android整体置于GPL许可证下,对那些android应用开发商来说,将是一场灾难。因为调用了android系统提供的库,他们将必须把自己的所有程序开源。这也许是教主最想看到的,但是这毫无疑问将毁掉android的未来。再者,此次事件主要就是针对android对linux内核的改动的那部分代码,所以请先看清楚对象再作评论。
另外,根据个人在linux内核开发方面的一些经历发表一点看法。现在外面各种利用linux内核进行二次开发的项目,可谓数量极其可观,分布的领域也五花八门。但是这些项目中,真正能直接用vanilla kernel的实在少之又少。尤其像android这种针对特定平台的系统应用。估计做过内核开发的人都了解,在linux内核中做改动或增加特性的同时,要保持通用性,是非常麻烦的,而且需要经过多种平台的测试,繁琐的code review,才能并入linux内核主干。这对于那些需要在深层改动内核的项目来说,将是开发进度的一个极大羁绊。而同时保持这种通用性其实并没有什么意义,有时候反而会导致内核愈加臃肿。所以很多项目都抛弃了原有的通用性,而为项目维护一个单独的分支,或者用单独的补丁方式。这样说来android的情况已经是一个普遍现象了。
说来在各种开源项目讨论社区或邮件列表中,类似这种移除某些代码支持的内容实在太多了,android的这次也并没有大家想象的那么惊天动地。但是就是因为一些断章取义之类的谬传,最后把事情的一个扭曲面展现给大家,借android最近的热潮,引起轩然大波,这样做真的有意思么……

LS的评论很有道理,我做为一个天天跟Linux和Android程序打交道的人,想破头没搞明白Android怎么跟Linux kernel不兼容?

“他没有料到,Google会修改Linux内核,故意造成两者不兼容。”

我认为,“故意”这个说法十分不妥。没有任何证据表明,Google的目的是要分裂自由软件社区。Google一直是一个对“开源”友好的公司。(当然,我不认为Google会认同RMS的观点。)

相反的理由倒很清楚:Google需要厂商支持,所以需要使得开发非GPL的驱动程序成为可能。阮先生喜欢自由软件和RMS,但也不能因此就妖魔化有不同观点的公司和个人。

引用zhtlancer的发言:

后面的引用文章还是很中肯的,但是lz在译文前面的那句话有点刺耳"他没有料到,Google会修改Linux内核,故意造成两者不兼容"。看了作者最近的几篇关于android与linux内核的评论,不知道为什么作者总是带着有色眼镜去看android……

希望这一个有过内核开发经验的人的技术视角,能稍微缓和一下小阮同志的非要和Android没完劲头。呵呵。

什么ASL,BSD,GPL,GPLv2,GPLv3,只不过是人类“心念”的体现。
所以才会有GPLv2的时候还和ASL不兼容,可是到了GPLv3,竟然就和ASL兼容了的有趣事情。

让我们看穿每个“不同声音”之后所蕴含的“相同音色”吧。
我们人类,大家一起都在朝着同一个辉煌的方向前进,以各自不同的,甚至看起来是相反的方式。

巴夏说的好,事情/状况,都是中性的,赋予这些中性东西以好或坏概念的,是我们人类的内心罢了。

就如同小阮同志非要赋予Android以一个不好的面向一样。

试图看到Android好的面向吧。赋予“Google会修改Linux内核,故意造成两者不兼容”这个念头的只不过是我们自己,并不是google本身。

超越这些吧,不同调查也能想象的到:google这么做的苦衷,以及其为了自己的利益所做的小算盘。

就连china ZF,他们难道不也是在为着自己所认为正确的共产主义事业,为了他们认为是正确的大中国,大团结,反对美帝国主义的理念,来做着被我们所唾弃的事情?

当视角如同James(WingMakers信息提供人)那样能抬高,抬高,再抬高,的话,就会发现连911都只不过是人类人性提升的一个必经过程罢了。如果没有911,人类的提升说不定会减慢。

无论如何,通过这次Android事件,我真诚祝福小阮同志,能看透,所谓好坏,只不过自己内心向外投射出去的东西罢了---这个简单,却需要每个人通过一辈子的学习,才能学习的好的真理。

也感谢小阮同志的较真,让我们能进一步看透事情前后的本质。

未来软件的发展方向,如果单从地球当前这个第三次元之内来说的话,可以肯定,会“好坏并存”“善恶同行”,也就是所谓的无私的开源,和自私的闭源同存。

但是,当地球,当地球上的我们人类,早已经腻歪了这种,如同肥皂剧一样,被上演了成千上万年的“二元性”,好坏善恶的舞台剧的时候,当我们从内心渴望一个新的舞台剧脚本的时候,

也许在那个新的舞台剧的脚本之下的软件发展,将早已不存在开源闭源之争这个味同嚼蜡的主题,而将面临一个新的,我们还不知道的令人兴奋,具有挑战性的主题。

那个新的舞台剧,就是地球的第四次元,或者第五次元。

慢慢的,不喜欢好坏善恶的简单区分,不喜欢这种小学级别,简单的一屁的学习课程的我们地球人,已经越来越多了。
他们已经开始明白了,好坏只不过是我们内心的体验罢了。他们已经腻歪了这种自己和自己捉迷藏的游戏。
他们要新的游戏!

所以,地球的未来,地球的软件的未来,首先,将都是开源的,因为那时,人类将意识到人类不应该分彼此。这也恰恰是开源,免费,和其他种种随同网络发展所带来的东西,所带给我们人类的感受,慢慢被强大化的原因。

不过,在这个伟大的“无私化”的过程之中,不能如同老毛头大跃进搞什么一杆子几年之内实现共产主义。而是要允许“螺旋化提升”,
允许人类去把所有“走不通”的路都走一编,然后人类才会心甘情愿的走向“无私化”这条宇宙文明发展的必经之路。

所以,每个看似如同China ZF,如同Android一样不好的东西,都在以自己的方式为这个伟大的提升之路,贡献着自己的力量。

当我们关注好的东西,好的东西就会来的更快!

原作者的文章很中立啊,挺好接受的,嗯,是不是没贴全文啊。
倒是觉得,Android是一个面向手机的操作系统,Linux一开始并没有这样的定位,对Android的有益修改并不能确保通用到所有使用Linux的情况中去,这也是需要考虑的。

博主坏就坏在这一句话上:他没有料到,Google会修改Linux内核,故意造成两者不兼容。
Google确实修改了Linux内核,但这样修改的目的是为了使Linux能够更好地在手持设备上运行。举个很简单的例子,Google给Android加上了主动休眠机制,就是如果系统处于空闲状态,Android会主动使自己的某些模块进入休眠。这样做的目的自然是为了大大提高手机的待机能力。
但这里的问题是Google的实现不够优雅,是使用了自己新造的一个用户态锁机制。而Linux内核开发者的观点则是:Linux本身在内核态实现了非常好的锁结构,无需这样一个新的锁。换句话说,是他们认为Google的修改不足够”Linux Way“。再深入一点,这样的分歧导致其他依托于Android的厂商要么选择支持Google使用Google的方法,要么纯粹遵循Linux本身的方法,但后果就是写出来的东西可能非常费电且有可能在Android上带来其它隐患。
简单分析一下这个分歧就会发现这样继续下去的结果就是Linux源代码可能自此分裂,笃信google影响力的人会遵循Google Android的分支。而坚持Linux本身纯正血统的则会坚持泛用的Linux分支。如果两者都能继续成功下去,最终的结果是变成两个不怎么兼容的系统。显然这个结果是内核开发者们不愿意面对的。
因此内核开发者们做了个决定,将Android源码树从Linux本身源码树移除,以此督促Google将Android以更符合Linux设计思想的方法来实现。而对Google来说,这恐怕是一个很难的抉择。一方面,它没有义务一定要这样做,还有,Android的商业要求使得它恐怕很难在短期内做这样的修改。但另一方面,Google如果做出不恰当的回应,就会可能陷入"Be evil"的指责。但仔细想想,Google并没有违反任何许可。这些指责,只是那些GNU的卫道者为了他们自身的发展而强加给Google的责任而已。
个人感觉博主在发第一篇文章时没有考虑清楚,同时指责Google”be evil“又是个敏感的话题,后来发现自己没有做好细致的调查导致文章引起争议,所以又继续发文解释。但无论如何解释,在文内总会有”Google在干坏事“的隐性倾向,因此无论再发几篇,也总会有人觉得不妥:)

只要Google不违反许可就是对的,哪怕你认为道德上有问题。就象一个人做了件道德上有争议的事,但是没有违法,别人无权乱指责。因为,道德就很难有一个统一的标准。

再说,Linux未必就全是对的,就好象当年的Java Swing,由于其坚持不对自己的类库修改,才产生了Java SWT,后者几乎成为事实上的Java GUI标准。同样道理,如果完全按Linux的路子走下去就是对的吗?

只要Google不违反许可就是对的,哪怕你认为道德上有问题。就象一个人做了件道德上有争议的事,但是没有违法,别人无权乱指责。因为,道德就很难有一个统一的标准。

再说,Linux未必就全是对的,就好象当年的Java Swing,由于其坚持不对自己的类库修改,才产生了Java SWT,后者几乎成为事实上的Java GUI标准。同样道理,如果完全按Linux的路子走下去就是对的吗?

就象一个人做了件道德上有争议的事,但是没有违法,别人无权乱指责。
====================
这个话楼上自己做的到吗?
当然,做不到时,可以这样辩解,第一,这个不是“坏”得有争议,而是“坏”得无争议,所以可以指责;第二,没有“乱”指责,而是”客观”的指责。

但是,谁不是如此?谁有例外?

貌似只要涉及生产资料和生产方式的安排,总会引起两大主义你死我话的斗争。在IT界,开源组织就是共产主义社会,商业公司联盟则是资本主义世界。

共产主义靠共产国际的会议决议来协作行动,商业公司则凭互相间无数的商务协议组成利益共同体。理论上总是共产主义更先进,现实中却总是输给一盘散沙、各怀鬼胎的资本主义世界。

ASL和GPL,就好比两种加入共产主义社会的方式:GPL是直接宣布自己国家也共产了,拒绝一切资本主义的东东;ASL则是来参加共产国际大会,分享共产世界的经验,但走的还是独立自主的道路。

我想这两种方式都是开源组织所乐见的结果。因为共产主义天然就是国际主义的,他的终极目标,是要看到“环球遍是赤旗的世界”,而不是期望成员国直接为其贡献GDP。

选择ASL的国家,的确消耗了一部分的优秀党员为其效力,又无法直接计入共产国际的GDP中,因为他们也要为自己国家的生存发展考虑,不可能断绝与资本主义的一切来往。但终究是让共产主义理念得以发扬光大了。

Ryan Paul的文章,已经注意到google在这方面的考虑,同时表示了理解。我们也大可不必过分忧虑一时的得失,并祝愿android前途光明。

这只不过是许可证上的漏洞吧

很赞 zhtlancer 的评论,感觉的确如此的。。虽然我现在只是一个大二的学生吧。。不过基本体会不到android有什么作恶之处。。。相反感觉android很优秀。。有打算给我的手机上的android写一些简单程序玩一玩。。。。

找了半天关于android 的开源协议内容 ,最后我竟然能找到将近十年前的文章。只能说大家现在都已经对开源这样的东西比较麻木了吧!大家现在根本不关心什么开不开源,只想着我能写就ok!难道开源到我这一代程序员就要终结了?我读了全部评论,果然还是评论里面出人才!哈哈,还有小软(或者叫老阮?)同学,你十年前就在写东西了?

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接