本文部分摘自评论:从射手QQ之争看开源许可证的选择

首先,开源并不代表放弃自身的权力,相反,开源软件之所以存在,正是它非常注重这种权力,并且把这种权力赋予了软件的所有使用者。小心的选择许可证是开发开 源软件的第一步,也是每一个开源软件作者所必须要了解的,这代表了你对你的软件的最基本态度。很多的时候,这背后也隐藏着某种商业策略,特别是有商业公司 支持的项目。
比如Android为什么是Apache 2.0而不是LGPL/GPL发布?为什么Linux是以GPL发布?其中绝对不是简简单单的看哪个许可证用得多就选择哪个,而是深思熟虑的结果。千万不 要小看这个选择,一个许可证之于软件就相当于价值观之于普通人,代表了这个软件的基本品性。一个错误的许可证选择可能会直接导致整个项目的失 败,XFree86就是一个好例子,所以,选择许可证是一件小心、谨慎的事情。
各种开源的许可证主要的限制还是在redistribution(发布),所以个人/商业公司开发的软件包含了GPL的代码,只要你不发布,是可以任意使用的。
GPL
这里不想再解释长篇的GPL译文和更长的FAQ。 简单说,GPL软件的使用者有权力得到软件的代码,只要使用了GPL,在发布(redistribution)的时候,整个项目也必须是GPL的,即主程 序和静态链接的库(Linux的.a和Windows的.lib)必须是GPL的,动态链接库(Linux的.so,Windows的.dll)必须是比 GPL兼容的。所谓GPL兼容,也就是GPL软件中可以使用的库,这些许可证必须比GPL弱(如LGPL,BSD),而不能是某个商业许可证。这里有一个 兼容列表 List of FSF approved software licenses。正因如此,GPL是带有很强的传染性,只要你的软件使用了GPL的代码,那么就请以GPL开放源代码吧,并且你的项目中也不能有任何和GPL不兼容的库。
LGPL
GPL 带有很强的传染性,那么如果一个库使用GPL发布,那么使用这个库的所有软件也必须使用GPL发布,这对不想开放源代码的商业软件来讲是致命的打击——你 可以不使用其他的库,但最基本的libc是无论如何绕不开的,如果libc是以GPL发布,就相当于所有软件必须以GPL发布了。所 以,LGPL(Lesser GPL)诞生了。LGPL定义为,在以LGPL发布的库的基础上开发新的库的时候,新的库必须以LGPL发布,但是如果仅仅是动态链接,那么则不受任何限 制。这样商业软件就可以随意的使用LGPL的库了。因此,LGPL也具有传染性,但限制在在其基础上开发的库上,而并不限制使用它的程序本身——它的传染 性远小于GPL。

BSD、Apache 2.0

相对GPL/LGPL的开放源代码,BSD,Apache 2.0就宽松许多——商业软件可以任意的使用BSD,Apache 2.0发布的软件代码,而不需要开放源代码,只需要提及代码的原出处就可以了。BSD和Apache 2.0提及的方式稍有不同,具体可以参考协议的详细内容。它们是GPL兼容的。
了解了几种常用许可证的异同,再来看许可证的选择。

Android 使用宽松的Apache 2.0发布,因为Google作为一个商业公司,并不想失去商业软件的支持,它希望团结一切可以团结的力量加入的Android的开发中来,壮大自己的阵 营,使用Apache 2.0就无可厚非了。而Google本身,并没有丧失对Android的控制权,不会担心另外一个公司拿走了Android的代码开发出一个闭源 Android的对手。因为,只要Android不断的出新版,社区不停的跟进,并且不停的修改API,其他基于Android开发的公司不得不把自己的 Patch提回到主干上,否则,必然将耗费大量人力物力在维护自己的Patch上(心得:钱和技术这两方面你斗得过Google?),得不偿失。而且,闭源之后,与整个社区为敌,作为一个定位软件平台的项目,会流失大量应用软件开发者(心得:API都不一样,你怎么勾引普通开发者),以小博大,任何一个商业公司都不会干这种胜算不高的蠢事。(心得:Google唯一方式就是快速的进化Android,别人拿不走主导权就不得不跟随,其次还可以打败iOS,第三还可以解决碎片化问题,否则大家都停留在2.3怎么行,如果慢了就会被别人抢走。所以目前Google不用太担心版权问题,将来怎么样再说。反正IT发展这么快,死抱着金娃娃也没有,不出5年就会过时。)

在看以 GPL发布的Linux为什么比以BSD发布的FreeBSD成功。其实正是因为GPL的传染性。当一个开发人员在Linux基础上开发一个新功能之后, 不得不以GPL开放源代码,贡献回Linux,这样Linux本身才能越来也越壮大而且留住了相当的开发人员,形成了一个 优秀软件->很多使用者和贡献者->贡献->更优秀的软件->更多的使用者和贡献者... 的良性循环。
正如每一个成功的男人背后都有一个女人,每一个成功的开源软件背后都有一个符合它策略的开源许可证。许可证明确的版权划分,明确的版权划分为软件发展提供 了一个良好的环境。正是因为老外重视版权,天天为版权争吵,才会有一个良好的商业软件和自由软件大环境。相对的,漠视版权的中国无论商业还是开源软件,才 会沦落到毫无创新能力,只能给外国打打下手,作点边角外包的境地。

GPL 与 LGPL 扫盲的更多相关文章

  1. [转]五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

    当Adobe.Microsoft.Sun等一系列巨头开始表现出对"开源"的青睐时,"开源"的时代即将到来!现今存在的开源协议很多,而经过Open Source ...

  2. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

    当Adobe.Microsoft.Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协 ...

  3. 关于开源授权协议 GPL 和 LGPL

    GPL 是 GNU General Public License (GNU 通用公共许可证)的缩写形式:LGPL 是 GNU Lesser General Public License (GNU 宽通 ...

  4. 四大开源协议比较:BSD、Apache、GPL、LGPL(转)

    转自: 四大开源协议比较:BSD.Apache.GPL.LGPL 本文参考文献:http://www.fsf.org/licensing/licenses/ 现今存在的开源协议很多,而经过Open S ...

  5. 四大开源协议比较:BSD、Apache、GPL、LGPL (转)

    转自:http://www.lupaworld.com/portal.php?mod=view&aid=205552&page=all 本文参考文献:http://www.fsf.or ...

  6. GPL与LGPL的区别

    GPL(GNU General Public License)  我们很熟悉的Linux就是采用了GPL.GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样.GPL的出发点 ...

  7. 四大开源协议:BSD、Apache、GPL、LGPL

    参考文献:http://www.fsf.org/licensing/licenses/ 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种.我 ...

  8. 开源软件授权协议详解(GPL/MPL/LGPL/BSD/Apache Licence/Creative Commons/MIT)

    开源在今天的软件业已经很普遍,但开源是否意味着使用者可以对开源后的代码为所欲为呢? 答案是否定的. 开源运动同样有自己的游戏规则和道德准则. 不遵行这些规则不但损害开源运动的健康发展,也会对违规者造成 ...

  9. 了解开源的许可证GPL、LGPL、BSD、Apache 2.0的区别 【转】

    原文来自:http://blog.sina.com.cn/s/blog_6870d1e00100lhlv.html 你对开源有多少了解呢?如果你是软件开发者,要开源软件,不单单是开放源代码就可以了,选 ...

随机推荐

  1. 静态代码检查工具-PMD刚開始学习的人入门篇

    前言: PMD是一款静态代码分析工具.它能够自己主动检測各种潜在缺陷以及不安全或未优化的代码. PMD很多其它地是集中在预先检測缺陷上.它提供了高度可配置的丰富规则集,用户能够方便配置对待特定项目使用 ...

  2. python sqlite3 MySQLdb

    SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成. Python就 ...

  3. Linux 查看某个程序所在端口的 PID

    lsof -i:8085 加入显示的是2001 kill 2001 就可以杀死程序了

  4. 未能加载文件或程序集 MySql.Web

    偶然间碰到这个错误,找到一个临时的解决办法,真正的原因还不知道是什么,也不知道这种解决方法会不会对以后有什么副作用. “/”应用程序中的服务器错误. 配置错误 说明: 在处理向该请求提供服务所需的配置 ...

  5. 解决zabbix“ZBX_NOTSUPPORTED: Timeout while executing a shell script”报错

    如题所示,在zabbix_server使用zabbix_get获取自定义“UserParameter”对应的脚本的数据时,出现了如题所示的报错信息 [root@nmp01 scripts]# /usr ...

  6. Linux终端:speedtest_cli检测你的实时带宽速度

    你在家(或者办公室)的上传和下载速度如何?你能保证,你支付费用给ISP的同时得到了等价的回报? 要想测试我们因特网连接的速度,当下存在着一些因特网服务,比如说SpeedTest,这是一种可以通过Web ...

  7. automaticallyAdjustsScrollViewInsets(UITextView文字顶部留有空白)

    iOS7新添加的UIViewController的属性automaticallyAdjustsScrollViewInsets 此属性默认为YES,这样UIViewController下如果只有一个U ...

  8. 什么是CouchDB?

    ※本文对CouchDB的解释是来自Apache CouchDB的官网的译文,如果有什么问题,请指正. 1.CouchDB简介 CouchDB是一种利用JSON文件,javascript作为MapRed ...

  9. CGI是什么 搜索了这么多,大致看明白了保留下来。

    转自:http://blog.chinaunix.net/uid-13408389-id-2894933.html 分类: CGI是什么 CGI是CommonGatewayInterface 的简称. ...

  10. NPTL LinuxThreads

    Linux 线程模型的比较:LinuxThreads 和 NPTL 进行移植的开发人员需要了解的关键区别摘要 Vikram Shukla 2006 年 8 月 28 日发布 WeiboGoogle+用 ...