什么是开源许可证 开源协议有哪些

摘要:开源许可证(Open Source License)是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权软件。版权法默认禁止共享,也就是说,没有许可证的软件,就等同于保留版权,虽然开源了,用户只能看看源码,不能用,一用就会侵犯版权。所以软件开源的话,必须明确地授予用户开源许可证。

开源许可证(Open Source License)是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权软件。

版权法默认禁止共享,也就是说,没有许可证的软件,就等同于保留版权,虽然开源了,用户只能看看源码,不能用,一用就会侵犯版权。所以软件开源的话,必须明确地授予用户开源许可证。

开源许可证

目前,国际公认的开源许可证大概有 80 多种。它们的共同特征是,都允许用户免费地使用、修改、共享源码,但是都有各自的使用条件。

乌克兰程序员 Paul Bagwell,画了一张分析图,由阮一峰老师翻译后的中文,说明了原始作者应该怎么选择哪种开源协议。

什么是开源许可证 开源协议有哪些

注意,上图中 "修改源码" 指的是修改原始作者的代码或衍生代码,"新增代码" 指的是使用者编译的代码里,没有使用到源码或衍生代码,然后把它放在单独的文件中,通过类库引用(link)方式使用源码库。

由宽松到严紧排序,常用的开源许可证有:MIT、BSD、Apache、LGPL、Mozilla 和 GPL 等。

  • MIT、BSD 许可证都源自大学,体现了简单、开放和包容的特点。
  • MIT、BSD、Apache 三者都支持闭源的后续开发。
  • GPL、LGPL、Mozilla 传染性开源,编译的代码里使用了原始作者的代码或衍生代码,都必须开源。

如果一种开源许可证没有任何使用条件,连保留作者信息都不需要,那么就等同于放弃版权了。这时,软件可以直接声明进入 "公共领域"(public domain)。

根据使用条件的不同,开源许可证分成两大类。

  • 宽松式(permissive)许可证
  • Copyleft 许可证

宽松式许可证

特点

宽松式许可证(permissive license)是最基本的类型,对用户几乎没有限制,用户可以修改代码后闭源。它有三个基本特点。

(1) 没有使用限制

用户可以使用代码,做任何想做的事情。

(2) 没有担保

不保证代码质量,用户自担风险。

(3) 披露要求(notice requirement)

用户必须披露原始作者。

常见许可证

常见的宽松式许可证有四种。它们都允许用户任意使用代码,区别在于要求用户遵守的条件不同(对用户的限制从最弱到最强排序)。

(1) MIT

MIT 许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),作者只想保留版权,而无其它任何限制。

也就是说,分发软件时,必须保留原始的许可证声明,无论是以二进制发布的还是以源代码发布的。

(2) BSD(二条款版)

BSD(Berkeley Software Distribution,伯克利软件发行)是 Unix 的衍生系统,在 1977 至 1995 年间由加州大学伯克利分校开发和发布的。

由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。

而很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

分发软件时,必须保留原始的许可证声明,与 MIT 基本一致。

(3) BSD(三条款版)

分发软件时,必须保留原始的许可证声明,不得使用原始作者的名字为软件促销。

(4) Apache

Apache Licence 是著名的非盈利开源组织 Apache(阿帕奇)采用的协议。该协议和 BSD 类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布作为开源或商业软件。

  • 分发软件时,必须保留原始的许可证声明;
  • 凡是修改过的文件,必须向用户说明该文件修改过;
  • 没有修改过的文件,必须保持许可证不变。

Copyleft 许可证

特点

Copyleft 是理查德·斯托曼发明的一个词,作为 Copyright (版权)的反义词。

Copyright 直译是 "复制权",这是版权制度的核心,意为不经许可,用户无权复制。作为反义词,Copyleft 的含义是不经许可,用户可以随意复制。

但是,它带有前提条件,比宽松式许可证的限制要多。

  • 如果分发二进制格式,必须提供源码;
  • 修改后的源码,必须与修改前保持许可证一致;
  • 不得在原始许可证以外,附加其它限制。

上面三个条件的核心就是:修改后的 Copyleft 代码不得闭源。

常见许可证

常见的 Copyleft 许可证也有四种,对用户的限制从最强到最弱排序,分别是 AGPL、GPL、Mozilla、LGPL。

(1) GPL

GNU 通用公共许可证(GNU General Public License)简称为 GPL,是由 FSF(自由软件基金会)发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件,大多数的 GNU 程序和超过半数的自由软件使用它。

  • GNU(GNU's Not Unix!)是一个自由的类 Unix 操作系统,其内容软件完全以 GPL 方式发布,创建一套完全自由的操作系统 GNU 是 GNU 计划的主要目标。
  • 自由软件基金会(Free Software Foundation,FSF)是一个致力于推广自由软件的美国民间非营利性组织,其主要工作是执行 GNU 计划,开发更多的自由软件。
  • 我们通常所说的 Linux,是指 GNU/Linux ,即采用 Linux 内核的 GNU 操作系统。

GPL 协议的主要内容是,只要在一个软件中使用("使用" 指类库引用、修改后的代码或衍生代码)GPL 协议的产品,则该软件产品必须也采用 GPL 协议,不允许作为闭源的商业软件发布和销售。

如果项目包含了 GPL 许可证的代码,那么整个项目都必须使用 GPL 许可证,即开源和免费。

(2) LGPL

GNU 宽通用公共许可证(GNU Lesser General Public License)简称为 LGPL,是一个为 "类库引用" 设计的开源协议,被用于一小部分(不是全部)的 GNU 库。

此种授权之出现,是为了在 GPL 与宽松式许可证(如 MIT、BSD)间取得折冲。

  • 如果修改 LGPL 协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用该协议。
  • 如果商业软件是通过类库引用(link)方式,使用 LGPL 类库,则商业软件可以不用开源。

因此 LGPL 协议的开源代码,适合作为第三方类库被商业软件引用。但不适合以 LGPL 协议代码为基础,通过修改和衍生的方式,做二次开发的商业软件采用。

(3) AGPL(Affero GPL)

GNU Affero 通用公共许可证(GNU Affero General Public License)简称为 AGPL,是 GPL 的一个补充,在 GPL 的基础上加了一些限制。

由于历史局限性,GPL 许可证在发布当年,并没有覆盖云服务(即 SaaS)的使用场景,使得云服务可以合法绕过其强制开源条款,向用户提供服务,间接促成了 Linux 在服务器领域的繁荣。

十余年后出现了试图亡羊补牢,却于事无补的 AGPL 许可证,它规定如果云服务用到的代码是该许可证,那么云服务的代码也必须开源。

SaaS(Software-as-a-Service),意思为软件即服务,即通过网络提供软件服务。

SaaS 平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得 Saas 平台供应商提供的服务。

(4) Mozilla(MPL)

MPL(Mozilla Public License)是 1998 年初 Netscape(网景)的 Mozilla 小组为其开源软件项目设计的软件许可证。

它规定只要该许可证的代码在单独的文件中,新增的其它文件可以不用开源。如果对源码修改过,需要提供说明文档。

常见问题

本节回答一些开源许可证的常见问题。

什么是披露要求

所有的开源许可证都带有 "披露要求"(notice requirement),即要求软件的分发者必须向用户披露,软件里面有开源代码。

一般来说,你只要在软件里面提供完整的原始许可证文本,并且披露原始作者,就满足了 "披露要求"。

什么是分发(distribution)

除了 Affero GPL (AGPL) ,其它许可证都规定只有在 "分发" 时,才需要遵守许可证。换言之,如果不 "分发",就不需要遵守。

简单说,分发就是指将版权作品从一个人转移到另一个人。这意味着,如果你是自己使用,不提供给他人,就没有分发。另外,这里的 "人" 也指 "法人",因此如果使用方是公司,且只在公司内部使用,也不需要遵守许可证。

云服务(SaaS)是否构成 "分发" 呢?答案是不构成。所以你使用开源软件提供云服务,不必提供源码。但是,Affero GPL(AGPL)许可证除外,它规定云服务也必须提供源码。

开源软件的专利如何处理

某些许可证(Apache 2 和 GPL v3)包含明确的条款,授予用户许可,使用软件所包含的所有专利。

另一些许可证(BSD、MIT 和 GPL v2)根本没提到专利。但是一般认为,它们默认给予用户专利许可,不构成侵犯专利。

总得来说,除非有明确的 "保留专利" 的条款,使用开源软件都不会构成侵犯专利。

GPL 病毒是真的吗

GPL 许可证规定,只要你的项目包含了 GPL 代码,整个项目就都变成了 GPL,有人把这种传染性比喻成 "GPL 病毒"。

很多公司希望避开这个条款,既使用 GPL 软件,又不把自己的专有代码开源。理论上,这是做不到的。因为 GPL 的设计目的,就是为了防止出现这种情况。

但是实际上,不遵守 GPL,最坏情况就是被起诉。如果你向法院表示无法履行 GPL 的条件,法官只会判决你停止使用 GPL 代码(法律上叫做 "停止侵害"),而不会强制要求你将源码开源,因为《版权法》里面的 "违约救济" 没有提到违约者必须开源,只提到可以停止侵害和赔偿损失。

版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.dedenotes.com/html/open-source.html
(1)
打赏 微信扫一扫 微信 支付宝 QQ 扫码打赏

meta

Dedenotes 赞(3)

meta 是 html 语言 head 区的一个辅助性标签,位于文档的头部,不包含任何内容,标签的属性定义了与文档相关联的名称/值对。meta 标签可提供相关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。

防止表单重复提交的 4 种方法

Dedenotes 赞(3)

平时开发的项目中可能会出现下面这些情况:由于用户误操作,多次点击表单提交按钮;由于网速等原因造成页面卡顿,用户重复刷新提交页面;黑客或恶意用户使用 Postman 等工具重复恶意提交表单(攻击网站)。

HTTP消息结构 HTTP请求报文和响应报文的格式

Dedenotes 赞(3)

HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等),所有的 WWW(World Wide Web)文件都必须遵守这个标准。