Ruby用实际行动向GPLv3吐槽,Ruby 1.9.3将改用 BSD 许可证发布

标签: Development | 发表时间:2011-08-12 15:57 | 作者:Xin LI Kings
出处:https://blog.delphij.net/

Ruby 从下一个版本,也就是 1.9.3 开始,从原先的 GPLv2 许可证换成了 2-clause BSD 许可证(大体上相当于 MIT 许可证)。

早期 Ruby 采用的是自由软件基金会推荐的 GPLv2 or later 许可证方式。在实际操作中这种许可方式十分常见,这种许可证方式包含两层意思:

  • 软件本身以 GPLv2 许可证发布
  • 当自由软件基金会修订 GPL 并发布新版 GPL 时,授权一方同意受权人以新的 GPL 条款来发布软件 (*)

这其中 (*) 的部分实际上是开给自由软件基金会的一张空白支票,并且可能导致各式各样的法律问题。据我个人的了解,湾区企业的法务部门通常不允许公司以这种方式发布软件,因而,商业公司在使用 GPLv2 or later 许可证的软件时,通常会在发布代码的同时明确说明自己在使用这个软件时只遵循某个特定版本的GPL,以规避潜在的法律风险:

/*
 * [company] elects to have and use the contents of [filename] under and governed
 * by the GNU General Public License (GPL) Version 2, only.  However, the following
 * notice accompanied the original version of this file:
 */

然而,实际上这样使用代码也是有风险的。例如,如此这家厂商便无法同时使用 GPLv3 许可证的代码。因为GPLv2 中规定:

4. You may not copy, modify, sublicense, or distribute the Program except as
expressly provided under this License. Any attempt otherwise to copy, modify,
sublicense or distribute the Program is void, and will automatically terminate
your rights under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.

同时,GPLv2 中也规定:

6. Each time you redistribute the Program (or any work based on the Program), the
recipient automatically receives a license from the original licensor to copy,
distribute or modify the Program subject to these terms and conditions. You may
not impose any further restrictions on the recipients' exercise of the rights
granted herein. You are not responsible for enforcing compliance by third
parties to this License.

简而言之, GPLv2 only 的代码和 GPLv3 许可证的代码是不能一起 redistribute 的,原因是 GPLv3 中增加了包含对硬件和软件专利等问题而增加的一系列限制自由的条款(违反第6条),而另一方面,自由软件基金会又认为 Ruby License 是非自由软件授权,因此,GPLv3 许可证的软件又不能与 Ruby 以 Ruby License 联编,因为这样做违反 GPLv3 第10条的内容:

10. Automatic Licensing of Downstream Recipients.
[...]
You may not impose any further restrictions on the exercise of the rights
granted or affirmed under this License. For example, you may not impose a
license fee, royalty, or other charge for exercise of rights granted under
this License, and you may not initiate litigation (including a cross-claim
or counterclaim in a lawsuit) alleging that any patent claim is infringed
by making, using, selling, offering for sale, or importing the Program or
any portion of it.

由于 Ruby 只以两种许可证之一发布,因此,发布联编的可执行文件要么违反 GPLv2,要么违反 GPLv3,因此再发布的结果只能以源代码的形式提供,而不允许再发布其二进制文件。

自由软件基金会从 6.0 版开始,将 readline 库改为 GPLv3 or later,这样一来,GPLv2 only 的 Ruby 便不能发布联入了 readline 的可执行文件了。

为了因应自由软件基金会改换授权可能给最终用户带来的困扰,去年 9 月,Ruby Changeset r29262 将 Ruby 中的 GPLv2 许可证完全删除,并改换为基于 FreeBSD 许可证的 2-clause BSD 许可证,从而赋予了用户选择的权利。

感谢 Richard Stallman 和自由软件基金会使更多的人选择了 BSD 许可证。

相关 [ruby gplv3 吐槽] 推荐:

Ruby用实际行动向GPLv3吐槽,Ruby 1.9.3将改用 BSD 许可证发布

- Kings - delphij's Chaos
Ruby 从下一个版本,也就是 1.9.3 开始,从原先的 GPLv2 许可证换成了 2-clause BSD 许可证(大体上相当于 MIT 许可证). 早期 Ruby 采用的是自由软件基金会推荐的 GPLv2 or later 许可证方式. 在实际操作中这种许可方式十分常见,这种许可证方式包含两层意思:.

了解Ruby Gems

- Jacky - Reborn
所谓RubyGem,就是一个个软件包,通常被简称为“gem”. 通常一个Gem里包含一个Ruby应用程序或者一个Ruby程序库. 而RubyGems软件本身允许用户在自己的系统中轻松地下载、安装、操作Gems. 以下两个网址无论如何都应该放到自己的收藏夹里:. 最著名的Gem之一,当然是Rails——当我们安装Rails的时候,使用的命令行是:.

开始Ruby

- TheLover_Z - 博客园-首页原创精华区
我的上一篇为什么要学动态语言和大家分享了一些心得,如果有人因此想试试动态语言,哪怕是一点点,我也很高兴,毕竟自己写的东西还有点意义. 俗话说,万事开头难,但是开始用动态语言一点也不难,还是以ruby为例. 1.首先来看看这个网站, http://tryruby.org/. 顾名思义,这个网站的目的就是让大家试试Ruby,我觉得做的比较好的就是它有一步步的教程,只要照着它的提示一步步往下,就能领略Ruby的魅力.

Ruby On Rails 4 hello world,Ruby On Rails上手

- - CSDN博客Web前端推荐文章
有机会再试一试Rails了,只是原来接触的是2,现在已然变成了4,似乎现在的安装比原来会快些. 似乎这就是当前的最新版本. 似乎这就是诸如Django、Rails这类对于轻量级网站的数据库要求. 其他可以看情况安装,如openSUSE. 可以直接用rails生成. 这样的话打开  http://localhost:3000 就可以看到,Rails的欢迎界面Welcome aboard,有点类似于Django-CMS的小马哥~~.

安装rails(ruby on rails)

- - BlogJava_首页
  记得两年前使用ror做网站,自动生成功能记忆犹新,只是当时网络知识实在缺乏,体会不到其中的乐趣. 现在了解的很多了,书也有两本,一直想重新体验最新版做个网站. 安装这个过程实在有点坑爹,查找网上若干ror的书包括2012年版的书,按照上面的步骤都没法安装完成,搞得我一会在linux下试验,一会在windows下试验,都没成功,只好放下.

Ruby视频资料清单

- Shu. Wang - 欧阳的技术笔记
斯坦福Ruby与Rails进行Web开发的开放课程. 通俗易懂,不过其中课程使用的Rails版本是2.3. 同时,本课程配合斯坦福系列开发课程,是非常好的自学材料. lynda公司出品的rails3基础教程. 绝对通俗易懂,视频拆分方式很适合等人时间阅读. 并不支持Rails3.1,是Rails3.0.

我的PHP,Python和Ruby之路

- heely - robbin的自言自语
因为看到一篇讨论PHP,Python和Ruby的编程语言讨论贴,就说说我的PHP,Python和Ruby之路吧:. 我2000-2001年用PHP用了两年,那还是第一次互联网泡沫时期,到2001年后期,Servlet/JSP流行,然后我就发现:你说用PHP写的东西,都会被人鄙视. 当时我们其实也用Java了,只不过用Java写后端的消息队列.

关于Ruby 2.0: 我们的计划

- Fred - LetRails
这是Matz在去年10月份做的一个关于Ruby 2.0的主题演讲,正如他所说,Ruby 2.0在特性方面只是向前迈进了一小步,更多的改变将发生在实现层面. Ruby 2.0的新特性包括:. 1.step(a, b) do |i| p i end # 是从a到b,还是从b到a. 减少monkey patch对系统可能造成的负面影响.

Ruby世界:汉字转换成拼音

- 董玉伟 - 道喜技术日记 .^. 天天红玉世界

QQ账号登陆的Ruby实现

- RobinWu - 致力于ROR走入企业开发
腾讯公司最近开放了QQ登陆,这对广大站长是个好消息,从此实现QQ账号登陆您的网站不再是梦想. 但是遍寻腾讯的SDK文档,并不见Ruby的实现,这对Ruby爱好者可不是个好消息. 经过好几天的摸索,我终于成功实现了QQ登陆了. 其中,QQ_KEY和QQ_SECRET换上你们自己的. #用户点击授权后,调用回调方法.