关于GPL
最近的在公司的项目里用到了SharpDevelop中的几个类库,因为是开源的,就要考虑一下具体的协议会有什么约束。一查不好,发现SharpDevelop遵循的是GPL协议,也就是说凡是使用其中的类库得代码必须开源,OMG,要是这样公司还赚什么钱??同时又发现一个LGPL得协议,使用遵循这个协议的类库的程序的代码可以不必公开。看来我的想办法找找有没有遵循这个协议的替代软件。再不成就得花钱买了。唔唔唔。下付对于GPL和LGPL的简单说明。
GPL ( Gun General Public License ) version 2.0 1991
最常见的开源协议,使用它作为授权协议的有大名鼎鼎的 Linux 。 GPL 最显著的两个特点就是网上称为的“病毒性传播”和“不允许闭源的商业发布”。
所谓的“病毒性传播”,指的是, GPL 规定,所有从 GPL 协议授权的源码衍生出来的(即上面提到的 Derivative Module ),或者要跟 GPL 授权的源码混着用的 Project ,都要遵循 GPL 协议,就像病毒一样,粘上了关系,就“中毒”了。 GPL 这样规定的目的是,保证 在 GPL 协议保护下的产品,不会再受到其他协议或者授权的约束。即让跟 GPL 有关系的源码都能免费获取。举个例子,如果你的改进的 Linux 中使用了 GPL 授权下的开源模块(也必须使用,你不可能自己重新去做个内核吧,如果做出来了,你也没必要叫 Linux 了。),那么你整个 Linux 产品也必须遵循 GPL 协议去开源,不能以其他方式去开源发布,更不允许闭源发布。这样一来,就不会出现这样一个 Linux --这个功能是 GPL 协议授权的,可以免费获取源码,而另外一个功能是其他协议下的,拿不到源码。这点规定对使用或者研究该产品的人来说,是一个极大的便利。
而“不允许闭源商业发布”指的是,在 GPL 授权下,你的软件产品可以商业发布,拿去卖钱,但是在这同时,你也必须将该产品的源码以 GPL 协议方式开源发布出去,供他人免费获取。也许有人会迷惑,拿去卖,又同时开源,那谁来买阿?这个产品怎么赚钱呢??这就涉及到开源产品的商业模式的问题了。
GPL 协议下的商业发布的一个关键点就像 Java 视线论坛的 Robin 所说的, GPL 是针对软件源代码的版权,而不是针对软件编译后二进制版本的版权。你有权免费获得软件的源代码,但是你没有权力免费获得软件的二进制发行版本。 GPL 对软件发行版本唯一的限制就是:你的发行版本必须把完整的源代码一同提供。
LGPL
LGPL 是 GPL 的一个为主要为类库使用设计的开源协议。和 GPL 要求任何使用 / 修改 / 衍生之 GPL 类库的软件必须采用 GPL 协议不同。 LGPL 允许商业软件通过类库引用 (link) 方式使用 LGPL 类库而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改 LGPL 协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此 LGPL 协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
但是如果修改 LGPL 协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此 LGPL 协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
评论