最近看到B站有人用pyqt5被发律师函,于是对开源协议产生了一些兴趣,对网络相关热门帖子结合协议官网整理归纳一下,简单了解一下开源协议,如有错误请评论指正,感谢。
提及的协议有:GPL、LGPL、BSD、MIT、Apache License 2.0。
0. 基本概念
0.1. Copyleft和Copyright
Copyleft和Copyright是两种截然相反的版权所有方式。copyright的英文本意是版权©️。copyleft现在被译为公共版权或非盈利版权。
Copyright:版权所有,即软件的一切权利归软件作者私有。
软件的版权和其它一切权利归软件作者所私有。用户只有使用权,没有其它权利,包括没有复制软件的权利。
Copyleft:是一种让程序或其它作品保持自由的通用方法,它要求所有对 Copyleft 程序的修改和扩展都保持自由。但该规则仅与GNU相关。
Copyleft 是指任何人都可以重新分发软件,不管有没有进行修改,但必须同时保留软件所具有的自由特性。Copyleft是为了保证所有用户都拥有自由的权利。
一个程序遵循 Copyleft,我们首先声明它是有版权的;然后,我们给它加上发布的规则,这个规则就是一个法律声明,它赋予所有人有使用、修改和重新发布程序的代码 及其衍生作品 的权利,但要求在这个过程中发布规则是不可以改变的。这样的话,代码和自由权利在法律上就不可分割了。
0.2. 其他
复制(Copy):将软件复制到你的电脑,你客户的电脑,或者任何地方。
分发(Distribution):在网站供他人下载,拷贝到U盘送人。
商用(Commercial use):盈利,在分发软件的时候收费。
修改(Modification):添加或删除某个功能,在别的项目中使用部分代码等。
专利使用(Patent use):用于申请专利。
个人使用(Private use):供私人使用,基本都支持。
下面的介绍中权利部分严格按照以上概念进行,但通常带“自由”字眼的并非完全自由,有相应的规则加以限制,本文也会略微提到。
开源:开源软件最大的特点是开放而不是免费,也就是任何人都可以得到软件的源代码,加以修改学习,甚至重新发放,但需要在版权限制范围之内。
1. GPL(GNU General Public License)
GNU 通用公共许可证 (GPL),目前共有3个版本,分别为GPLv1、GPLv2、GPLv3(最新)。
GNU 通用公共许可证有以下几种格式:HTML、纯文本、ODF、Docbook v4或者v5、Texinfo、LaTeX、Markdown和RTF。这些文档的格式不是为了单独发布使用,它们的目的是嵌入其他文档。
GPL提供的权利主要有:自由复制、自由分发、“自由”修改、盈利、专利使用。
注意:
- 盈利收费前向你的客户提供该软件的GPL许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
- 修改时,使用了这段代码的项目也必须使用 GPL 协议。
- 分发时,软件自始至终都以开放源代码形式发布,无论软件以何种形式发布,都必须同时附上源代码。
- GPLv3允许专利使用。
总结:
GPL 大致就是一个Copyleft的体现。你可以去掉所有原作的版权信息,只要你保持开源,并且随源代码、二进制版附上GPL的许可证就行。开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。
2. LGPL(GNU Lesser General Public License)
GNU宽通用公共许可证 (GNU LGPL),其最新版本号是3。它对产品所保留的权利比 GPL 少。
GNU 宽通用公共许可证文本有以下格式:HTML、纯文本、Docbook、Texinfo、Markdown、ODF和RTF。这些文档的格式不是为了单独发布使用,它们的目的是嵌入其他文档。
LGPL提供的权利:自由复制、自由分发、自由修改、盈利。
与GPL大致相同,但条件上有差异:
- GNU不建议使用LGPL,因为LGPL许可证允许专有软件使用该函数库;而普通的GNU GPL只允许在自由软件中使用该函数库。
- LGPL不要求其它使用LGPL授权代码的软件以LGPL方式发布。
- LGPL软件可以被转换成GPL,这种特性对于在GPL库或应用程序中直接使用LGPL程序有一定程度的帮助。
总结:
使用普通GPL的函数库给予自由软件开发者一个超越专有软件开发者的优势:能够使用按照普通GPL发布的函数库,而专有软件的开发者不能使用这些库。
使用LGPL的常见情况是当专有软件可以通过其他函数库来实现使用自由软件函数库的功能时,该函数库便对自由软件没有任何独有优势,此时采用LGPL。
3. BSD (Berkeley Software Distribution)
BSD,即伯克利软件分发许可协议。BSD协议的出发点是鼓励代码重用,可以将公开的资源纳入私人软件并使用闭源的形式进行出售,但是需要尊重代码作者的著作权。通常有BSD 3-Clause (又称”New BSD License”或”Modified BSD License”), BSD 2-Clause(又称”Simplified BSD License”或”FreeBSD License”。
新 BSD 协议在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单 BSD 协议删除了这一条款。
BSD提供的权利:自由复制、自由分发、自由修改、盈利。
注意:
- BSD不允许专利使用。
- 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。如果再发布的只是二进制类库 / 软件,则需要在类库 / 软件的文档和版权声明中包含原来代码中的 BSD 协议。
- BSD 3-Clause不可以用开源代码的作者 / 机构名字和原来产品的名字做市场推广。
总结:
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
4. MIT (Massachusetts Institute of Technology)
MIT 许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称「X 条款」(X License)或「X11 条款」(X11 License)
MIT 内容与三条款 BSD 许可证(3-clause BSD license)内容颇为近似,但是赋予软体被授权人更大的权利与更少的限制。
MIT 条款可与其他授权条款并存。另外,MIT 条款也是自由软体基金会(FSF)所认可的自由软体授权条款,与 GPL 相容。
MIT提供的权利:自由复制、自由分发、自由修改、盈利。
注意:
- 该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。
- 此授权条款并非属 copyleft 的自由软体授权条款,允许在自由 / 开放源码软件或非自由软件(proprietary software)所使用。
- 不允许专利使用。
总结:
MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
5. Apache License 2.0
Apache License 2.0是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
Apache License 2.0提供的权利:自由复制、自由分发、自由修改、盈利、专利使用。
注意:
- 一旦被授权,永久拥有。
- 在一个国家获得授权,适用于所有国家。
- 授权免费,且无版税。
- 任何人都可以获得授权。
- 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。
- 分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。
- 如果修改了代码,需要在被修改的文件中说明。并且在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
- 如果再发布的产品中包含一个 Notice 文件,则在 Notice 文件中需要带有 Apache Licence。你可以在 Notice 中增加自己的许可,但不可以表现为对 Apache Licence 构成更改。
总结:
Apache 协议 2.0 和除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合。