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

文章目录

  • 前言
    • 关于BlackDuck许可证风险对比图
  • 弱互惠型许可证
    • 举个例子
      • 具体示例
    • LGPL系列
      • LGPL-2.0-only
      • LGPL-2.0-or-later
      • LGPL-2.1-only
      • LGPL-2.1-or-later
      • LGPL-3.0-only
      • LGPL-3.0-or-later
    • MPL系列
      • MPL-1.0
      • MPL-1.1
      • MPL-2.0
    • EPL系列
      • EPL-1.0
      • EPL-2.0
  • 互惠型许可证
    • GPL系列
      • GPL-1.0
      • GPL-2.0
      • GPL-3.0
    • EUPL系列
      • EUPL-1.0
      • EUPL-1.1
      • EUPL-1.2
    • CECILL系列
      • CeCILL 1.0
      • CeCILL 2.0
      • CeCILL-B
      • CeCILL-C
  • 强互惠型许可证
    • AGPL系列
      • AGPL 1.0
      • AGPL 3.0
    • SSPL系列
      • SSPL 1.0
  • 总结

前言

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

关于BlackDuck许可证风险对比图

在这里插入图片描述不知道你是否跟我一样看到仅汇总、实施标准、先决条件……,是不是一脸懵😳,还是不清楚导致这是组件的什么用法,知名SCA工具对于许可证这一点做的似乎并不是特别友好,不知道扫出来一大堆许可证,安全部门或者法务(有些公司许可证合规问题是由法务部门处理)是不是也是一脸懵。
下面进行一些许可证风险场景整理,以及再总结一张较为口语化的风险对比图……

弱互惠型许可证

允许代码与闭源软件结合使用,但要求对许可证下的代码修改部分保持开源
即许可证允许你将开源代码与闭源代码一起使用,但如果你修改了开源部分的代码,那么你必须将这些修改也开源

举个例子

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

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

具体示例

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

// 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用录屏软件,分享这四款宝藏软件!

在数字化时代&#xff0c;录屏软件已经成为我们日常工作、学习和娱乐中不可或缺的工具。无论你是需要录制教学视频、游戏过程&#xff0c;还是进行产品演示&#xff0c;一款高效、易用的录屏软件都能让你的工作事半功倍。今天&#xff0c;就为大家揭秘四款宝藏级录屏软件&#…

重磅|九科信息完成诺辉领投的B1轮融资,累计融资已达亿级

近日&#xff0c;九科信息宣布B1轮融资顺利完成。本轮由深圳诺辉岭南投资管理有限公司领投&#xff0c;深创投索斯福&#xff08;深圳&#xff09;私募创业投资基金跟投。 截至本轮&#xff0c;九科信息累计融资达亿级。但真正让九科人骄傲的&#xff0c;并非融资本身&#xff…

无法找到模块“@wangeditor/editor-for-vue”的声明文件

vue3项目中使用wangeditor/editor遇到的问题 开发环境不管红线报错正常使用 打包的时候就会报错了 1.安装依赖 pnpm install --save wangeditor/editor wangeditor/editor-for-vuenext 2.遇到的问题 3.解决方法 在src目录下面创建 wangeditor-types.d.ts 文件 代码如下 de…

IEC62056标准体系简介-6.IEC62056标准体系的特点

相对于其它常用的计量仪表通信协议&#xff0c;如IEC1107、IEC 62056-31、IEC 60870-5-102以及北美使用的通信协议ANSI C12.18&#xff08;光口&#xff09;、C12.19&#xff08;公用表&#xff09;和C12.21&#xff08;电话通信&#xff09;和国内使用的DL/T645等&#xff0c;…

The First项目报告:创新型金融生态Lista DAO

一、Lista DAO是什么&#xff1f; LISTA是Lista DAO的原生加密协议代币&#xff0c;设计为一种可互操作的实用代币&#xff0c;旨在促进去中心化金融&#xff08;DeFi&#xff09;领域内的支付、治理与激励。LISTA的诞生源于Lista DAO项目&#xff0c;该项目是一个基于BNB链的…

springboot3 集成GraalVM

目录 安装GraalVM 配置环境变量 Pom.xml 配置 build包 测试 安装GraalVM Download GraalVM 版本和JDK需要自己选择 配置环境变量 Jave_home 和 path 设置setting.xml <profile><id>graalvm-ce-dev</id><repositories><repository><id&…

2024最新版pycharm安装激火教程,附安装包+激huo马,Python教程,pycharm安装包!!

PyCharm的安装 PyCharm 是一个专门为 Python 开发者设计的 IDE&#xff0c;它同样具有代码导航、重构、调试和分析等功能。PyCharm 支持多种项目类型&#xff0c;如普通项目、Python 测试项目、Django 项目等&#xff0c;并提供了大量的内置模板和插件&#xff0c;以帮助您更快…

【随笔】浮生若梦

【传承】 这样算起来&#xff0c;人一生的故事都好像在传承&#xff0c;生儿育女&#xff0c;传承自己的希望&#xff1b;桃李天下&#xff0c;传承自己的思想&#xff1b;维护国家疆土&#xff0c;传承大国的文化。 如果每天照着镜子&#xff0c;会看到自己慢慢老去&#xff0…

elementui实现复杂表单的实践

简介 文章主要讲述在vue3项目中使用elementui框架实现复杂表单的方式。表单中涉及动态组件的生成、文件上传和富文本编辑器的使用&#xff0c;只会将在实现过程中较复杂的部分进行分享&#xff0c;然后提供一份完整的前端代码。 表单效果演示 基础信息 spu属性 sku详情 关键…

字符串s构造前缀树,并判断p是否属于s的子串

文章目录 1、描述2、notes3、code 1、描述 根据几个单词&#xff0c;构造一个前缀树&#xff0c;再给定一个单词p,判断p是否属于s的前缀 输入&#xff1a;vec {“hello”, “world”, “hey”, “hi”} p “hell” 输入&#xff1a;yes 2、notes 就直接构造 3、code #in…

编程语言如何和计算机交互:深入解析交互机制

编程语言如何和计算机交互&#xff1a;深入解析交互机制 在数字化世界的深处&#xff0c;编程语言与计算机之间的交互是构建数字逻辑、实现功能需求的基石。这一过程既充满神秘&#xff0c;又充满力量。那么&#xff0c;编程语言究竟是如何与计算机进行交互的呢&#xff1f;本…

好的管理是什么样子的?放权与监督

背景 身份&#xff1a;一线管理干部&#xff08;组长、基层部门负责人&#xff09;目标&#xff1a;部门承接的任务能够按期高质量完成&#xff1b;在80%以上的时间里&#xff0c;部门所有成员知道自己要做什么&#xff0c;如何做好 措施 带团队已经有几年时间了&#xff0c…

行为模式8.状态模式------灯泡状态切换

行为型模式 模板方法模式&#xff08;Template Method Pattern&#xff09;命令模式&#xff08;Command Pattern&#xff09;迭代器模式&#xff08;Iterator Pattern&#xff09;观察者模式&#xff08;Observer Pattern&#xff09;中介者模式&#xff08;Mediator Pattern…

融合CDN是什么?为什么需要融合CDN?其应用方法与原理是什么?

你了解融合CDN是什么吗&#xff1f;为什么需要融合CDN&#xff1f;你可能有听过融合CDN&#xff0c;但你知道它的应用方法与原理吗&#xff1f;本文将带你一次了解什么是融合CDN&#xff0c;详细介绍融合CDN的应用方法与运用原理&#xff0c;立刻替您解开心中疑惑&#xff01; …

【Qt】xml Dom复制

1. 功能 将A.xml文件中的copyNode节点全部复制到B.xml中的testRoot节点。 2. 代码 #include <QDomDocument> #include <QFile> #include <QIODevice> #include <QtXml>void copyNodeXml() {// 源文件DOMQDomDocument ADoc;// 加载源文件QFile fileA(…

[微信小程序知识点]自定义组件-拓展-外部样式类

使用组件时&#xff0c;组件使用者可以给组件传入css类名&#xff0c;通过传入的类名修改组件的样式 。 如果需要使用外部样式类修改组件的样式&#xff0c;在Component中需要用extemalClassess定义若干个外部样式类。 具体用法如下: (1)在Components文件里创建custom06组件 (…

EtherCAT ESI文件CRC32计算规则和方法

EtherCAT ESI文件CRC32计算规则和方法 EtherCAT ESI文件的CRC32计算遵循特定的规则&#xff0c;以确保设备描述的完整性。以下是详细的规则和计算步骤&#xff0c;以及C#实现示例&#xff1a; 计算规则 使用标准的CRC32多项式&#xff1a;0x04C11DB7初始值&#xff1a;0xFFF…

Python实现文件访问和加密GUI应用程序

Python实现文件访问和加密 简单的文本文件加密和解密的GUI应用程序&#xff0c;实现了一个简单的凯撒密码加密和解密算法 运行效果 1.实现UI界面 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yG28ajb1-1720676735133)(https://i-blog.csdnimg.…

免费SSL证书申请指南

申请免费SSL证书的步骤相对直接&#xff0c;以下是基于当前可用信息的简明指南&#xff0c;特别是针对一些热门的免费SSL证书提供商&#xff0c;下面以JoySSL证书商为例&#xff1a; 1、注册账号 打开JoySSL官网&#xff0c;注册并填写邀请码230920&#xff0c;获取免费证书与…

RK系列UST-OTG切换为HOST模式或DEVICE模式的两种方法(DTS修改和软件命令修改)

1、修改DTS dr_mode: tells Dual-Role USB controllers that we want to work on a particular mode. Valid arguments are “host”, “peripheral” and “otg”. In case this attribute isn’t passed via DT, USB DRD controllers should default to OTG. usb20_otg: usb…