程序员们都应该知道的各类开源许可证及合规相关知识

8 篇文章 1 订阅
订阅专栏

程序员们都应该知道的各类开源许可证及合规相关知识 | murphysec博客

# 前言

2021年12月,抖音海外版TikTok上线了一款名为TikTok Live Studio的APP,但不久其下载页面就被删除。TikTok官方对此事做出回应,原因是该APP违反GPL许可证,其使用GPL许可证下的开源软件源码,却没有按照GPL许可证要求开源。

随着开源软件的发展,其数量和影响力在不断的上升。开源软件具有成本低、升级快的特点,因此越来越多的企业选择使用开源软件。但是“天下没有免费的午餐”,在开源许可证的约束下,开源软件的使用并非想象中的自由。不恰当地使用开源软件,可能会给企业造成负面舆论甚至经济损失的风险。

# 开源许可证(“Open Source License”)是什么

开源许可证是一种针对开源软件使用者的约束,目的在于规范受著作权保护的软件的使用或者分发行为。

# 常见许可证及其差异

常见的许可证主要有GPL、LGPL、AGPL、MPL、MIT、BSD和Apache,各个许可证还包含不同版本。根据使用条件不同,可以将这些许可证大致分为两类:Copyleft 许可证和宽松许可证(permissive license),主要对使用、修改和分发的场景作出相应约束。

 

1.BSD许可证——特点是可以自由使用、修改、再发布。但是在商用或者个人分发过程中必须带有原来代码的许可证,且不能用原作者相关信息去做宣传。

2.MIT许可证——源自麻省理工学院(Massachusetts Institute of Technology, MIT),是使用最广泛的一种开源许可证。其特点和BSD许可证类似,只要在项目的所有副本中包含版权声明和许可声明,就无需承担任何责任。

3.Apache许可证——作为permissive license中的一员,Apache多了几个限制条件,禁止使用其商标与作者的相关信息进行商业行为,必须明确指出所有修改过的文件。

4.GPL许可证——GPL和BSD区别还是很大的,GPL主张代码及衍生代码的开源,不允许修改后和衍生的代码做为闭源的商业软件进行发布和出售。如果已发布商业软件源码里含有GPL开源软件源码,则必须对该商业软件进行开源或者下架处理。

5.AGPL许可证——AGPL是GPL的一个补充, 在GPL的基础上加了一些限制。GPL的约束生效前提是该软件"发布",有的公司就使用GPL组件编写web系统,但是不发布系统,只用这个系统在线提供服务,这样就避免了开源系统代码。而AGPL要求如果云服务(即saas)用到的代码是该许可证,那云服务的代码也必须开源。

6.LGPL许可证——LGPL允许商业软件通过类库引用的方式使用LGPL类库,而不需要开源商业软件源码。

7.MPL许可证——在商业软件中,如果含有MPL许可证的代码在单独的文件内,其他新增的文件就可以避免开源。

 

我们针对C/C++、Java两类常用编程语言的开源组件许可证分布进行统计,可以发现:

  • C/C++中主要使用MIT、BSD、Apache许可证,GPL/LGPL约占16%,整体使用更严格

  • Java中主要使用Apache、MIT许可证,GPL/LGPL占比约1%,整体使用更宽松

# 开源许可证在标准化

SPDX 是Linux 基金会推出的用于交流软件材料清单信息的开放标准,SPDX 当前已经对超过400个开源许可证的名称、标识符等信息进行标准化,并在持续更新。

SPDX 还给出了开源许可证的匹配指南,鼓励开发者在代码中加入诸如SPDX-License-Identifier: MIT的简短标识。

可以预见,未来开源许可证将变得更标准,更容易被机器识别处理。

# 开源合规风险

2008 年,美国联邦巡回上诉法院首次在Jacobsen v.Katzer一案中主张了开源许可证的著作权效力。中国在2019年的「柚子案」中默认了GPL许可证的法律效力。相关判例的产生,意味着开源许可证不再是君子协定,违反开源许可证会对企业带来经济和声誉上的损失。

如GPL许可证和MPL许可证,GPL许可证要求「用户使用该许可证下的源码,必须以GPL许可证的许可发布整个程序的源码」,而MPL则要求「MPL许可证的代码在单独的文件内,其他新增的文件就可以避免开源。」因此企业在使用同时附带GPL和MPL许可证的开源软件时,就可能因为开源许可证的冲突,面临违反其中之一的风险。

# 国内外的相关案例

一、2019年,在数字天堂北京网络技术有限公司 诉 柚子北京科技有限公司的案件中,柚子北京 由于开发人员在2015年使用了 数字天堂 的 HBuilder 软件工具中三款插件的部分源代码,未遵守开源软件许可证,将具有开源要求的软件产品作为商业产品,被开源软件的著作权人诉请违约和侵权,故而承担法律责任。

二、2021 年 4 月 30 日,罗盒公司状告风灵公司侵权获赔 50 万元,同时要求风灵公司停止侵权行为。

在该案件中原告罗盒公司,独立开发“罗盒(Virtual App)插件化框架虚拟引擎系统 V1.0”(简称VirtualApp V1.0),在2016年引入GPL3.0 许可证,于2017年取得计算机软件著作权登记证书,且声明

用于商业用途请购买商业授权。

2018年原告发现名为“点心桌面”的软件使用了VirtualApp V1.0 的代码,经过源码分析对比,发现两者之间高度相似,遂起诉被告福建风灵公司。

经法院审判被告赔偿原告为制止侵权行为而支出的合理费用50万元。此次判决是中国首个明确 GPL3.0 许可证具有法律效力的案例。

三、2021年12月中旬,抖音海外版TikTok上线一款名为TikTok Live Studio的APP,有网友发现,此软件违反GPL许可证,违规使用开源软件OBS(一个免费的开源视频录制和视频实时流软件,且允许任何人免费应用和商用)的源代码,既然允许商用,但是为什么还会被曝违规呢?

这里就需要再科普一下GPL许可证,GPL许可证具有很强的传染性,如果一款软件使用GPL许可证的开源软件源码,那么该软件也必须采用GPL许可证,进行开源。

此事曝光之后,OBS开发者证实此事,TikTok也对此事进行了回应,并删除TikTok Live Studio的下载页面。

# 针对开发者/企业的建议

温馨提醒:开源千万条,合规第一条

一、软件开发者使用开源软件时,需要谨慎选择开源软件,关注其开源许可证的内容及相关条件,避免潜在的法律风险。

二、企业应当建立一个完善机制,识别企业中所使用的开源软件清单,明确对应的开源许可证及权利约束,及时规避相关合规风险。

三、通过隔离机制避免开源许可证传染,如对于MPL许可证下代码的使用,应把该许可证的代码放在单独的文件内避免许可证传染;LGPL下的代码,可采用动态链接调用该许可证的库实现隔离。

# 解决方案:借助murphysec的开源工具来解决这类风险

我们在开源工具里面集成了开源许可证的合规检测能力 开源项目地址: https://github.com/murphysecurity(opens new window)

一、使用murphysec开源工具扫描您的代码目录,它会帮您一键识别出来您的代码项目中使用的所有开源组件,包括直接依赖和间接依赖的组件清单,同时列出所有组件对应的开源许可证信息

二、查看报告,根据报告的提示可以明确看到对应组件的许可证在什么场景下存在许可证合规风险

 

 

三、您可以根据许可证的合规风险提示,来判断您的项目是否存在违反的可能性,并调整您所引入的组件,来解决这个风险。

一些可能你无意中踩到的坑:

  1. 有一些组件是存在多种许可证的,可能不同目录文件指定的许可证类型不一样,要特别注意,当然我们的开源软件也考虑到了这种情况
  2. 有些组件你没有直接依赖,但是可能存在间接依赖的情况,你需要特别注意查看相关组件的依赖关系

使用文档: https://www.murphysec.com/docs/(opens new window)

# 参考链接

  • https://spdx.org/licenses/(opens new window)
  • Open Source Licenses by Category | Open Source Initiative
开源世界许可证Copyleft GPL LGPL MIT BSD Apache
程序员黄老师的精品课!
01-16 379
在延伸的代码(修改和有源代码衍生的代码)需要带有原来代码的协议,商标,专利声明和其他原来作者规定需要包含的说明;需要注意的是,LGPL 许可的软件可以自由使用和分发,但在对 LGPL 许可的库进行修改或创作派生工作时,必须遵循 LGPL 许可的要求,并在满足相应的许可证要求的前提下,享受 LGPL 许可带来的灵活性和自由。非共享库链接:如果将 LGPL 许可的库静态链接到应用程序(即将库的代码直接包含在应用程序),那么应用程序的整个源代码必须遵循 LGPL 许可的要求,并开放源代码
开源软件之许可证(三)
fofcaptain的专栏
10-29 7295
开源软件之许可证(三) 吴国平 北京市隆安律师事务所 在开发一个软件项目时,如何保证适用开源许可证合规性,(暂且认为程序员已经选择了一个适合的许可证,对于许可证的选择,我们会在其他的篇章另行讨论),这与具体选择的许可证密切相关。 对于许可证实体权利义务的遵从是合规的必然要求,例如关于专利的声明。一般来讲,常见的违反开源许可证的表现是发布的程序文件未包括许可证声明、未清楚地界定许可证涵盖的程序范围(与闭源软件相结合的...
杜绝开源依赖风险,许可证扫描让高效&合规「两不误」
GitLab 中国发行版
05-26 1306
开源时代,如何确保软件许可证安全合规?
open license
11-18
open source license builder with GUI
open source license
天空 星座 海
09-06 937
这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考。 BSD开源协议(original BSD license、FreeBSD license、Original BSD license) BSD开源协议是一个给于使用者很大
Opensource License
技术无捷径,一步一脚印
08-01 1158
开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,
开源协议(Open Source License)
qq_38729241的博客
12-20 1698
通常我们平台开发型团队不太会改开源项目的代码,所以重点从使用维度检查对开源项目的使用即可。在只使用开源项目的情况下,关注不要使用 GPL 项目即可,使用类似功能的项目替代使用到的 GPL 项目。
OpenSCA是一款开源的软件成分分析工具,用来扫描项目的第三方开源组件依赖及漏洞信息
04-25
5. **许可证合规性**:除了安全方面,OpenSCA还关注开源组件的许可证合规性,帮助开发者避免因使用不兼容或限制性许可证的组件而导致的法律风险。 6. **定制化扩展**:OpenSCA是开源的,允许开发者根据自己的需求...
许可证
02-16
开源许可证如GPL(GNU General Public License)、MIT、Apache 2.0等允许用户自由地使用、修改和分发源代码,但可能有一些特定的要求,如要求任何衍生作品也必须使用相同的许可证发布。专有许可证则限制了用户的使用...
无许可的开源软件可以使用吗?
m0_57648401的博客
08-12 581
背景 国第一个关涉GPL协议的诉讼案件,数字天堂(北京)网络技术有限公司起诉柚子(北京)科技有限公司侵犯计算机软件著作权纠纷一案,原告数字天堂公司起诉柚子公司发布的APICloud软件抄袭了数字天堂公司HBuilder软件的三个插件的源代码,侵犯其多项权利[1]。 而柚子公司辩称,HBuilder软件属于应遵循GPL协议开放源代码的软件,应遵循开源,其构建衍生软件作品并不对数字天堂著作权造成侵犯。 也就是说,使用GPL协议的软件为开源软件,基于GPL协议作品产生的衍生作品也要遵循GPL协议,开放源代码
开源许可协议 Open Source License
特立独行的博客
05-04 4151
开源许可证是计算机软件和其他产品的一种许可证,允许在定义的条款和条件下使用、修改和/或共享源代码、蓝图或设计。这允许最终用户和商业公司根据自己的定制、好奇心或故障排除需求来审查和修改源代码、蓝图或设计。
开源许可证(Open Source License)详解
_
01-25 6825
原文: https://www.jianshu.com/p/411dd51c4236 由宽松到严紧排序,常用的开源许可证有: MIT许可证 BSD许可证 Apache许可证 LGPL许可证 GPL许可证 MIT、BSD 许可证都源自大学,体现了简单、开放和包容的特点。 MIT、BSD、Apache 三者都支持闭源的后续开发。 GPL、LGPL 传染性开源,编译的代码里用了这里的代码,都必须开源。 其它License,最好都在产品上说明使用了,署名保留原作者就ok。 MIT许可证 来源于
快速看懂开源许可证(Open Source License)
最新发布
yushuoqi的博客
11-13 1万+
开源软件和免费不一一对应,因此不受限制地随意使用是不对的。在开源诞生之初,自由软件是当时的主流提法,回顾开源的发展史,从自由软件到开源运动实现了非常大的跨越,前者更多的是一种精神的倡导,而后者着眼于软件的协同开放,因此会有非常严谨的开源许可证的规则和限制。开源软件能走到今天的发展程度,就是因为有了这么一套遵从开源精神的规则体系,才能够健康发展。开源精神的载体之一就是开源许可证。本文介绍了开源许可证的前世今生,并通过一张图快速区分常用开源许可证
程序员之路:开源许可证
彭世瑜的博客
02-09 1393
开源许可证(license) 开源许可证是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权软件。 版权法默认禁止共享,也就是说,没有许可证的软件,就等同于保留版权,虽然开源了,用户只能看看源码,不能用,一用就会侵犯版权。 所以软件开源的话,必须明确地授予用户开源许可证。 分类 宽松式(permissive)许可证 Copyleft 许可证 宽松式(per...
开源许可证
Robins.lee_的博客
06-18 494
开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 以下是上述协议的简单介绍:BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:...
开源许可证教程
songjuntao8的专栏
09-30 374
作者:阮一峰 作为一个开发者,如果你打算开源自己的代码,千万不要忘记,选择一种开源许可证(license)。 许多开发者对开源许可证了解很少,不清楚有哪些许可证应该怎么选择。本文介绍开源许可证的基本知识,主要参考了 OpenSource.com (1,2)。 一、什么是开源许可证 开源许可证是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权软件。 版权法默认禁止共享,也就是说,没有许可证的软件,就等同于保留版权,虽然开源了,用户只能看看源码,不能用,一用就会侵犯.
Open Source 开源代码 license合规性检查
迟来大师的博客
06-10 1519
BlackDuck 软件分别有protex、Codecenter、和Export三个产品组成。 protex Protex用于代码扫描、审计和管理,能够清楚的发现源代码开源代码的使用情况,帮助用户清楚的了解已有代码存在的风险(确认license合规性/知识产权风险)。 ...
常见开源许可证
努力学习
01-08 2806
1. 常见开源许可证 Apache、MIT、BSD、GPL、LGPL、MPL、SSPL 等 2. 宽松自由软件许可协议(“Permissive free software licence”)和著佐权许可证(“copyleft license”)。 Apache、MIT、BSD 都是宽松许可证 GPL 是典型的强著佐权(copyleft )许可证,LGPL、MPL 是弱著佐权(copyleft )许可证 SSPL 则是近年来 MongoDB 创建的一个新许可证,存在较大争议,开放源代码促进会 OSI 甚至认为
OpenSCA:扫描开源组件依赖与漏洞的供应链安全工具
知识点四:许可证合规性 软件项目在使用开源组件时需要遵守相应的许可证规定。不同的许可证对商业使用、分发等方面有不同的要求。OpenSCA工具可以扫描项目使用的开源组件的许可证信息,确保项目的合规性,避免因...
写文章

热门文章

  • linux 45895
  • [LaTeX] 数学表达式-上标和下标 33249
  • 求导数(导数计算器)网站 Derivative Calculator 27184
  • 虚拟机安装Ubuntu 12.04 出现提示“Ubuntu is running in low-graphics mode?” 17180
  • Raw Socket 接收和发送数据包 17083

分类专栏

  • 网络 269篇
  • 工具 6篇
  • WiFi 35篇
  • LInux kernel 7篇
  • IPv6 16篇
  • 3GPP 1篇
  • 开源合规 8篇
  • BPF 1篇
  • linux 39篇
  • git 2篇
  • ARM 6篇
  • 数学 1篇
  • Web 16篇
  • LwM2M and Coap 2篇
  • Latex 7篇
  • HTTP 2篇
  • matplotlib
  • http2 2篇
  • C语言 40篇
  • English Study 3篇
  • 嵌入式汇编 5篇
  • 80x86 1篇
  • linux 学习 156篇
  • 电脑基础 7篇
  • 音视频 5篇
  • 数据结构与算法 7篇
  • 数字电视 5篇
  • DirectFB 5篇
  • Java 5篇
  • 嵌入式 8篇
  • 嵌入式系统 4篇
  • 读书笔记 1篇
  • 字符编码 9篇
  • 基础理论 6篇
  • 链接
  • 编译&链接 5篇
  • go 9篇
  • Python 13篇
  • SDL 1篇
  • 文件系统 4篇
  • 多媒体技术 1篇
  • FFMEPG 1篇
  • Python 28篇

最新评论

  • Linux Bridge - Part 2

    泡芙萝莉酱: 这篇关于“Linux Bridge - Part 2”的博文真是内容丰富、引人入胜,让我大开眼界!博主的细致讲解和深入剖析展示了他的专业水准和丰富经验。期待更多博主的分享,相信能够让我们共同学习进步。真诚感谢博主的辛勤付出和支持!

  • 破获ARM64位CPU下linux crash要案之神技能:手动恢复函数调用栈

    tz_or: 不得不说那些水话影响了这篇文章的质量

  • TSN综述 – 广义时钟同步协议(gPTP)

    少年,吃糖么: gPTP是基于IEEE 802.1AS-2011标准,这个标准是在PTPv2的基础上进行开发的,因此报文头可复用

  • rfc4301- IP 安全架构

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/617638813。

  • TSN综述 – 广义时钟同步协议(gPTP)

    两条眉毛: 文中的PTP message header是1588v2的,不是gPTP的

最新文章

  • IPSec之数据封装协议
  • Linux Bridge - Part 2
  • 连接跟踪(conntrack):原理、应用及 Linux 内核实现
2024年35篇
2023年115篇
2022年236篇
2021年128篇
2020年75篇
2019年40篇
2015年16篇
2014年43篇
2013年105篇
2012年87篇
2011年70篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳坪山网站建设公司网站如何优化诊断分析做网站优化的方面网站优化推广找谁上蔡县网站seo优化排名优化网站哪个最靠谱潜山网站关键词优化软件对网站进行优化后的心得体会毕节seo优化网站价格摄影网站优化公司洛阳品牌网站优化托管网站优化的三个基本思想灯塔企业网站优化快速的网站seo优化网站排名优化策略优化前端网站加载速度网站过度优化怎么处理优化网站的软件选大将军21苏州网站优化沙井网站优化服务商云浮优化网站多少钱优化企业网站排名要多少钱网站没有pc端怎么优化做360手机网站优化快速排商丘网站优化注意事项视频网站平台优化如何选择网站优化的核心关键词网站内链优化是什么什么是转化型网站建设与优化嘉兴网站优化公司鹤壁优化网站排名香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化