转自:http://www.cnbeta.com/articles/100413.htm

在射手播放器和QQ影音为GPL吵得不可开交的时候,CBer应该少一些无知的谩骂,多学习一下开源许可证的基本知识。要骂也要骂到点子上,别不分是非,指着别人脚骂别人鼻子。在中国这样一个几乎完全不尊重版权,开源软件处于萌芽发展的国家,开源是一个及其冒险的选择,你做出的产品顷刻之间便会被人抄袭。在中国,选择开源是需要勇气的,既然选择了它,就选择了坦然面对这个残酷的现实,开源可不是简单开放了源代码了事就可以了的。

首先,开源并不代表放弃自身的权力,相反,开源软件之所以存在,正是它非常注重这种权力,并且把这种权力赋予了软件的所有使用者。小心的选择许可证是开发开 源软件的第一步,也是每一个开源软件作者所必须要了解的,这代表了你对你的软件的最基本态度。很多的时候,这背后也隐藏着某种商业策略,特别是有商业公司 支持的项目。
比如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?),得不偿失。而且,闭源之后,与整个 社区为敌,作为一个定位软件平台的项目,会流失大量应用软件开发者,以小博大,任何一个商业公司都不会干这种胜算不高的蠢事。
在看以 GPL发布的Linux为什么比以BSD发布的FreeBSD成功。其实正是因为GPL的传染性。当一个开发人员在Linux基础上开发一个新功能之后, 不得不以GPL开放源代码,贡献回Linux,这样Linux本身才能越来也越壮大而且留住了相当的开发人员,形成了一个 优秀软件->很多使用者和贡献者->贡献->更优秀的软件->更多的使用者和贡献者... 的良性循环。
正如每一个成功的男人背后都有一个女人,每一个成功的开源软件背后都有一个符合它策略的开源许可证。许可证明确的版权划分,明确的版权划分为软件发展提供 了一个良好的环境。正是因为老外重视版权,天天为版权争吵,才会有一个良好的商业软件和自由软件大环境。相对的,漠视版权的中国无论商业还是开源软件,才 会沦落到毫无创新能力,只能给外国打打下手,作点边角外包的境地。
最后,回到射手和QQ,他们都使用的ffmpeg作为解码器。 ffmpeg本身是LGPL的,使用它开发闭源软件是无可厚非的。但是ffmpeg有部分可选GPL的解码器主要是xvid和x264,由于GPL的传染 性,打开了可选的GPL解码器后的ffmpeg也成了GPL的,所以,基于ffmpeg的射手播放器和QQ影音从法律上讲,必须以GPL发 布源代码,这个是强制的,不是可选项。射手的申明中引用的GPL FAQ的话已经很明确了,GPL软件中使用的动态链接库必须是GPL兼容的,也就是说,射手的字幕模块(它是动态链接到射手播放器本身),也必须是使用 GPL兼容的许可证发布,闭源显然是一个错误。
射手播放器的作者Tomasen发现了这个错误之后,很快开放了这部分的代码,弥补了自己的失误,这为射手播放器以后的发展扫清了一个大障碍,下一个障碍 是把非GPL兼容的CoreAVC商业解码器踢出发行包,这不是一个GPL软件该有的东西。理清了许可证,和赋予开发者的权力,才有可能吸引到开发者。

转载于:https://www.cnblogs.com/ychellboy/archive/2009/12/28/1634579.html

【转载】评论:从射手QQ之争看开源许可证的选择相关推荐

  1. 冷眼看待360与QQ之争

    最近网络上搞的比较火的莫过于360与QQ之争了. 我觉得我这个普通的用户还是冷眼看待的好. QQ我是用的,看到360网站上有FANS叫嚣着要360开发一个聊天工具,好了,如果可以的话,QQ一定要欢迎竞 ...

  2. html输入QQ自动获取QQ头像,WordPress评论框输入QQ获取头像和昵称教程

    先看效果图吧: 这个功能在很多emlog博客上都兴起了,不过我发现wordpress圈里还不太常见,所以把这个功能做到wordpress上,由于每个人的主题评论表单结构节点名称都不太一样,所以根据本教 ...

  3. 【转载】心得技巧大全:UDer必看50点精华

    [转载]心得技巧大全:UDer必看50点精华   http://games.sina.com.cn 新浪游戏 我要投稿 文章作者:algidity 个人文集 发表时间:2007-03-30 UC/QQ ...

  4. WordPress怎么实现评论自动填写QQ邮箱与昵称?

    WordPress评论自动填写QQ邮箱与昵称这个功能很鸡肋呀,以至于我虽然留了位置,但没写功能.不过最近有人问了这个事,还是写篇教程出来吧.功能实现主要是通过腾讯的查询接口实现的,不过在2018年7月 ...

  5. (原)从气宗和剑宗之争看ERP

    从气宗和剑宗之争看ERP 本文作者:老木(wood9999@163.com) 摘要:从气宗和剑宗之争,看企业的管理――内功和软件的功能――外功. 看过<笑傲江湖>的朋友,肯定记得华山派的剑 ...

  6. qq怎么看linux教程,WINE QQ 2009教程 看很多人还为QQ着急

    WINE QQ 2009教程 看很多人还为QQ着急 发布时间:2010-01-07 21:21:06来源:红联作者:augustd2 一.安装好 Wine 1.2(1.2 版安装好就支持中文界面的了) ...

  7. 使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed

    使用第三方SDK(如微信.qq.快看.头条等),调用接口405 Method Not Allowed 错误描述:postman请求正常,但客户端调用后接口没有反应,但返回了405错误. 解决方法:第三 ...

  8. 净误差与遗漏为负值的含义_【双语】跳出“资本外逃”之争看净误差与遗漏

    本文首发于微信公众号:中国外汇.文章内容属作者个人观点,不代表和讯网立场.投资者据此操作,风险请自担. 作者丨管涛中国金融四十人论坛高级研究员 来源丨<中国外汇>2017年第15期 8月1 ...

  9. 开源正在吞噬软件业?看开源的7大理念

    软件正在慢条斯理地吞噬世界,开源正在慢条斯理地吞噬软件业. 软件正在吞噬世界?是的,对于购物.吃饭.健身.交停车费都需要使用软件的年代,对于平均每人每天都要花费5到6个小时使用手机软件的年代,有什么理 ...

最新文章

  1. 联发科有没有高端处理器_OPPO Reno5系列发布:联发科的高端梦实现了?
  2. C++---类成员变量定义为引用
  3. Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用...
  4. JS 对象(Object)和字符串(String)互转方法
  5. GB2312, BIG5, UTF8, Unicode之间的互换
  6. 详解DataStore,SharedPreferences终结者
  7. 彻底卸载Xubuntu Kubuntu
  8. String的intern方法详解
  9. java重构工具_Piranha(陈旧代码自动重构工具)
  10. vivo手机系统android9,vivo终于推送Android9.0,这几款机型你有吗?V粉们已经迫不及...
  11. 阿里OSS图片持久化,裁切,缩放,格式转换等
  12. ATF:Gicv源码文件系列-gicv2.h
  13. php判断是否是微信浏览器,php判断是否为微信浏览器浏览简单示例
  14. Java基础之IO流(一)
  15. CobaltStrike二次开发环境准备以及免杀
  16. ccf-星际旅行(80分)
  17. spring boot 使用 javax.mail发送邮件常见错误Authentication failed、Mail server connection failed
  18. word中新建的标题编号与上一级的标题编号没有顺承的一种解决方法
  19. 与音乐的计算机职业生涯规划书,音乐专业大学生职业生涯规划书1000字
  20. 云平台支持哪些java应用服务器_腾讯云部署javaWeb项目之一应用服务器

热门文章

  1. ProE 应用技巧30则
  2. 连连看游戏的设计与实现——基于JAVA语言的小游戏
  3. 【NVIDIA Jetson NX】 环境配置及pytorch安装
  4. PCIE时钟DC/AC特性测试方法
  5. 动物园管理员-Zookeeper
  6. 合作还是背叛(博弈论的诡计)
  7. hls网页播放器实现
  8. python例程:智能停车场车牌识别计费系统的程序
  9. 影响万物互联的人工智能机器人
  10. 将QQ截图添加至右键菜单