【开源合规】开源许可证风险场景详细解读
文章目录
- 前言
- 关于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文件。有以下两种场景:
- 直接结合使用:
直接将libpng库集成到该闭源软件中,并发布软件,这种情况下不需要将整个软件开源。
只需在软件文档中包含libpng的LGPL许可证文本和版权声明。 - 修改部分保持开源:
如果你发现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
相关文章:
【开源合规】开源许可证风险场景详细解读
文章目录 前言关于BlackDuck许可证风险对比图弱互惠型许可证举个例子具体示例LGPL系列LGPL-2.0-onlyLGPL-2.0-or-laterLGPL-2.1-onlyLGPL-2.1-or-laterLGPL-3.0-onlyLGPL-3.0-or-laterMPL系列MPL-1.0MPL-1.1MPL-2.0EPL系列EPL-1.0EPL-2.0互惠型许可证GPL系列GPL-1.0GPL-2.0GPL-…...
Redis持久化RDB,AOF
目 录 CONFIG动态修改配置 慢查询 持久化 在上一篇主要对redis的了解入门,安装,以及基础配置,多实例的实现:redis的安装看我上一篇: Redis安装部署与使用,多实例 redis是挡在MySQL前面的,运行在内存…...
【持续集成_03课_Linux部署Sonar+Gogs+Jenkins】
一、通过虚拟机搭建Linux环境-CnetOS 1、安装virtualbox,和Vmware是一样的,只是box更轻量级 1)需要注意内存选择,4G 2、启动完成后,需要获取服务器IP地址 命令 ip add 服务器IP地址 通过本地的工具,进…...
mvcc 速读
MVCC(Multi-Version Concurrency Control,多版本并发控制)是MySQL中一种用于实现数据库并发控制的方法,尤其在InnoDB存储引擎中得到了广泛应用。它的主要作用是提高数据库在高并发场景下的性能,并确保数据的一致性。 …...
美容仪维修过程记录
近期维修的家用射频美容仪,发一些维修过程的拆机图片...
STM32入门开发操作记录(一)——新建工程
目录 一、课程准备1. 课程资料2. 配件清单3. 根目录 二、环境搭建三、新建工程1. 载入器件支持包2. 添加模块3. ST配置4. 外观设置5. 主函数文件 一、课程准备 1. 课程资料 本记录操作流程参考自b站视频BV1th411z7snSTM32入门教程-2023版 细致讲解 中文字幕,课程资…...
QT实现自定义带有提示信息的透明环形进度条
1. 概述 做界面开发的童鞋可能都会遇到这样的需求,就是有一些界面点击了之后比较耗时的操作,需要界面给出一个环形进度条的进度反馈信息. 如何来实现这样的需求呢,话不多说,上效果 透明进度条 2. 代码实现 waitfeedbackprogressba…...
金币程序题
昨天,小孩问了我一个python编程竞赛题,我看了一下题目,是一个数列编程的问题,我在想,小学五年级的学生能搞得懂吗?反正我家小孩是没有搞懂,不知道别人家的小孩能不能搞明白。所以我花了一点时间…...
《Windows API每日一练》9.13资源-鼠标位图和字符串
鼠标指针位图(Mouse Cursor Bitmap)是用于表示鼠标指针外观的图像。在 Windows 窗口编程中,可以使用自定义的鼠标指针位图来改变鼠标的外观,并提供更加个性化的用户体验。 ■以下是一些与鼠标指针位图相关的要点: ●…...
【保姆级教程】CenterNet的目标检测、3D检测、关键点检测使用教程
一、代码下载 仓库地址:https://github.com/xingyizhou/CenterNet?tab=readme-ov-file 二、目标检测 2.1 下载预训练权重 下载预训练权重ctdet_coco_dla_2x.pth放到models文件夹下 下载链接:https://drive.google.com/file/d/18Q3fzzAsha_3Qid6mn4jcIFPeOGUaj1d/edit …...
thinkphp:数据库复合查询-OR的使用
完整代码 $data[info] db::table(po_headers_all)->alias(ph) //设置wip_jobs_all的别名->join([vendors > ve], ph.vendor_codeve.vendor_code)->field(ph.po_num,ph.status,ph.vendor_code,ve.vendor_name,ph.po_all_amount,ph.note,ph.order_date,ph.need_dat…...
网络安全那些梗
网络安全领域的梗往往以幽默、讽刺或夸张的方式反映了该领域的某些现象、挑战或误解。以下是一些网络安全相关的梗: 关掉服务器是最有效的安全方法:这个梗源自一个笑话,讲述了一位程序员因误解妻子的话而只买了一个包子回家,随后被…...
交通气象站:保障道路安全的智慧之眼
随着社会的快速发展,交通运输日益繁忙,道路安全成为公众关注的焦点。在这个背景下,交通气象站作为保障道路安全的重要设施,正发挥着越来越重要的作用。它们不仅为交通管理部门提供及时、准确的气象信息,也为广大驾驶员…...
【分库】分库的核心原则
目录 分库的核心原则 前言 分区透明性与一致性保证 弹性伸缩性与容错性设计 数据安全与访问控制机制 分库的核心原则 前言 在设计和实施分库策略时,遵循一系列核心原则是至关重要的,以确保系统不仅能够在当前规模下高效运行,还能够随着…...
【Linux】软件管理工具 yum
文章目录 概念搜索:yum list安装:yum install卸载:yum remove 概念 在Linux下安装软件,可以下载到程序的源代码,进行编译得到可执行程序,另外这些软件还有依赖其它工具的问题,还得下载编译这些依…...
LangChain —— Prompt Templates
文章目录 一、什么是 Prompt Templates1、String PromptTemplates2、ChatPromptTemplates3、MessagesPlaceholder 留言占位符 二、如何使用 Prompt Templates1、使用几个简短示例2、在 chat model 中使用几个简短示例3、部分格式化提示模板4、一起编写提示 一、什么是 Prompt T…...
Python库 - Scrapy
Scrapy 是一个用于爬取网站数据、提取结构性数据的开源和协作框架。它最初是为网页抓取设计的,但也可以用于获取 API 提供的数据或作为通用的网络爬虫。 文章目录 主要特性主要组件使用流程1. 安装 Scrapy2. 创建 Scrapy 项目3. 定义 Item(数据ÿ…...
函数(实参以及形参)
实际参数(实参) 实际参数就是在调用函数时传递给函数的具体值。这些值可以是常量、变量、表达式或更复杂的数据结构。实参的值在函数被调用时传递给对应的形参,然后函数内部就可以使用这些值来执行相应的操作。 int main() {int a 0;int b …...
ArcGIS Pro SDK (八)地理数据库 8 拓扑
ArcGIS Pro SDK (八)地理数据库 8 拓扑 文章目录 ArcGIS Pro SDK (八)地理数据库 8 拓扑1 开放拓扑和进程定义2 获取拓扑规则3 验证拓扑4 获取拓扑错误5 标记和不标记为错误6 探索拓扑图7 找到最近的元素 环境:Visual …...
uniapp如何发送websocket请求
方法1: onLoad() {uni.connectSocket({url: ws://127.0.0.1:8000/ws/stat/realTimeStat/,success: (res) > {console.log(connect success, res);}});uni.onSocketOpen(function (res) {console.log(WebSocket连接已打开!);uni.sendSocketMessage({d…...
DLSS Swapper完整指南:掌握游戏性能优化的终极工具
DLSS Swapper完整指南:掌握游戏性能优化的终极工具 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款革命性的游戏性能优化工具,专为现代PC游戏玩家设计。这款开源软件让您能够…...
【小白友好】Qwen2.5-VL-7B-Instruct快速上手:无需代码的图文智能问答工具
Qwen2.5-VL-7B-Instruct快速上手:无需代码的图文智能问答工具 1. 工具简介 Qwen2.5-VL-7B-Instruct是一款基于阿里通义千问多模态大模型的视觉交互工具,专为RTX 4090显卡优化。它最大的特点是完全可视化操作,无需编写任何代码就能实现强大的…...
海洋载具水动力学与运动控制:从数学建模到工程实现的技术拆解
海洋载具水动力学与运动控制:从数学建模到工程实现的技术拆解 【免费下载链接】FossenHandbook Handbook of Marine Craft Hydrodynamics and Motion Control is an extensive study of the latest research in marine craft hydrodynamics, guidance, navigation, …...
MTK手机屏显干扰全解析:亮灭屏、射频干扰与TP失灵,我是如何用PLL_CLOCK和Porch参数解决的
MTK手机屏显干扰全解析:亮灭屏、射频干扰与TP失灵实战解决方案 引言:当屏幕开始"跳舞"——移动设备显示异常背后的复杂世界 那块6.5英寸的OLED屏幕又一次在通话过程中突然闪烁起来,像被无形的幽灵操控着。作为MTK平台驱动开发工程师…...
HelixDB安全特性解析:类型安全查询如何确保生产环境可靠性
HelixDB安全特性解析:类型安全查询如何确保生产环境可靠性 【免费下载链接】helix-db HelixDB is a powerful, graph-vector database built entirely in Rust for millisecond query latency and ease of use. 项目地址: https://gitcode.com/gh_mirrors/he/heli…...
Cursor Pro免费激活指南:3步解锁AI编程工具的完整功能
Cursor Pro免费激活指南:3步解锁AI编程工具的完整功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tri…...
新国标GB 44263实战:如何用一颗传感器搞定交/直/脉动全波形漏电检测?
第一名背后鲜为人知的“现实”我国已经建成全球规模最大的电动汽车充电网络,国家能源局数据显示,截至2026年1月底,我国电动汽车充电基础设施(枪)总数达到2069.8万个,公共充电设施(枪)…...
MAX32630FTHR平台RF95 LoRa精简移植实战
1. RadioHead库深度解析:面向MAX32630FTHR平台的RF95 LoRa通信精简移植 1.1 项目定位与工程价值 RadioHead并非官方标准协议栈,而是由Airspayce公司开发的一套轻量级、跨平台无线通信抽象库。其设计哲学强调“最小可行通信”——不追求协议完备性&#…...
春季2021亚马逊研究奖获奖者公布
春季 2021 某机构研究奖获奖者公布 2021年7月,某机构通知申请人已成为2021年春季某机构研究奖的获得者。该奖项旨在为跨多个学科领域开展研究课题的学术研究人员提供无限制资金和某云平台服务积分。今天,我们正式公布26位获奖者,他们来自11个…...
突破性虚拟形象创作:零基础玩转开源虚拟主播工具EasyVtuber
突破性虚拟形象创作:零基础玩转开源虚拟主播工具EasyVtuber 【免费下载链接】EasyVtuber Based on Talking-head-anime 3, works like Vtube Studio. 项目地址: https://gitcode.com/gh_mirrors/ea/EasyVtuber 在数字内容创作蓬勃发展的今天,虚拟…...
