不同类型的开源许可证
什么是开源许可证
最简单的解释是,开源许可证是计算机软件和其他产品的许可证,允许在定义的条款和条件下使用、修改或共享源代码、蓝图或设计。开源并不意味着该软件可以根据需要使用、复制、修改和分发。根据开源许可证的类型,我们可能可以修改源代码以满足我们的需求或修复任何问题。许可证将决定我们对软件及其源代码的自由。
在讨论开源许可证时,不考虑出于个人用途而进行的非商业重新分发或源代码修改。但作为开发人员和用户,我们绝对必须了解这些开源许可证以及这些用途。因此,请继续阅读本文,了解最常见的许可证以及它们如何寻求保护软件的作者和用户。
不同的开源许可证:Copyleft 和 Permissive
目前有超过 200 个开源许可证,但一般来说,它们都分为两个主要类别。这些是Permissive(许可)和Copyleft(拥有著作权)。
Permissive
Permissive允许我们以最小的限制复制、修改、重新组合和重新分发作品。通常,用户在重新分发许可软件时只需要包含“原始版权声明”和“许可文本的副本”。
最流行的许可式开源许可证是Apache、MIT、BSD。
Apache
Apache许可证是 Apache 软件基金会 (ASF) 发布的开源许可证。
1995 年 Apache Group 发布了其许可证的第一个版本,并于 2004 年发布了 Apache License 2.0 版。
在 Apache License 下,我们可以自由地使用、修改、分发和销售软件,而无需担心软件的使用情况。
如果我们想重新分发带有 Apache 许可组件的软件,那么我们只需在我们修改的所有文件中添加“许可证副本”、“明确的 Apache 归属”和“修改通知”即可。
与其他Permissive许可证不同,此 Apache 许可证明确向用户授予可应用于版权和专利的权利(Apache 许可证描述了实践代码贡献者专利声明的权利)。
Apache License 2.0 等宽松的开源许可证越来越受欢迎。
MIT
MIT许可证是由麻省理工学院创建的开源许可证。
在MIT许可证下,我们可以自由修改和分发软件的代码,只要添加“原始版权声明”和“许可证本身的副本”。
尽管 MIT 许可证非常简单、简短,但一些开发人员尽量避免这样做,因为它没有明确授予专利权。
jQuery、Node.js、Lua、Ruby on Rails、X Windows System (X11)都使用了 MIT。
BSD
加州大学伯克利分校于 1980 年创建了BSD 许可证的第一个版本。目前,BSD 许可证有三种变体(原始 BSD 许可证、修改版 BSD 许可证 — 3 条款和简化 BSD 许可证/FreeBSD 许可证 — 2 条款)。
在BSD许可证下,我们可以自由地修改和分发源代码或二进制格式的软件代码,只要包含“许可证全文”和“原始版权声明”。
Quill、level DB、D3.js等都使用了BSD 3-Clause License。
尽管 BSD 许可证看起来与 MIT 许可证相同,但目前 BSD 许可证不如其他许可许可证(如 MIT 和 Apache License 2.0)受欢迎。
Permissive 许可用例
最近的趋势表明,多年来软件开发人员倾向于使用 Permissive 许可证而不是 Copyleft 许可证。选择 Permissive 许可证而不是 Copyleft 许可证的原因有很多:
-
获得个人、企业的更多贡献并最大化软件的使用:
当考虑到希望将代码用于商业目的的公司的角度时,他们通常更喜欢宽松的许可证而不是 Copyleft,因为在宽松的许可证下,他们将能够将其衍生作品转化为专有作品并将其用于商业目的。 -
保护代码很少的软件包:
自由软件基金会(FSF)建议对少于 300 行的软件使用Permissive 许可证。因此,根据 FSF 的建议,具有 Permissive 许可证的小型软件比 Copyleft 许可证吸引更多的开发人员。 -
如果软件的目的不是为了赚钱:
就个人而言,如果有人不想赚取利润,但想创建有价值的软件,最好的办法是使用许可许可证。
Copyleft 许可证
Copyleft许可证还为我们提供与Permissive 许可证相同的权限。但它要求我们在 Copyleft 许可下发布完整的作品。换句话说,如果我们在 Copyleft 许可证(例如 GPL)下发布软件库,并且其他人想要将我们的软件库与另一个专有库一起使用,他们将不会被允许这样做。需要 GPL 才能在 GPL 许可证下构建整个程序。
GNU 通用公共许可证 (GPL)
GPL 许可证是最流行的开源许可证。自由软件基金会 (FSF) 的创始人 Richard Stallman 编写了 GPL 许可证,以保护 GNU 软件免于成为专有软件。
如果我们在软件中使用了 GPL 组件,则意味着我们的整个软件被视为“基于 GPL 的作品”,因为:
我们无权要求该软件的专利或版权。此外,我们还有义务“显示版权声明”、“免责声明”、“完整的 GPL 声明”和“GPL 副本”。
我们无权更改许可或添加附加条款和条件。
我们有互惠义务。换句话说,我们有义务发布源代码以及修改和分发整个代码的所有权利。
Red Hat、GIMP、Unix shell Bash使用GPL v3 许可证。
尽管 Copyleft 许可证不如 Permissive 许可证受欢迎,但 GPL 许可证仍然在开源生态系统中发挥着至关重要的作用。
Affero GPL (AGPL)
顾名思义,Affero GPL是 GNU GPL 的一部分,包括 LGPL、GPL v2、GPL v3。所有这些许可证都是 Richard Stallman 的 GNU 项目的一部分。
Henry Poole 和 Stallman 认为GPL 中存在“应用服务提供商(ASP)漏洞”。然后克服了这个问题,关于 AGPL 许可证的想法就建立了。
AGPL 许可证基于 GPL v3,并且 AGPL 许可证具有与 GPL v3 相同的要求。但它还有一个关于通过网络进行远程访问的附加声明。
GNU 项目建议任何程序员在其软件通过网络运行时使用 AGPL 许可证。然而,AGPL 并不是一个很流行的开源许可证。目前,它只使用了不到所有开源项目的 1%。
Copyleft 许可证用例
目前,许可许可证是开源软件中最常用的许可证类型。但我们不能忘记 Copyleft 许可证也发挥着至关重要的作用。GPL 系列被认为是最常用的 OSS 许可证之一,因为例如 Linux 内核也是使用 Copyleft 许可证开发的。
如果我们的公司使用 Copyleft 开源许可证开发一个程序并分发该程序,则任何人都可以修改和使用它。但公司可以随时更改这些内容,并且这些更改必须公开。因此,如果我们满足以下条件,Copyleft 许可证可能最适合我们的软件:
- 希望与开源社区分享我们的改进。
- 喜欢在构建软件时与他人协作。
- 想要将项目商业化并赚取利润。
- 不想让其他人使用我们的代码来制作专有软件。
结论
本文解释一下令人困惑的开源许可证,并尝试简化200多个许可证中的几个开源许可证。这仅用于讲解目的,我们可以自行研究以找出我们应该选择的最佳开源许可证。