前言
开源作者提供开源代码肯定是希望能有更多人用的, 但是每个人对开源的理解和接受程度不同, 有的人希望自己的代码别人可以随便用随便改甚至闭源, 只要注明原作者的版权就好了; 有的人也希望自己的代码被更多人使用, 但是希望别人使用的过程有更多限制, 比如无法更改原文代码等。
细心的我们肯定早就发现,在很多开源的GitHub仓库的根目录下都会有一个LICENSE文件,license直译为”许可”, 该文件的首行会说明该仓库使用的是什么开源协议,每种开源协议都有不同的限制。仓库作者会根据自己仓库的情况选择适合自己的协议。
这就是开源协议
为什么要有开源协议
当人们进行创造性的工作(例如写作设计或编程)时,默认情况下该作品属于专有版权(copyright)。也就是说,法律承认人们是其作品的作者,他人在没有经得作者本人同意的情况下,是不能使用作者的成果的。
然而开源是另一种情况。开源作者多希望他人使用、修改以及分享他们的劳动成果,但是因为法律默认该作品依然是有专有版权(copyright)的,所以开源作者需要一个可以明确说明这些权限的许可协议(开放更多权限)。
常见的开源协议
世界上的开源协议(Open Source License)大概有上百种,当然,我们不必全部了解。我们只需要了解一些常用的开源协议,知道它们的历史背景和使用场景以及法律相关的效应就ok了。
开源协议 | 简述 | 要求 | 允许 | 禁止 | 来源 |
---|---|---|---|---|---|
Apache | 一个较宽松且简明的协议 | 协议和版权信息、声明变更 | 商用、分发、修改、专利授权、私用、附加协议 | 作者免责、商标使用 | Apache软件基金会(2000-2004) |
GPL | 应用最广泛 | 公开源码、协议和版权信息、声明变更 | 商用、分发、修改、专利授权、私用 | 责任承担、附加协议 | 自由软件基金会(1989-2007) |
LGPL | 主要用于一些代码库 | 公开源码、库引用、协议和版权信息 | 商用、分发、修改、专利授权、私用、附加协议 | 责任承担 | 自由软件基金会(1991-2007) |
MIT | 宽松简单且精要的协议 | 协议和版权信息 | 商用、分发、修改、私用、附加协议 | 责任承担 | 麻省理工学院(1988-) |
BSD | 较为宽松,两个变种 | 协议和版权信息 | 商用、分发、修改、私用、附加协议 | 责任承担 | 计算机系统研究组(1977-1995) |
Eclipse | 对商用非常友好 | 公开源码、协议和版权信息 | 商用、分发、修改、专利授权、私用、附加协议 | 责任承担 | Eclipse基金会(2004-) |
Mozilla | 较为宽松的BSD协议和更加互惠的GPL协议的折衷点 | 公开源码、协议和版权信息 | 商用、分发、修改、专利授权、私用、附加协议 | 责任承担、商标使用 | Mozilla基金会(2012-) |
AL2.0
Apache 许可证是一个由Apache软件基金会发布的自由软件许可证,最初为Apache http 服务器而撰写。2004年1月,Apache软件基金会公布了Apache 2.0版本(Apache Licence v2.0)。
要求
- 需要给代码的用户一份Apache Licence
- 如果你修改了代码,需要在被修改的文件中说明。
- 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明。
- 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
好处
- 永久权利。 一旦被授权,永久拥有。
- 全球范围的权利。 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
- 授权免费。 无版税, 前期、后期均无任何费用。
- 授权无排他性。 任何人都可以获得授权
- 授权不可撤消。 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码
GPLv3
GPL是GNU General Public License的缩写,中文译为GNU通用公共许可证。最初由自由软件基金会的理查德·斯托曼为GNU项目所撰写,并授予计算机程序的用户自由软件定义(The Free Software Definition)的权利。GPL是一个Copyleft许可证,这意味着派生作品只能以相同的许可条款分发。 GPL是第一个普遍使用的Copyleft许可证。
2007年,发布了第三版许可证(GNU GPLv3,General Public License v3.0),以解决在长期使用期间发现的第二版(GNU GPLv2)所发生的一些困扰。
GPL授予程序接受人以下权利,或称“自由”,或称“copyleft”:
- 基于任何目的,按你的意愿运行软件的自由(自由之零)。
- 学习软件如何工作的自由,按你的意愿修改软件以符合你的计算的自由(自由之一)。可访问源代码是此项自由的先决条件。
- 分发软件副本的自由,因此你可以帮助你的好友(自由之二)。
- 将你修改过的软件版本再分发给其他人的自由(自由之三)。这样可以让整个社区有机会共享你对软件的改动。可访问源代码是此项自由的先决条件。
LGPL
GNU宽通用公共许可证(英语:GNU Lesser General Public License,简称:LGPL)是由自由软件基金会公布的自由软件许可证。
LGPL 是 GPL 的一个衍生版本,该协议主要是为类库设计的开源协议。LGPL的第3版于2007年发布,它以在GPL第3版之上附加应用一系列许可的方式表现。
LGPL有一特点是LGPL软件可以被转换成GPL。
它允许企业与软件开发者使用,或将LGPL授权的软件集成至他们自己的软件内(即使该软件是私有软件也被允许),同时不会受到Copyleft特性的许可证强制对软件开源的限制。该许可证常被用于一些(但不是全部)GNU程序库。
MIT
MIT许可协议之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X许可协议”(X License)或“X11许可协议”(X11 License)
目前限制最少的开源许可协议之一(比 BSD 和 Apache 的限制都少),只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。
BSD
BSD 许可协议(Berkeley Software Distribution license),是自由软件中使用最广泛的许可协议之一。伯克利软件包(Berkeley Software Distribution,缩写:BSD) 就是遵照这个许可证来发布,也因此而得名 BSD 许可协议。
当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
- 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议
- 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议
- 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
EPL
Eclipse公共许可证(简称EPL,Eclipse Public License 1.0)是一种开源软件许可证由Eclipse基金会应用于名下的集成开发环境Eclipse上。EPL代替了原来的通用公共许可证(Common Public License,简称CPL),在其基础上删除了专利相关的条款。
EPL是为适合商业应用的自由软件所量身定制的许可证,其反著作权限定也比现时的GNU通用公共许可证(GNU GPL)等自由软件软件许可证更为松弛:在使用以EPL授权的程序时,用户有权使用、修改、复制与传播软件原始版本和修改后版本,在某些情况下则必须将修改内容一并发布
使用EPL协议,需要遵守以下规则:
- 当一个Contributors将源码的整体或部分再次开源发布的时候,必须继续遵循EPL开源协议来发布,而不能改用其他协议发布.除非你得到了原”源码”Owner 的授权;
- EPL协议下,你可以将源码不做任何修改来商业发布.但如果你要发布修改后的源码,或者当你再发布的是Object Code的时候,你必须声明它的Source Code是可以获取的,而且要告知获取方法;
- 当你需要将EPL下的源码作为一部分跟其他私有的源码混和着成为一个Project发布的时候,你可以将整个Project/Product以私人的协议发布,但要声明哪一部分代码是EPL下的,而且声明那部分代码继续遵循EPL;
- 独立的模块(Separate Module),不需要开源。
MPL
Mozilla公共许可证(英语:Mozilla Public License,简称MPL)是个自由、开源、详细的软件许可证,由Mozilla基金会开发并维护。该协议融合了BSD许可证和GNU通用公共许可协议的特性,追求平衡专有软件和开源软件开发者之间的顾虑。
MPL用于Mozilla Firefox、Mozilla Thunderbird及其他Mozilla软件的许可,但也被其他产品所用,如Adobe以此为Flex产品线许可,还有LibreOffice 4.0(同时使用LGPL 3+)。
开源协议之图解
之一
之二
之三
之四
知识共享协议
知识共享协议内容比较简单,知乎上有人总结得很好,这里就贴上一篇写得很好的文章:
参考资料
- https://www.gcssloop.com/tips/choose-license
- https://www.runoob.com/w3cnote/open-source-license.html
- https://www.cnblogs.com/Wayou/p/how_to_choose_a_license.html
- https://zhuanlan.zhihu.com/p/78998314
- https://zh.wikipedia.org/wiki/MIT許可證
- https://zh.wikipedia.org/wiki/BSD许可证
- https://zh.wikipedia.org/wiki/GNU宽通用公共许可证
- https://zh.wikipedia.org/wiki/GNU通用公共许可证
- https://zh.wikipedia.org/wiki/Apache许可证