看完就明白了GPL、MIT、Mozilla、LGPL这些开源许可是怎么一回事

开源许可协议的故事

  • 某百科:自由软件/开源软件是自由的,源代码开放的,我们可自由下载安装和使用。同时,为了维护作者和贡献者的合法权利,保证这些软件不被一些商业机构或个人窃取,影响软件的发展,开源社区开发出了各种的开源许可协议。
  • 接触过别人分享的工程项目或者使用过官方代码的都对开源协议不陌生,通常这些代码我们拿起来就能直接用,还能按照自己需求改改多亏了有开源协议撑腰。
  • 但也一定看过不少的开源协议,什么GPL、BSD、Apache、MIT等等,一开始搞不懂是什么也不关心,反正都是开源,用不就得了。
  • 但自己开发过软件项目就会知道,一旦你的东西开源,被人拿到后是不是商用这个事情就很讲究了。商用的东西往往因为面向群体和接触者的性质复杂,容易牵扯多方版权等纠纷。开源协议从某种角度上,限制并规避了部分版权风险

在这里插入图片描述

  • 作为一个开发者,如果你打算开源自己的代码,千万不要忘记,选择一种开源许可证(license)。
    许多开发者对开源许可证了解很少,不清楚有哪些许可证,应该怎么选择。本文介绍开源许可证的基本知识,主要参考了 OpenSource.com (1,2)

什么是开源许可证

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

开源许可证的种类

  • 目前,国际公认的开源许可证共有80多种。它们的共同特征是,都允许用户免费地使用、修改、共享源码,但是都有各自的使用条件
  • 如果一种开源许可证没有任何使用条件,连保留作者信息都不需要,那么就等同于放弃版权了。这时,软件可以直接声明进"公共领域"(public domain)。
  • 根据使用条件的不同,开源许可证分成两大类。
    1. 宽松式(permissive)许可证
    2. Copyleft 许可证

宽松式许可证

特点

  • 宽松式许可证(permissive license)是最基本的类型,对用户几乎没有限制。用户可以修改代码后闭源。它有三个基本特点。
1. 没有使用限制
	用户可以使用代码,做任何想做的事情。
2. 没有担保
	不保证代码质量,用户自担风险。
3. 披露要求(notice requirement)
	用户必须披露原始作者。

常见许可证

  • 常见的宽松式许可证有四种。它们都允许用户任意使用代码,区别在于要求用户遵守的条件不同。
1. BSD(二条款版)
	分发软件时,必须保留原始的许可证声明。
2. BSD(三条款版)
	分发软件时,必须保留原始的许可证声明。不得使用原始作者的名字为软件促销。
3. MIT
	分发软件时,必须保留原始的许可证声明,与 BSD(二条款版)基本一致。
4. Apache 2
	分发软件时,必须保留原始的许可证声明。凡是修改过的文件,必须向用户说明该文件修改过;没有修改过的文件,必须保持许可证不变。

Copyleft 许可证

Copyleft 的含义

  • Copyleft 是理查德·斯托曼发明的一个词,作为 Copyright (版权)的反义词。
  • Copyright 直译是"复制权",这是版权制度的核心,意为不经许可,用户无权复制。作为反义词,Copyleft 的含义是不经许可,用户可以随意复制。
  • 但是,它带有前提条件,比宽松式许可证的限制要多。
1. 如果分发二进制格式,必须提供源码
2. 修改后的源码,必须与修改前保持许可证一致
3. 不得在原始许可证以外,附加其他限制
  • 上面三个条件的核心就是:修改后的 Copyleft 代码不得闭源

常见许可证

  • 常见的 Copyleft 许可证也有四种(对用户的限制从最强到最弱排序)。
1. Affero GPL (AGPL)
	如果云服务(即 SAAS)用到的代码是该许可证,那么云服务的代码也必须开源。
2. GPL
	如果项目包含了 GPL 许可证的代码,那么整个项目都必须使用 GPL 许可证。
3. LGPL
	如果项目采用动态链接调用该许可证的库,项目可以不用开源。
4. Mozilla(MPL)
	只要该许可证的代码在单独的文件中,新增的其他文件可以不用开源。 

常见问题

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

什么叫分发(distribution)?

  • 除了 Affero GPL (AGPL) ,其他许可证都规定只有在"分发"时,才需要遵守许可证。换言之,如果不"分发",就不需要遵守。
  • 简单说,分发就是指将版权作品从一个人转移到另一个人。这意味着,如果你是自己使用,不提供给他人,就没有分发。另外,这里的"人"也指"法人",因此如果使用方是公司,且只在公司内部使用,也不需要遵守许可证。
  • 云服务(SaaS)是否构成"分发"呢?答案是不构成。所以你使用开源软件提供云服务,不必提供源码。但是,Affero GPL (AGPL) 许可证除外,它规定云服务也必须提供源码。

开源软件的专利如何处理?

  • 某些许可证(Apache 2 和 GPL v3)包含明确的条款,授予用户许可,使用软件所包含的所有专利。
  • 另一些许可证(BSD、MIT 和 GPL v2)根本没提到专利。但是一般认为,它们默认给予用户专利许可,不构成侵犯专利。
  • 总得来说,除非有明确的"保留专利"的条款,使用开源软件都不会构成侵犯专利。

什么是披露要求?

  • 所有的开源许可证都带有"披露要求"(notice requirement),即要求软件的分发者必须向用户披露,软件里面有开源代码。
  • 一般来说,你只要在软件里面提供完整的原始许可证文本,并且披露原始作者,就满足了"披露要求"。

GPL 病毒是真的吗?

  • GPL 许可证规定,只要你的项目包含了 GPL 代码,整个项目就都变成了 GPL。有人把这种传染性比喻成"GPL 病毒"。
  • 很多公司希望避开这个条款,既使用 GPL 软件,又不把自己的专有代码开源。理论上,这是做不到的。因为 GPL 的设计目的,就是为了防止出现这种情况。
  • 但是实际上,不遵守 GPL,最坏情况就是被起诉。如果你向法院表示无法履行 GPL 的条件,法官只会判决你停止使用 GPL 代码(法律上叫做"停止侵害"),而不会强制要求你将源码开源,因为《版权法》里面的"违约救济"没有提到违约者必须开源,只提到可以停止侵害和赔偿损失。在这里插入图片描述
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
开源许可协议是指授权软件使用者在软件的源代码可被公开查看、修改和分发的情况下,使用该软件的协议。以下是几种常见的开源许可协议及其区别: 1. GPL(GNU通用公共许可证):GPL是一种“强制性开源”协议,要求任何使用、修改或分发GPL软件的人都必须使用相同的GPL协议发布他们的修改版本。因此,任何使用GPL软件的人都必须将他们的修改公开发布。这个要求使得GPL被认为是最严格的开源许可协议之一。 2. APL(Apache许可证):APL是一种“宽松型开源”协议,允许使用、修改和分发软件的源代码和二进制文件,但要求保留原始版权和许可协议信息。与GPL不同,APL不要求使用相同的许可协议发布修改版本,因此允许商业应用。 3. BSD(Berkeley软件分发许可证):BSD是一种“宽松型开源”协议,允许使用、修改和分发软件的源代码和二进制文件,但没有像APL一样要求保留原始版权和许可协议信息。BSD许可证允许商业使用和闭源版本的发布,因此在商业环境中非常流行。 4. LGPL(GNU库通用公共许可证):LGPLGPL的一个变种,在LGPL下发布的软件可以作为库被其他程序使用,而其他程序可以使用不同的许可协议。这意味着LGPL软件可以被商业程序使用,但如果修改了LGPL库,修改版本必须以LGPL发布。 5. MIT许可证:MIT是一种非常宽松的开源许可协议,允许使用、修改和分发软件的源代码和二进制文件,而且没有任何要求。MIT许可协议是最古老的开源许可协议之一,也是最受欢迎的开源许可协议之一。因此,它被广泛用于许多开源项目中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kx_Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值