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

简介: 总结了一下程序员们都应该知道的各类开源许可证及合规相关的知识

因为我们本身也在做开源,所以比较关注这个问题,最近因为工作需要,总结和分析了一下关于开源许可证相关的知识,也分享给大家一起讨论,希望得到大家的指导。


前言


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


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


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


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


常见许可证及其差异


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

1.png

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%,整体使用更宽松

1.png


开源许可证在标准化


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的开源工具


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

1.png

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

1.png

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


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

1)有一些组件是存在多种许可证的,可能不同目录文件指定的许可证类型不一样,要特别注意,当然我们的开源软件也考虑到了这种情况

2)有些组件你没有直接依赖,但是可能存在间接依赖的情况,你需要特别注意查看相关组件的依赖关系

1.png

开源项目地址:https://github.com/murphysecurity

使用文档:https://www.murphysec.com/docs/


参考链接


https://spdx.org/licenses/

https://opensource.org/licenses/category

相关文章
|
19天前
|
运维 监控 安全
网络安全产品之认识4A统一安全管理平台
随着业务网的发展,网络规模迅速扩大,安全问题不断出现。传统的账号口令管理、访问控制及审计措施已无法满足企业业务发展的需求。过去每个业务网系统常常各自维护一套用户信息数据,这种方式使得管理变得复杂且难以统一。同时,孤立地以日志形式审计操作者在系统内的操作行为,也使得审计过程变得繁琐和低效。因此,4A统一安全管理平台解决方案应运而生。
68 0
|
1月前
|
安全 网络安全
网络安全各类平台汇总(自用/持续更新)
网络安全各类平台汇总(自用/持续更新)
12 1
|
4月前
|
数据采集 安全
医院手术麻醉信息系统商业源码,自主版权,支持二次开发
系统主要是针对麻醉师在术前对患者的病史以及检查信息的记录,记录术前参考条件、心血管、神经系统、各内脏器官、循环系统情况,选择麻醉方法、制定麻醉方案,预见术中困难及防范措施。 麻醉医生可以通过系统快速记录手术麻醉过程中发生的各种临床事件,包括麻药、用药、事件、输氧、插管、拔管、输液、输血、呼吸等其他事件,结合数据采集功能同步得到的生命体征参数,形成麻醉记录单; 根据术中麻醉记录,对麻醉过程、麻醉效果进行术后麻醉总结,提供临床质量评估;对于室外手术室登记,另可做为突发事件后的手术补录功能;支持术后随访的记录,生成术后随访记录单;最终形成查看病人术前访视、患者信息、手术信息、麻醉记录、麻醉总结、术后
|
9月前
|
存储 安全 前端开发
知识产权/版权保护区块链系统开发搭建技术方案
知识产权/版权保护区块链系统开发搭建技术方案
|
9月前
|
开发框架 安全 前端开发
区块链财务管理平台如何开发?区块链财务管理平台开发源码规则解析
开发一个区块链财务管理平台需要多个方面的技术和知识,以下是一些可能的步骤和考虑因素:
|
11月前
|
运维 安全 网络安全
《网络安全等级保护2.0定级测评实施与运维-样章》——第1章 概述
《网络安全等级保护2.0定级测评实施与运维-样章》——第1章 概述
|
11月前
|
存储 供应链 安全
政府为开发人员发布指导以确保软件供应链安全
政府为开发人员发布指导以确保软件供应链安全
|
存储 前端开发 JavaScript
Retool 是什么,怎么样? Retool 低代码工具测评
Retool 是面向企业的低代码开发平台。使用 Retool 可快速搭建后台管理工具,比如快速构建 admin 后台管理、销售 ERP、客户 CRM、数据分析看板、amazon 云端文件上传管理等基于数据库或 API 的企业工具。 新事物刚出现,没亲身体验前,总是很难理解。我们总会把新事物与我们已认知的东西来做对比,有人说 Retool 是帮你配置好的 Vue & React 、是可视化拖拽编程平台、是在线前端生成器(并不是)。这些说法都只描述了 Retool 很小的一个点,Retool 是新一代低代码开发平台,是程序员的新效率工具,是历史上不曾有的新工具,拿旧地图看新世界总会有很大偏差,建
911 0
|
存储 缓存 安全
隐私合规综合实践
隐私合规综合实践
1353 1
|
云安全 安全 开发工具
EMAS发布最新隐私协议,为客户信息安全保驾护航
公民个人信息不容侵犯,数据显示,近年来工信部持续开展APP侵权整治活动,开展了六批次集中抽检,检查了76万款APP,通报748款违规APP,下架了245款拒不整改的APP。移动研发平台EMAS高度重视个人信息的保护,在客户使用EMAS服务时,将根据法律法规要求并参照行业最佳实践为客户个人信息安全提供充分保障。现EMAS最新隐私协议已发布,将全方面为客户的信息安全提供保障。