几种开源license介绍

2018-07-05  本文已影响0人  抬头看月亮

先上一个乌克兰程序员Paul Bagwell的分析图:


image.png

//该图应该是出自阮一峰博文

咱们日常使用情况可以从3个维度来分类:

  1. 是否有对源代码的修改
  2. 开发语言,java /c++, javascript
  3. 暂且卖一关子

在此要先说下copyleft的概念:the software is copyrighted, but instead of using those rights to restrict users like proprietary software does, we use them to ensure that every user has freedom.

也就是说copyright 保护作者的专有权利,而copyleft 允许他人任一修改和分发作品,加入了法律上的分发条款,前提是这些条款不能改变(举栗:你用了GPL,那你的软件也要遵循GPL协议分发)。

那有哪些开源license是copyleft呢? 答案是GPL, LGPL, AGPL, EPL……等等。

==============GPL(General Public License)=================

2007年6月29日,GPL v3发布。

GPL规定举例:

  1. 如果你修改了源代码且要商用,那你的系统中修改的这部分也必须开源。(这点后面会经常提到)
  2. 要求放置协议说明

GPL条款规定它的derivative work也必须是GPL.(JAVA怎样算derivative work 请看下面LGPL介绍中的第二段)

==============LGPL(Lesser General Public License)============

image.png

===========BSD(Berkeley Software Distribution License)========

GPL强迫后续版本必须一样是自由软件,BSD的后续版本可以选择要继续是BSD或其他自由软件条款或封闭软件等等 (https://zh.wikipedia.org/wiki/BSD%E8%AE%B8%E5%8F%AF%E8%AF%81)

这点从一开始的图里可以看到,BSD 和后面将要介绍的MIT 以及Apache 2.0 在修改源代码后可以闭源.

自由软件定义:(https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6

如果再分发的话,需要放置协议说明。

===========MIT=========================================

MIT许可协议之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X许可协议”(X License)或“X11许可协议”(X11 License)(https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89)

同样的,如果分发的话,需要放置协议说明。

==========Apache 2.0=====================================

Apache 2.0 也是一个比较好的license,和BSD以及MIT不同的是, Apache 2.0要求:如果对源代码有修改,需要在说明里列出具体对源代码做了哪些修改。

同样的,如果再分发的话,需要放置协议说明。

==========EPL(Eclipse Public License)========================
https://resources.whitesourcesoftware.com/blog-whitesource/top-10-eclipse-public-license-questions-answered

EPL 也是copyleft license, 好像不太妙,我的软件用了EPL license的软件,也要遵循EPL了吗?且宽心,EPL是弱copyleft license.

如果仅仅是用的二进制文件,而不是源代码(一般此类情况发生在你有兴趣对源代码做了修改),那是不需要开源你的代码的。

说到这里,要做一总结。GPL, LGPL,BSD, MIT, Apache 2.0, EPL 都可以商用。但是尽量不要修改源代码,修改的话就要复杂一些,看看具体license是怎么对修改规定的。

还记得最开始的时候卖的那个关子么?分类维度之三,分发方式。

我们平时开发的时候,作为java developer 难免会import各种各样的jar包,LGPL 特别对java做了说明,认为import这种做法就表明我们的产品是衍生品,就要遵循LGPL license。

但是,幸运的是,GPL, LGPL 认为web应用不属于分发,属于internal use,所以就不受这些规则的限制啦。这个观点是在google上别人提问看到的,另外一种license也可以从侧面证明这个认知,那就是AGPL.

AGPL(Affero General Public License) 就是为了对web服务约束而生的 (https://www.gnu.org/licenses/agpl-3.0.en.html),要求web应用发布的时候,也要把代码给开源了。除此外,它的约束和GPL v3是一样的。

声明:本文仅从作者自己的理解出发,实际使用时还请咨询律师 :)

上一篇下一篇

猜你喜欢

热点阅读