常见的开源许可证介绍,程序员必看

开源
根据开源许可证授权的限制程度,可以将开源许可证从宽松到严格进行排序。

根据开源许可证授权的限制程度,可以将开源许可证从宽松到严格进行排序:

  1. 最宽松的是BSD许可证、MIT许可证、Apache许可证、ISC许可证等,这些许可证授权几乎没有任何限制,允许自由地使用、修改、复制和分发软件,同时允许将软件用于商业和非商业目的,只要在软件的副本中包含许可证和版权声明即可。
  2. 接下来是MPL许可证和LGPL许可证,这些许可证要求将修改后的代码以同样的许可证进行发布,并且要求在修改后的代码中包含原始代码的授权和版权信息,但不要求将整个项目以同样的许可证进行发布。
  3. GPL许可证、AGPL许可证和CPL许可证相对严格,这些许可证要求将整个项目以相同的许可证进行发布,即使只是使用软件的一部分,也必须以相同的许可证进行发布。此外,这些许可证还要求修改后的代码必须公开发布。

接下来详细说下每种开源许可证。

MIT许可证

MIT许可证是一种非常宽松的开源许可证,允许将软件用于商业和非商业用途,并且允许修改、分发和私有化软件。MIT许可证是一种BSD风格许可证,也被称为X11许可证,因为它最初是为了MIT X Window System编写的。

MIT许可证的主要条款包括以下内容:

  1. 每份复制或者重用必须包含版权声明和许可声明;
  2. 对于使用本软件的风险,作者不承担任何责任;
  3. 允许在商业和非商业用途中自由使用、复制、修改、合并、出版发行本软件及其衍生品,以及允许对软件进行私有化。

由于MIT许可证的开放性和灵活性,它已经成为了许多重要开源软件项目的许可证,如Node.js、Ruby on Rails、jQuery等。

Apache许可证

Apache许可证由Apache软件基金会发布。它是一种类似于MIT和BSD许可证的非常宽松的许可证,允许用户自由使用、分发和修改软件,包括用于商业用途。

Apache许可证的主要条款包括以下内容:

  1. 允许在商业和非商业用途中自由使用、复制、修改和分发本软件及其衍生品;
  2. 对于使用本软件的风险,作者不承担任何责任;
  3. 每份复制或者重用必须包含版权声明和许可声明;
  4. 在任何衍生品中包含的代码,必须包含原始许可证、版权声明和作者声明;
  5. 如果修改了代码,必须说明修改的内容。

Apache许可证不同于MIT和BSD许可证的地方在于,Apache许可证对使用Apache软件的企业和组织有一些特定的要求。例如,如果一个组织使用Apache软件作为其产品的一部分,那么该组织必须在其产品中包含原始Apache许可证,以及对Apache软件的贡献说明。但是,这些要求对于个人用户来说并不适用。

由于Apache许可证的灵活性和开放性,它也成为了许多重要的开源软件项目的许可证,如Apache Web服务器、Hadoop、Lucene、Tomcat等。

BSD许可证

BSD许可证同样是一种非常宽松的开源许可证,由加州大学伯克利分校发布。BSD许可证是一种开放源代码许可证,允许用户自由使用、分发和修改软件,包括用于商业用途。

BSD许可证的主要条款包括以下内容:

  1. 允许在商业和非商业用途中自由使用、复制、修改和分发本软件及其衍生品;
  2. 对于使用本软件的风险,作者不承担任何责任;
  3. 每份复制或者重用必须包含版权声明和许可声明;
  4. 在任何衍生品中包含的代码,必须包含原始许可证、版权声明和作者声明;
  5. 不允许使用作者的名称、标志或其他标识来推销或宣传产品或服务。

BSD许可证的开放性和灵活性使得它成为了许多重要开源软件项目的许可证,如FreeBSD、NetBSD、OpenBSD等操作系统,以及许多其他软件工具和库。

GPL许可证

GPL许可证全称为GNU通用公共许可证(GNU General Public License)。它是由自由软件基金会(Free Software Foundation)发布的一种许可证,是自由软件运动的核心组成部分。

GPL许可证的主要特点是强调代码的开放性和共享性,保障用户对于软件的自由和知情权。在使用GPL许可证的软件中,任何人都可以自由地使用、复制、分发和修改软件,并且必须在任何派生作品中保留相同的许可证,即使是商业用途也不能例外。这意味着,任何修改后的代码必须遵守相同的GPL许可证。

GPL许可证的主要条款包括以下内容:

  1. 任何人都可以免费使用、复制、分发和修改本软件;
  2. 任何修改后的软件必须同样使用GPL许可证发布,并保证在任何派生作品中保留相同的许可证;
  3. 在任何派生作品中,必须包含原始代码的版权声明和GPL许可证;
  4. 在使用本软件的过程中,不能对用户施加额外的限制或收费;
  5. 任何对本软件的修改、衍生作品或其他基于本软件的作品,都必须公开发布其源代码。

GPL许可证的开放性和强制性使得它成为了许多自由软件项目的首选许可证,如Linux操作系统、GCC编译器、Emacs文本编辑器等。同时,它也因为其严格的条款限制了商业软件厂商对于开源软件的利用和修改,引起了一些争议。

LGPL许可证

LGPL许可证是GNU Lesser General Public License的缩写,中文名为GNU宽通用公共许可证。它是自由软件基金会(Free Software Foundation)发布的一种开源软件许可证。

LGPL许可证和GPL许可证有些类似,也是一种强制要求源代码开放的许可证。但与GPL许可证不同的是,LGPL许可证允许在非开源软件中使用或者链接LGPL许可证的代码库,而不要求整个程序必须遵循LGPL许可证。这就为使用LGPL许可证的开源软件提供了更多的商业应用机会,可以在商业软件中使用或者链接开源软件库而不用担心版权问题。

LGPL许可证的主要特点包括:

  1. 允许在LGPL许可证的代码库中嵌入专有软件;
  2. 允许商业软件通过动态链接的方式使用LGPL许可证的代码库;
  3. 修改LGPL许可证的代码库后必须公开发布修改后的代码;
  4. 在发布LGPL许可证的代码库时必须同时提供源代码;
  5. 使用LGPL许可证的代码库必须保留原始的版权信息和许可证信息。

LGPL许可证通常用于开发一些重要的软件库,例如GStreamer多媒体框架、GTK+图形用户界面工具包、Qt等。由于LGPL许可证的开放性和允许商业应用,它比GPL许可证更适合一些商业公司和组织在开源软件项目中的参与和贡献。

AGPL许可证

AGPL许可证是GNU Affero General Public License的缩写,中文名为GNU Affero通用公共许可证。它是自由软件基金会(Free Software Foundation)发布的一种开源软件许可证。

AGPL许可证是基于GPL许可证的一种衍生许可证,和GPL许可证一样,要求在使用、修改和分发源代码时必须公开源代码和任何修改,但与GPL许可证不同的是,AGPL许可证还要求在通过计算机网络进行软件的交互或者传输时,也必须公开源代码。

AGPL许可证的主要特点包括:

  1. 允许在AGPL许可证的代码库中嵌入专有软件;
  2. 允许商业软件通过动态链接的方式使用AGPL许可证的代码库;
  3. 修改AGPL许可证的代码库后必须公开发布修改后的代码;
  4. 在发布AGPL许可证的代码库时必须同时提供源代码;
  5. 当通过计算机网络进行软件的交互或者传输时,必须公开源代码和任何修改;
  6. 使用AGPL许可证的代码库必须保留原始的版权信息和许可证信息。

AGPL许可证的适用范围主要是Web应用程序和基于云计算的软件服务。由于云计算的本质就是通过计算机网络进行软件的交互和传输,因此AGPL许可证的要求更严格,可以防止商业公司或者组织通过云计算方式使用开源软件而不公开源代码。AGPL许可证也被称为“服务端GPL”,因为它扩展了GPL许可证的要求,适用于一些需要通过计算机网络进行软件传输和交互的场景。

MPL许可证

MPL许可证是Mozilla Public License的缩写,中文名为Mozilla公共许可证。它是由Mozilla基金会发布的一种开源软件许可证。

MPL许可证是一种软件许可证,它允许开发者在开源协议下分发他们的软件,同时也允许他们以专有软件的形式进行销售。MPL许可证主要基于GPL许可证,但与GPL许可证不同的是,MPL许可证还包含一些商业软件的要求,如要求保留原始的版权信息和许可证信息、禁止使用商标等。

MPL许可证的主要特点包括:

  1. 允许商业软件的销售和使用;
  2. 在分发MPL许可证的软件时必须提供源代码;
  3. 允许使用MPL许可证的软件和其他软件进行链接和集成;
  4. 对衍生的代码和文件采取相对灵活的要求,可以根据需要进行修改;
  5. 在使用MPL许可证的软件中使用商标需要得到授权。

MPL许可证适用于需要在保持开源的前提下,允许商业软件的销售和使用的项目,如Mozilla Firefox等。与GPL许可证不同的是,MPL许可证并没有强制要求开发者将其软件以GPL许可证的方式发布,这使得MPL许可证更加灵活,适用范围更广。

CDDL许可证

CDDL许可证是Common Development and Distribution License的缩写,中文名为通用开发和分发许可证。它是由Sun公司(现为Oracle公司)发布的一种开源软件许可证,主要用于Java平台的开发和分发。

CDDL许可证是一种复杂的许可证,它在允许用户自由地使用、复制和分发软件的同时,还对软件的衍生品作出了严格的要求。CDDL许可证要求所有使用或分发源代码或二进制文件的项目都必须使用CDDL许可证,并且必须公开其源代码。

CDDL许可证的主要特点包括:

  1. 允许商业软件的销售和使用;
  2. 在分发CDDL许可证的软件时必须提供源代码;
  3. 允许使用CDDL许可证的软件和其他软件进行链接和集成;
  4. 要求对衍生的代码和文件采取相对严格的要求,需要使用相同的CDDL许可证;
  5. 与MPL许可证类似,CDDL许可证要求使用商标需要得到授权。

CDDL许可证适用于需要在保持开源的前提下,允许商业软件的销售和使用的项目,特别是Java平台的开发和分发。CDDL许可证和MPL许可证有很多相似之处,但CDDL许可证对衍生品的要求更加严格,因此可能不适合所有的开源项目。

EPL许可证

EPL许可证是Eclipse Public License的缩写,中文名为Eclipse公共许可证。它是一种开源软件许可证,主要用于Eclipse平台的开发和分发。

EPL许可证是一种非常灵活的许可证,它在允许用户自由地使用、复制和分发软件的同时,还允许用户将软件用于商业目的,并且可以在闭源的情况下使用和分发软件。EPL许可证要求所有使用或分发源代码或二进制文件的项目都必须使用EPL许可证,并且必须公开其源代码。

EPL许可证的主要特点包括:

  1. 允许商业软件的销售和使用;
  2. 在分发EPL许可证的软件时必须提供源代码;
  3. 允许使用EPL许可证的软件和其他软件进行链接和集成;
  4. 允许在闭源的情况下使用和分发软件;
  5. 要求使用商标需要得到授权。

EPL许可证适用于需要在保持开源的前提下,允许商业软件的销售和使用的项目,特别是Eclipse平台的开发和分发。EPL许可证是一种非常灵活的许可证,适用范围广泛,被广泛应用于开源软件项目和商业软件项目中。

ISC许可证

ISC许可证是一种类似于BSD许可证的开源软件许可证,它的全称是Internet Systems Consortium许可证。该许可证最初由Internet Systems Consortium(ISC)创建,是ISC开发的软件和工具的标准许可证。

ISC许可证是一种非常简洁明了的许可证,主要包括以下几个方面:

  1. 允许复制、使用和分发源代码和二进制文件;
  2. 允许将源代码或二进制文件用于商业或非商业用途;
  3. 要求在源代码的所有副本和衍生产品中包含原始许可证和版权声明;
  4. 不提供任何明示或暗示的担保和保证。

和BSD许可证类似,ISC许可证的主要特点是非常灵活和简洁,没有对用户和使用者的限制,同时也不对软件的衍生产品做限制,因此被广泛应用于开源软件中。ISC许可证的主要优点是可以在商业和非商业项目中使用,并且没有对衍生产品做出太多的限制,非常适合需要灵活性的项目。

Artistic许可证

Artistic许可证是由Perl编程语言的创始人Larry Wall创造的,旨在保护Perl语言和它的相关模块和工具。该许可证经过多次修改和改进,现在已经成为开源软件界中一种非常常见的许可证。

Artistic许可证的主要特点包括:

  1. 允许自由地复制、使用和分发软件;
  2. 允许对软件进行修改和衍生,并在衍生品中使用原始软件的代码;
  3. 要求在软件的所有副本和衍生品中包含版权和许可证声明;
  4. 允许将软件用于商业和非商业目的;
  5. 不提供任何明示或暗示的担保和保证。

与GPL、LGPL等许可证不同,Artistic许可证没有要求将衍生品同样开源,因此被认为是一种更为宽松的许可证。该许可证最初被广泛应用于Perl和其他Perl模块和工具的开发和分发,后来也被应用于其他开源软件项目。现在,Artistic许可证已经发展成为了两个版本:Artistic License 1.0和Artistic License 2.0,其中后者更为现代化和灵活。

CPL许可证

CPL(Common Public License)是一种开源软件许可证,由IBM公司创建,是在MPL 1.1的基础上进行修改而成的。CPL许可证最初发布于2001年,现在已被认为是一种已过时的许可证,可以不用了解。

责任编辑:华轩 来源: 今日头条
相关推荐

2017-11-01 15:20:55

开源开源许可证

2011-05-05 09:41:56

开源软件许可证

2014-04-04 10:07:46

ApacheWinJS

2013-07-17 10:16:57

Github项目许可证

2014-07-09 10:53:58

软件许可证

2019-09-30 07:04:56

开源道德条款开发者

2018-08-24 09:32:15

开源技术 项目

2021-03-01 15:48:17

开源Open Source开源许可证

2016-11-16 13:38:06

开源Linux代码

2013-05-20 09:02:34

GitHub开源许可证

2012-11-12 09:34:03

SDNOpenStackCloudStack

2009-02-19 16:38:43

虚拟化Novell微软

2009-07-23 09:25:28

SaaS成本

2022-02-16 18:21:33

程序员跳槽架构

2011-08-04 10:32:33

Ruby 1.9.3BSD 许可证

2021-01-21 12:25:08

Elastic开源社区许可证变更

2009-03-26 16:50:43

Linux开源ESR

2021-08-24 15:10:01

Dapr工具库应用程序

2010-08-24 09:49:05

虚拟化

2019-05-16 10:59:26

云计算电子化罗德岛州
点赞
收藏

51CTO技术栈公众号