Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【开源合规】开源许可证风险场景详细解读

【开源合规】开源许可证风险场景详细解读

原创
作者头像
没事就要多学习
发布于 2024-07-20 06:00:29
发布于 2024-07-20 06:00:29
79500
代码可运行
举报
文章被收录于专栏:产品那些事产品那些事
运行总次数:0
代码可运行

前言

接上篇文章所讲,使用开源组件,忽略开源许可证问题是存在合规风险的,但是关于什么场景下真实存在风险,以及什么样的风险?很多文章也没有讲的很明白,这些内容大部分都隐藏在晦涩难懂的许可证原文里面。通过一段时间的接触,包括收集资料、翻译许可证原文等学习,特此整理了一部分……

关于BlackDuck许可证风险对比图

不知道你是否跟我一样看到仅汇总、实施标准、先决条件……,是不是一脸懵😳,还是不清楚导致这是组件的什么用法,知名SCA工具对于许可证这一点做的似乎并不是特别友好,不知道扫出来一大堆许可证,安全部门或者法务(有些公司许可证合规问题是由法务部门处理)是不是也是一脸懵。

下面进行一些许可证风险场景整理,以及再总结一张较为口语化的风险对比图……

弱互惠型许可证

允许代码与闭源软件结合使用,但要求对许可证下的代码修改部分保持开源

即许可证允许你将开源代码与闭源代码一起使用,但如果你修改了开源部分的代码,那么你必须将这些修改也开源

举个例子

假设有一个闭源的图像处理软件,使用了一个LGPL许可的图像处理库(例如libpng)来处理PNG文件。有以下两种场景:

  1. 直接结合使用: 直接将libpng库集成到该闭源软件中,并发布软件,这种情况下不需要将整个软件开源。 只需在软件文档中包含libpng的LGPL许可证文本和版权声明。
  2. 修改部分保持开源: 如果你发现libpng库中有个错误或者你需要一个新的功能,你对libpng库进行了修改。 根据LGPL许可证,你必须将修改后的libpng代码开源,并以LGPL许可证发布。 这意味着你需要提供修改后的libpng源代码,并在文档中注明这些修改。

具体示例

假设你修改了libpng库中的一个函数,以提高它的性能:

代码语言:c
代码运行次数:0
运行
AI代码解释
复制
// libpng 修改后的函数
void improved_png_function() {
// 改进的代码
}

在这种情况下,你需要将修改后的libpng代码开源,并确保任何人都可以获得这些修改后的源代码。这可以通过在你的软件发布页面提供一个下载链接,或者将代码提交到公共代码库(如GitHub)上。同时,你的闭源图像处理软件依然可以保持闭源。

提供修改后的libpng库源代码 下载链接:<提供修改后的libpng库代码的链接>

修改说明:<简要说明你对libpng库所做的修改>

LGPL系列

LGPL(Lesser General Public License)是GNU许可证家族的一部分,旨在为开源软件提供一种更灵活的共享方式。不同版本和变体的LGPL许可证在细节和要求上有所不同。

运行环境:

LGPL 许可的核心要求在所有语言中都是一致的,即允许动态链接库而无需开源应用程序代码,但静态链接库时需要提供重新链接的机制和开源对库的修改部分。

LGPL-2.0-only

许可证原文

特点:

修改和分发:允许用户修改和分发修改后的版本,但必须以LGPL-2.0许可证发布。

链接要求:允许与闭源软件链接,但要求修改后的库本身必须开源。

分发源代码:在分发修改后的版本时,必须提供相应的源代码。

适用场景:适用于需要确保库保持开源,但允许其与闭源软件结合使用的项目。

版本变化:首次发布:这是LGPL的第一个版本,旨在提供更宽松的条件,以促进自由软件库的使用。

LGPL-2.0-or-later

许可证原文

特点:

与LGPL-2.0-only类似,但增加了一个灵活性选项:用户可以选择遵守LGPL-2.0或任何更新版本的条款。

提供向后兼容性,并允许未来的许可证版本引入改进和更改。

适用场景:适用于希望在当前许可证条款和未来改进之间保留灵活性的项目。

LGPL-2.1-only

许可证原文

特点:

是对LGPL-2.0的修订版,解决了一些法律和技术问题。

改进了许可证文本的清晰度和一致性,但核心要求与LGPL-2.0类似。

适用场景:适用于希望利用LGPL-2.1改进的项目,同时保持与LGPL-2.0的兼容性。

版本变化:更新的版本:LGPL 2.1是对LGPL 2.0的更新,主要增加了对某些法律条款的澄清和修订。

LGPL-2.1-or-later

许可证原文

特点:

与LGPL-2.1-only类似,但增加了一个灵活性选项:用户可以选择遵守LGPL-2.1或任何更新版本的条款。

提供向后兼容性,并允许未来的许可证版本引入改进和更改。

适用场景:适用于希望在当前许可证条款和未来改进之间保留灵活性的项目。

LGPL-3.0-only

许可证原文

特点:

是LGPL的最新版本,基于GPLv3。

改进了对软件专利、DRM(数字版权管理)等现代问题的处理。

更明确的国际化和法律术语,增强了许可证的适用性。

必须提供安装和运行修改版本所需的信息

适用场景:适用于需要处理现代软件开发和分发问题的项目。

版本变化:更严格的条款:增加了对专利的保护,要求提供安装信息。

LGPL-3.0-or-later

许可证原文

特点:

与LGPL-3.0-only类似,但增加了一个灵活性选项:用户可以选择遵守LGPL-3.0或任何更新版本的条款。

提供向后兼容性,并允许未来的许可证版本引入改进和更改。

适用场景:适用于希望在当前许可证条款和未来改进之间保留灵活性的项目。

MPL系列

Mozilla Public License (MPL) 系列是由 Mozilla Foundation 发布的开源许可证,主要用于保护开源项目的版权,同时允许灵活的商业使用。

MPL-1.0

许可证原文

特点:

文件级开源:要求对 MPL 许可的代码进行修改的文件必须保持开源,但不要求整个项目开源。这意味着可以将修改后的文件与闭源代码一起分发。

兼容性:相对较低的兼容性,不能直接与其他开源许可证(如 GPL)结合使用。

商业友好:允许将 MPL 许可的代码用于商业项目,只要遵循文件级开源的要求。

适用场景:适用于希望保护代码开源,但也允许与闭源代码结合使用的项目。

MPL-1.1

许可证原文

特点:

文件级开源:与 MPL 1.0 类似,要求对 MPL 许可的代码进行修改的文件保持开源,但不要求整个项目开源。

增强的兼容性:相对于 MPL 1.0,MPL 1.1 具有更好的兼容性,允许更灵活的代码组合。

商业友好:同样允许将 MPL 许可的代码用于商业项目,只要遵循文件级开源的要求。

适用场景:适用于希望在保护代码开源的同时,与其他开源项目进行更好兼容的项目。

MPL-2.0

许可证原文

特点:

MPL 2.0在设计时特别考虑了与其他常见开源许可证的兼容性,这使得开发者可以更自由地使用和组合不同许可证的代码。以下是MPL 2.0的一些兼容性特点:

与GPL兼容:MPL 2.0与GPL、LGPL和AGPL许可证兼容,允许将MPL 2.0代码与这些许可证的代码一起分发。

与Apache License兼容:MPL 2.0与Apache License 2.0兼容,允许代码混合使用。

与其他许可证兼容:MPL 2.0还考虑了与其他常见开源许可证(如BSD和MIT许可证)的兼容性。

EPL系列

EPL(Eclipse Public License)系列许可证是由Eclipse基金会发布的一系列开源许可证。

EPL-1.0

许可证原文

Eclipse Public License 1.0 是EPL的第一个版本,由Eclipse基金会在2004年发布。EPL 1.0 是一种宽松的开源许可证,允许修改和分发,但有一些特定的要求:

源代码分发:如果分发修改后的二进制文件,必须提供源代码或者提供获取源代码的方法。

版权声明:修改后的文件必须保留原始的版权声明和许可证文本。

利条款:EPL 1.0 包含一个专利条款,授予分发者和修改者在使用该软件时的专利许可。

EPL-2.0

许可证原文

Eclipse Public License 2.0 是EPL的最新版本,由Eclipse基金会在2017年发布。EPL 2.0 在EPL 1.0的基础上进行了改进,主要特点包括:

许可证兼容性:EPL 2.0 增强了与其他开源许可证(如GPL和Apache License)的兼容性。

简化的条款:EPL 2.0 对许可证条款进行了简化,使其更易于理解和应用。

专利条款:EPL 2.0 继续保留了EPL 1.0中的专利条款,提供专利保护。

互惠型许可证

GPL系列

GPL(GNU General Public License)系列是由自由软件基金会(Free Software Foundation, FSF)发布的一系列开源许可证。这些许可证旨在确保软件的自由使用、修改和分发权利。

GPL-1.0

许可证原文

特点:

使用者可以随意复制和发布软件

如果以二进制方式发布软件,就必须同时发布可读的源代码

要求所有基于GPL软件的衍生作品必须以相同的许可证发布。

GPL-2.0

许可证原文

特点:

引入了“病毒性”条款,即任何使用GPL代码的项目也必须以GPL发布。

增加了专利授权条款,确保用户拥有使用软件的专利权。

更详细地规定了源代码的分发要求。

GPL-3.0

许可证原文

特点:

增强了对专利诉讼的保护,防止专利流氓行为。

解决了与其他许可证(如Apache License 2.0)的兼容性问题。

引入了“反Tivo化”条款,防止硬件制造商通过硬件限制来规避GPL条款。

EUPL系列

EUPL(European Union Public License)是欧盟委员会发布的一系列开源许可证,旨在确保软件在欧洲范围内的自由使用、修改和分发。

EUPL-1.0

许可证原文

特点:

促进公共部门软件的共享和再利用。

与其他开源许可证(如GPL、LGPL、MPL)的兼容性有限。

强调软件的自由使用、修改和分发,但相对较新的许可证在社区中采用度较低。

EUPL-1.1

许可证原文

特点:

对EUPL 1.0进行了修订和改进。

增加了与更多开源许可证(如Apache、BSD)的兼容性。

进一步明确了法律术语和条件,增强了许可证的可操作性。

EUPL-1.2

许可证原文

特点:

进一步增强了与其他开源许可证的兼容性,包括GPLv3。

更加关注国际化和多语言支持,提供了多个语言版本。

保持了对软件自由使用、修改和分发的强调,并适应了更广泛的开源生态系统。

CECILL系列

CeCILL(CEA CNRS INRIA Logiciel Libre)系列是由法国原子能委员会(CEA)、国家科学研究中心(CNRS)和国家信息与自动化研究院(INRIA)联合发布的开源许可证,旨在提供符合法国法律的自由软件许可证。

CeCILL 1.0

许可证原文

特点:

确保软件在法国法律框架内的自由使用、修改和分发。

类似于GPL,但更加注重符合法国法律和规定。

鼓励软件开发者和用户遵守法国知识产权法。

CeCILL 2.0

许可证原文

特点:

对CeCILL 1.0进行改进,增加了与其他开源许可证的兼容性。

更加明确了责任和保证条款,适应更广泛的开源社区。

强调透明性和合作,促进自由软件的传播和使用。

CeCILL-B

许可证原文

特点:

类似于BSD许可证,提供了较为宽松的条款。

允许在更自由的环境中使用、修改和分发软件。

适用于希望最大化软件传播和使用的开发者。

CeCILL-C

许可证原文

特点:

类似于LGPL,允许软件库的链接和使用。

保持了对原始软件和修改部分的保护,同时允许与专有软件结合。

适用于希望在自由和专有软件环境中使用的库和组件。

强互惠型许可证

AGPL(Affero General Public License)是GNU GPL的变种,特别适用于网络服务器软件。

AGPL系列

AGPL 1.0

许可证原文

特点:

最初由Affero公司发布,基于GPL v2。

增加了网络交互条款,要求如果在网络服务器上使用软件,必须提供源代码。

主要用于确保用户通过网络服务使用软件时也能获取源代码。

AGPL 3.0

许可证原文

特点:

由自由软件基金会(FSF)发布,基于GPL v3。

保留了AGPL 1.0的网络交互条款,要求提供源代码。

增强了对专利诉讼的保护。

改进了许可证兼容性,解决了与其他许可证(如Apache License 2.0)的兼容性问题。

SSPL系列

SSPL(Server Side Public License)是MongoDB公司创建的一种许可证,旨在确保使用该软件提供云服务的公司也必须开源他们的服务代码。

SSPL 1.0

许可证原文

特点:

基于AGPL 3.0,但增加了更严格的条款。

要求如果使用SSPL软件提供云服务,不仅要公开SSPL软件的源代码,还要公开与服务一起运行的所有源代码。

强调保护开源软件在云计算环境中的自由使用。

总结

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【开源合规】开源许可证基础知识与风险场景引入
逛Github时经常看到项目README旁边,有个License tab,不知道大家是不是跟我一样,撇了一眼就过去了,不太清楚这个license具体作用,有点法律意识的朋友可能会意识到这个可能是版权声明,不过难免还是会有其他疑问:既然都开源了,怎么还有各种条件限制?除了GPL还有Apache、MIT等,这些"License"又有哪些区别呢?
没事就要多学习
2024/07/20
4570
【开源合规】开源许可证基础知识与风险场景引入
【开源合规】开源许可证风险场景详细解读
接上篇文章所讲,使用开源组件,忽略开源许可证问题是存在合规风险的,但是关于什么场景下真实存在风险,以及什么样的风险?很多文章也没有讲的很明白,这些内容大部分都隐藏在晦涩难懂的许可证原文里面。通过一段时间的接触,包括收集资料、翻译许可证原文等学习,特此整理了一部分……
没事就要多学习
2024/07/18
2290
【开源合规】开源许可证风险场景详细解读
深入探讨各种开源协议:选择合适的许可证为你的项目保驾护航
在软件开发的世界中,开源项目已经成为推动技术创新的重要力量。无论是个人开发者还是企业,选择合适的开源许可证都至关重要。不同的许可证对代码的使用、修改、分发等方面有不同的要求,了解这些细节可以帮助开发者更好地保护自己的权益,并促进项目的广泛应用。本文将深入探讨各种常见的开源协议,包括GPL、MIT、Apache、BSD、MPL、CC、EPL、AGPL、LGPL以及中国本土的木兰许可协议,帮助你在复杂的开源生态中找到最合适的许可证。
繁依Fanyi
2024/08/20
4200
如何为自己的开源项目选择合适的开源许可证?
之前我们介绍过很多款开源软件/项目,在文章的最后面总有代码仓库的License:MIT/Apache/GPL:
埃兰德欧神
2024/07/15
4690
如何为自己的开源项目选择合适的开源许可证?
一文看懂开源许可证丨开源知识科普
在很多人眼中,「开源」是一个时髦且有情怀的词汇,始终伴随有理想主义色彩,因此不少公司开始给自己贴上“开源”标签。但一个优秀的开源项目远远不止是简单的公开源代码,而是需要将其当作公司战略进行贯彻,才能架设起牢不可破的信任桥梁。
PingCAP
2021/10/21
2.1K0
开源协议对比:局限性、应注意事项与详细对比
在本篇博客中,我们将深入探讨各种开源协议,包括它们的优点、局限性,以及在使用这些协议时需要注意的事项。最后,我们会提供一个详细的开源协议对比表格。
猫头虎
2024/04/09
7830
开源协议对比:局限性、应注意事项与详细对比
开源许可证的变迁:从Elastic两次变更开源协议说开去
开源从开始到现在已经有几十年历史,开源许可证在开源运动的发展中起到了基石作用,不管是从文化还是法律的角度,都较好地推动了开源的发展。
深度学习与Python
2022/06/13
1K0
开源许可证的变迁:从Elastic两次变更开源协议说开去
2018-09-07 几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理
http://ewen0930.github.io/2016/11/open-source-licenses/
Albert陈凯
2018/09/20
2.4K0
2018-09-07 几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理
深入理解开源许可证(Apache,MIT,GPL,BSD,CC)
如果说有什么东西正在为开源世界保驾护航,那就一定不能不提到开源许可证(Open Source License),正是因为这些各不相同的开源许可证的共同支持下,才有了现在这么繁荣的开源软件社区。
HikariLan贺兰星辰
2022/10/27
3.8K0
一文读懂常用开源许可证
社区时常为流行产品中有争议的开源许可证而感到震惊,这引起各方关注,纷纷争论何为真正的开源许可证。去年,Apache 基金会(Apache Foundation)禁止使用 Facebook React 那些具有争议的专利组件,这引发了轩然大波,并让大量人员纷纷跑去加入 Reddit boards。在过去的几个月中, Redis Labs 和 MongoDB 修改了他们备受欢迎的开源数据库的许可证,这让许多人难以自拔,凸显了用大家都能看懂的人话来具体介绍常见开源许可证的紧迫性和必要性。
心莱科技雪雁
2020/03/02
3.9K0
开源许可证协议
最近新闻中的00后被指抄袭Github开源项目,新闻链接:http://money.163.com/17/0905/17/CTJBUNNV002580S6.html 被抄袭墨镜猫作者博客:http://blog.csdn.net/rain_butterfly/article/details/77847643 墨镜猫的开源项目遵循的协议是Apache v2.0,允许商用,但随后,墨镜猫就于9月5日上午将协议修改成了 GNU GPL v3.0。一直以来,GPL是Linux软件及各种开源项目中比较受欢迎的项目协议
233333
2018/03/07
1.5K0
开源许可证协议
“木兰”许可证专家评论
2019年8月,中国开源云联盟(COSCL)推出了中英版的木兰宽松许可证, 第1版(Mulan PSL v1)[1],被称为中国首个官方开源软件许可协议。由于当前主要的开源软件许可证大多来自欧美社区,而且这些许可证的文本语言,在法律上有效的大多是英文。因此,这张由中国的开源组织推出的中文许可证,引发了业内不小的关注,这些关注大多是项目开发等技术角度的。而本文的关注点在于,从法律与合规的层面怎么来看木兰许可证,以供开发者、软件项目参考。
开源社
2019/08/15
2.1K0
开源许可证教程
作为一个开发者,如果你打算开源自己的代码,千万不要忘记,选择一种开源许可证(license)。 许多开发者对开源许可证了解很少,不清楚有哪些许可证,应该怎么选择。本文介绍开源许可证的基本知识,主要参考
ruanyf
2018/04/12
9940
开源许可证教程
开源许可证保姆级入门手册
开源许可证是个相当庞杂的范畴,仅OSI (Open Source Initiative, 开放源代码促进会)批准的许可证就有80多种;此外,还有数百种在开源生态中流传的其他许可证。
OpenSCA社区
2023/07/07
6050
开源许可证保姆级入门手册
漫谈开源许可证
目前,开源软件被大规模的使用在生产环境,包括Linux,MySQL这些基础软件,以及各细分领域的专业软件,比如做大数据处理的hadoop/kafka/storm,搞机器学习的tensorflow等,可以说我们每天都在直接或间接的使用开源软件。使用开源软件就一定要遵循它的许可证,否则可能会面法律纠纷和行业谴责。
黑光技术
2020/05/14
1.4K0
漫谈开源许可证
秒懂开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL
世界上的开源许可证(Open Source License)大概有上百种,而我们常用的开源软件协议大致有GPL、BSD、MIT、Mozilla、Apache和LGPL。
lcyw
2022/06/10
1.5K0
秒懂开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL
常见开源协议介绍
世界上的开源许可证(Open Source License)大概有上百种,今天我们来介绍下集几种我们常见的开源协议。大致有GPL、BSD、MIT、Mozilla、Apache和LGPL等。
JAVA日知录
2020/12/16
1.2K0
常见开源协议介绍
版本升级 | v1.0.12发布,许可证风险早知道
开源软件一般都有对应的开源许可证(Open Source License)对软件的使用、复制、修改和再发布等进行限制。许可证即授权条款,开源许可证就是保证开源软件这些限制的法律文件,目的在于规范受著作权保护的软件的使用或者分发行为。开源许可证是开源软件生态系统的基础,可以促进软件的协同开发。
OpenSCA社区
2023/07/14
2670
版本升级 | v1.0.12发布,许可证风险早知道
关于开源许可证
虽然知道开源有个许可证 LICENSE,但一直没给自己写的一些开源项目选择开源许可证。于是准备系统了解一下开源许可证,以及如何为 Github 项目添加 LICENSE。
愧怍
2022/12/27
1.1K0
关于开源许可证
到底什么是开源协议和ARM授权模式?
License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的。软件协议可分为开源和商业两类,对于商业协议,或者叫法律声明、许可协议,每个软件会有自己的一套行文,由软件作者或专门律师撰写,对于大多数人来说不必自己花时间和精力去写繁长的许可协议,选择一份广为流传的开源协议就是个不错的决策。
刘盼
2019/05/23
2.2K0
推荐阅读
相关推荐
【开源合规】开源许可证基础知识与风险场景引入
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验