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

【开源合规】开源许可证基础知识与风险场景引入

原创
作者头像
没事就要多学习
发布于 2024-07-20 05:32:35
发布于 2024-07-20 05:32:35
4690
举报
文章被收录于专栏:产品那些事产品那些事

什么是开源许可证(License)?

逛Github时经常看到项目README旁边,有个License tab,不知道大家是不是跟我一样,撇了一眼就过去了,不太清楚这个license具体作用,有点法律意识的朋友可能会意识到这个可能是版权声明,不过难免还是会有其他疑问:既然都开源了,怎么还有各种条件限制?除了GPL还有Apache、MIT等,这些"License"又有哪些区别呢?

很多朋友可能像之前的我一样,二开项目或者使用第三方组件时直接拿来就用了,没有考虑过其背后的"风险"……

开源许可证有什么用?

写在前面的一句话:开源 != 免费

首先来看一下关于开源和免费的定义:

开源: 1、一个源码开放的项目(个人或团队开发) 2、一个友好交流的社区(除了源码的开放,还有社区的开放,人人都可以提issue、pr等) 3、一个产品(好的项目同时也是一个好的产品,例如Linux的产品化,可以说,如果没有 Linux 的产品化,也不会有 Linux 开源的枝繁叶茂) 免费: 1、无任何使用费用 2、闭源或开源:免费软件可以是闭源的,也可以是开源的

互联网的发展离不开开源社区的建设,很多时候,开源发布的产品难以满足用户的需求。所以,==在不违反相关开源许可证 (License) 的条件下==,有些公司对其加以定制,就变身为自己的产品或解决方案。

很多开发同学都不清楚开源许可证的"存在",更别提Boss有这方面的意识了

开源许可证是指用于授权他人使用、修改和分发软件的一种法律文件。它规定了软件的使用权利和义务,确保开发者和用户了解如何合法地使用软件。

这里可以将开源许可证作用总结为:

  • 定义使用权限:明确规定用户在使用、修改和分发软件时的权利和限制,确保软件的使用符合开发者的意图。
  • 保护开发者权益:通过许可证条款,保护开发者的知识产权,确保他们的贡献得到适当的认可,并明确他们在法律上的责任和义务。
  • 著作权声明:保留原始版权声明和许可证文本,确保开发者的著作权得到尊重,同时为用户提供使用软件的法律依据。 可以简单理解为:开源许可证中规定了使用者可以做什么,不能做什么等一系列权利

开源许可证分类

下面对一些常见许可证进行整理分析

分类

示例许可证

描述

公共代码 (Public Domain)

CC0、无License

理论上无限制,任何人都可以自由使用、修改和分发

宽松型许可证 (Permissive)

MIT、Apache 2.0、BSD

不对使用情景做限制,允许闭源使用和分发,只需保留版权声明和许可证文本

弱互惠型许可证 (Weak Copyleft)

LGPL、MPL、EPL

代码使用方式限制较为宽泛,允许与闭源代码结合使用,但要求对修改后的部分开源

互惠型许可证 (Reciprocal)

GPL、EUPL

除非独立使用,否则需要开源,要求衍生作品以相同许可证发布

强互惠许可证 (Strong Copyleft)

AGPL、SSPL

为第三方服务就要开源,且开源对象不一定局限于开源代码相关代码,要求通过网络提供服务时也要开源

不同的许可证虽然属于同一类型,但是使用者所遵守的要求都是不同

开源许可证分类及描述

公共代码 (Public Domain)

公共领域代码放弃了所有版权和相关权利,允许任何人自由使用、修改和分发,没有任何限制。

CC0

  • 允许开发者放弃版权,使作品进入公共领域,无任何限制。

无License

  • 野生项目🤔️明确声明放弃所有版权和相关权利,允许自由使用、修改和分发。

宽松型许可证 (Permissive)

允许用户自由使用、修改和分发代码,包括将代码集成到闭源项目中。只需保留原始版权声明和许可证文本。

MIT

  • 简单且宽松,允许几乎所有用途,只需保留版权声明和许可证文本。

Apache 2.0

  • 允许闭源使用,提供专利权保护,需保留版权声明、许可证文本和NOTICE文件。

BSD

  • 有三条款和两条款版本,允许闭源使用,需保留版权声明和免责声明。

弱互惠型许可证 (Weak Copyleft)

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

LGPL

  • 允许在闭源项目中使用,但修改后的库本身必须开源,适用于库和框架。

MPL

  • 允许闭源使用,但修改后的文件必须开源,适用于希望混合使用开源和闭源代码的项目。

EPL

  • 允许闭源使用,但修改后的文件必须开源,提供商业友好性,适用于企业项目。

互惠型许可证 (Reciprocal)

要求任何基于原始代码的修改和扩展也必须以相同的许可证发布,确保衍生作品保持开源。

GPL

  • 强制共享,要求衍生作品也必须以GPL许可证发布,适用于希望确保软件及其修改版本始终保持开源的项目。

EUPL

  • 类似于GPL,要求任何衍生作品都必须以相同或兼容的许可证发布,特别强调与欧洲法律的兼容性。

强互惠许可证 (Strong Copyleft)

具有最严格的要求,任何基于原始代码的使用、修改和扩展都必须以相同的许可证发布,并且任何链接到这些代码的作品也必须开源。

AGPL

  • 类似于GPL,但适用于网络服务,要求通过网络提供的修改版本的源代码也必须公开。

SSPL

  • 要求任何基于SSPL许可的软件作为服务提供时,必须公开整个服务栈的源代码。

为项目选择一个许可证

个人开源项目维护者怎么选择一个合适的许可证呢?

这里借用一下阮一峰大佬整理的划分图,看起来一目了然。

Just Do It

这里以我自己的开源项目为例,使用Apache 2.0

下载License模版

访问:https://www.apache.org/licenses/LICENSE-2.0.txt

项目根目录,新建LICENSE文件,粘贴过去

修改版权内容

照着修改一下就行了

上传更新

简单push一下

Github会自动识别、排版

开源合规-企业开源许可证合规治理

对于个人和企业,我收集整理了需要关注许可证风险的几种场景

使用开源软件开发闭源产品

风险:某些开源许可证(如GPL、AGPL、SSPL)要求任何基于其代码的修改或扩展必须以相同的许可证发布。如果使用这些许可证的软件来开发闭源产品,可能需要公开源代码,影响商业机密和竞争优势。 建议:在选择开源软件时,仔细阅读并理解许可证条款,确保不会违反开源许可证的要求。

分发开源软件或包含开源组件的产品

风险:分发包含开源组件的软件时,必须遵守相应的许可证条款,例如保留版权声明、提供源代码等。未能遵守这些要求可能导致法律纠纷。 建议:确保分发的软件符合所有开源许可证的要求,并提供必要的文档和源代码。

修改开源软件并再发布

风险:修改开源软件并再发布时,需要遵守原始开源许可证的条款。例如,GPL要求修改后的软件也必须以GPL许可证发布。 建议:在修改开源软件时,保留原始版权声明,并遵循许可证的发布要求。

将开源软件作为服务提供(SaaS)

风险:强互惠型许可证(如AGPL、SSPL)要求如果通过网络提供服务,必须公开源代码。使用这些许可证的软件提供SaaS服务时,需要公开源代码,可能影响商业机密。 建议:评估开源软件的许可证类型,选择适合的许可证,避免使用强互惠型许可证的软件提供SaaS服务,除非愿意公开源代码。

组合使用不同许可证的开源软件

风险:不同开源许可证之间可能存在冲突,导致无法合法组合使用。例如,GPL和某些宽松型许可证之间的冲突。 建议:在组合使用开源软件时,确保不同许可证之间的兼容性,避免法律风险。

使用开源软件中的专利

风险:某些开源许可证(如Apache 2.0)包含专利授权条款,而其他许可证(如GPL)可能不包括。这可能导致专利侵权风险。 建议:了解开源软件的专利授权条款,确保不会侵犯第三方专利。

开源软件的合规性管理

风险:==缺乏开源软件合规性管理,可能导致违反许可证条款的风险,影响企业声誉和法律地位(开源社区谴责,舆论风险导致品牌形象受损,企业也会被行业或者地区监管处罚……)。== 建议:建立开源软件合规性管理流程,使用SCA工具检测和管理开源组件,确保合规性。

总结

对于开源许可证的基础内容,以及风险场景引入先写这么多,下一篇将对市场上主流SCA工具许可证风险识别功能进行相关"测评🤔️"(使用方法、接入场景……)

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【开源合规】开源许可证风险场景详细解读
接上篇文章所讲,使用开源组件,忽略开源许可证问题是存在合规风险的,但是关于什么场景下真实存在风险,以及什么样的风险?很多文章也没有讲的很明白,这些内容大部分都隐藏在晦涩难懂的许可证原文里面。通过一段时间的接触,包括收集资料、翻译许可证原文等学习,特此整理了一部分……
没事就要多学习
2024/07/20
8060
【开源合规】开源许可证风险场景详细解读
【开源合规】开源许可证基础知识与风险场景引入
逛Github时经常看到项目README旁边,有个License tab,不知道大家是不是跟我一样,撇了一眼就过去了,不太清楚这个license具体作用,有点法律意识的朋友可能会意识到这个可能是版权声明,不过难免还是会有其他疑问:既然都开源了,怎么还有各种条件限制?除了GPL还有Apache、MIT等,这些"License"又有哪些区别呢? 很多朋友可能像之前的我一样,二开项目或者使用第三方组件时直接拿来就用了,没有考虑过其背后的"风险"……
没事就要多学习
2024/07/18
1120
【开源合规】开源许可证基础知识与风险场景引入
如何为自己的开源项目选择合适的开源许可证?
之前我们介绍过很多款开源软件/项目,在文章的最后面总有代码仓库的License:MIT/Apache/GPL:
埃兰德欧神
2024/07/15
4820
如何为自己的开源项目选择合适的开源许可证?
开源许可证教程
作为一个开发者,如果你打算开源自己的代码,千万不要忘记,选择一种开源许可证(license)。 许多开发者对开源许可证了解很少,不清楚有哪些许可证,应该怎么选择。本文介绍开源许可证的基本知识,主要参考
ruanyf
2018/04/12
1K0
开源许可证教程
开源运动发展史与开源许可证(BSD、GPL、Apache、MIT、木兰(中国))的那些事儿
2022年1月份,Apache SkyWalking社区在其blog上实锤字节跳动的火山引擎里面违反Apache 2.0许可证,重新发布了Apache SkyWalking开源软件。
Flowlet
2022/08/18
1.4K0
开源运动发展史与开源许可证(BSD、GPL、Apache、MIT、木兰(中国))的那些事儿
【开源合规】开源许可证风险场景详细解读
接上篇文章所讲,使用开源组件,忽略开源许可证问题是存在合规风险的,但是关于什么场景下真实存在风险,以及什么样的风险?很多文章也没有讲的很明白,这些内容大部分都隐藏在晦涩难懂的许可证原文里面。通过一段时间的接触,包括收集资料、翻译许可证原文等学习,特此整理了一部分……
没事就要多学习
2024/07/18
2310
【开源合规】开源许可证风险场景详细解读
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) – 整理
常见开源许可证及其风险等级指南
开发人员经常在软件中引入开源的代码片段、函数、方法和操作代码。因此,软件代码中经常会包含各种声明不同许可证的子组件。这些子组件的许可证条款和条件与项目整体主许可证的条款和条件冲突时,就会产生许可证合规风险。
OpenSCA社区
2023/09/18
1.5K0
常见开源许可证及其风险等级指南
开源许可证保姆级入门手册
开源许可证是个相当庞杂的范畴,仅OSI (Open Source Initiative, 开放源代码促进会)批准的许可证就有80多种;此外,还有数百种在开源生态中流传的其他许可证。
OpenSCA社区
2023/07/07
6060
开源许可证保姆级入门手册
担心制品合规风险?做好这些就够了
今年来,开源的热度持续快速上升。开源给各大企业、组织带来了诸如迭代更快、成本更低、质量更高的收益;然而,企业在合规使用开源软件的过程中,也会面临一系列知识产权风险,这些风险主要源于开源许可证的传染性特征、不同开源许可之间可能存在的不兼容性,以及开源软件使用规则中所蕴含的不确定性等因素。
嘉为蓝鲸
2024/12/12
1550
担心制品合规风险?做好这些就够了
深入理解开源许可证(Apache,MIT,GPL,BSD,CC)
如果说有什么东西正在为开源世界保驾护航,那就一定不能不提到开源许可证(Open Source License),正是因为这些各不相同的开源许可证的共同支持下,才有了现在这么繁荣的开源软件社区。
HikariLan贺兰星辰
2022/10/27
3.8K0
对开源的认知
没有开源软件,现在的互联网根本无法存在,开源的历史可以追溯到ARPANET建立。开源在今天已经不再是一个时髦的词了,对于互联网的开发者来说,它现在就像空气和水一样,就在我们的生活中。
半吊子全栈工匠
2019/01/23
9850
深入探讨各种开源协议:选择合适的许可证为你的项目保驾护航
在软件开发的世界中,开源项目已经成为推动技术创新的重要力量。无论是个人开发者还是企业,选择合适的开源许可证都至关重要。不同的许可证对代码的使用、修改、分发等方面有不同的要求,了解这些细节可以帮助开发者更好地保护自己的权益,并促进项目的广泛应用。本文将深入探讨各种常见的开源协议,包括GPL、MIT、Apache、BSD、MPL、CC、EPL、AGPL、LGPL以及中国本土的木兰许可协议,帮助你在复杂的开源生态中找到最合适的许可证。
繁依Fanyi
2024/08/20
4270
如何选择合适的开源许可证?
选择正确的开源许可证是确保软件分发和使用的关键。本文详细探讨了如何根据项目需求、目标受众和期望的控制权选择合适的开源许可证。
猫头虎
2024/04/09
2440
如何选择合适的开源许可证?
趣谈自由软件与开源软件(五):自由与开源许可证
对于国内习惯了使用开源软件或框架,类库的程序员群体来说,最熟悉的License应该是开源许可证,也就是Open Source License。在开源许可证中,接触最多的可能是Apache License以及MIT这两个应用较为普遍的许可证了。
御剑
2022/03/09
8830
版本升级 | v1.0.12发布,许可证风险早知道
开源软件一般都有对应的开源许可证(Open Source License)对软件的使用、复制、修改和再发布等进行限制。许可证即授权条款,开源许可证就是保证开源软件这些限制的法律文件,目的在于规范受著作权保护的软件的使用或者分发行为。开源许可证是开源软件生态系统的基础,可以促进软件的协同开发。
OpenSCA社区
2023/07/14
2680
版本升级 | v1.0.12发布,许可证风险早知道
一文看懂开源许可证丨开源知识科普
在很多人眼中,「开源」是一个时髦且有情怀的词汇,始终伴随有理想主义色彩,因此不少公司开始给自己贴上“开源”标签。但一个优秀的开源项目远远不止是简单的公开源代码,而是需要将其当作公司战略进行贯彻,才能架设起牢不可破的信任桥梁。
PingCAP
2021/10/21
2.1K0
开源许可证的变迁:从Elastic两次变更开源协议说开去
开源从开始到现在已经有几十年历史,开源许可证在开源运动的发展中起到了基石作用,不管是从文化还是法律的角度,都较好地推动了开源的发展。
深度学习与Python
2022/06/13
1K0
开源许可证的变迁:从Elastic两次变更开源协议说开去
开源许可证协议
最近新闻中的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
开源许可证协议
2020 年开源许可证最新趋势:67% 为宽松许可证
开放源码许可证通常被开发人员视为是法律顾问在他们忙于创建软件产品时,必须处理的“枯燥”合规性问题。随着各行各业使用开源代码,一些开源项目已成为“大生意”,这使得关于开放源码许可证的再次成为争论的焦点。
程序猿DD
2020/05/20
1.6K0
推荐阅读
相关推荐
【开源合规】开源许可证风险场景详细解读
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档