开源许可证保姆级入门手册

简介: 还在为开源许可证头秃?快收下这份保姆级入门手册~

开源许可证是个相当庞杂的范畴,仅OSI (Open Source Initiative, 开放源代码促进会)批准的许可证就有80多种;此外,还有数百种在开源生态中流传的其他许可证。

虽然有些开源许可证相对简洁明了,适合只想简单发布开源项目的人使用;但还有一些许可证非常冗长复杂,甚至需要专业的法务团队介入。

本文将以对比形式分析开源许可证相关的一些要素,以便读者快速清晰地掌握这一领域的基础知识。(省流版许可证选择建议见文末~)

01 宽松式许可证和Copyleft 许可证

开源许可证通常可以分为两大类:宽松式许可证及Copyleft许可证(也称著佐权)。二者的差别主要在于宽松度以及与使用开源软件组件相关的要求和许可权限的多少。

当一个开源组件采用Copyleft 许可证时,开发人员有权使用、修改和共享该作品,前提是要履行对应的义务。一旦代码中使用了许可证为Copyleft类的开源组件,就需要向他人开放你的代码。GPL许可证族是这类许可证中最早出现也是最流行一种,包含许多版本和变种。

与之相对,宽松式许可证是另一个极端。它保证了使用、修改和重新分发的自由,同时也允许创建专有的派生作品。宽松式许可证对于采用它的组件的使用几乎没有限制,并且几乎不需要回报。这类许可证中,最简洁明了和最受欢迎的是MIT许可证。

02 许可证的限制、条件和权限

除去这两大类别的差异,每一类下许可证和许可证族也会因为一些附加参数而产生具体差异。

例如,同属宽松式许可证的MIT许可证和Apache许可证迥然不同,同属Copyleft类的Eclipse许可证和GPLv3许可证也并没有共用相同的条款和条件。

每个开源许可证都有自己独特的限制、条件和权限。GitHub的choosealicense.com旨在帮助开发人员找到合适的开源许可证;上面提供了一个附录,用于比较不同许可证,并根据许可证授权和限制的内容对比它们的差异性。

根据这个附录,开源许可证授予项目在版权或其他知识产权法律下可能不被允许的行为许可;这些许可通常需要遵守特定条件。大多数开源许可证还具有免除担保和责任的限制,有时还明确排除了专利或商标的许可授权。

03 开源许可证中的权限

在开源许可证中,最常被授予权限的行为涉及商业使用、分发、修改和私人使用。

其中,一个重要区别是专利使用的许可。许多开源许可证在特定条件下明确授予贡献者的专利权,例如GPLv3、Apache license 2.0、Eclipse公共许可证1.0和2.0等。还有一些许可证明确声明不授予贡献者专利权,包括BSD 3-Clause Clear、Creative Commons Attribution 4.0 International、Creative Commons Attribution Share Alike 4.0 International、Creative Commons Zero v1.0 Universal和ODC Open Database License v1.0等。

虽然所有开源许可证都会授予商业使用、分发、修改和私人使用的权限,但这些权限受特定条件的约束;不同许可证的条件各不相同。这些条件可能包括在通过网络或其他渠道分发软件时提供源代码,使用开源项目时纳入许可证信息和版权声明,在同一许可证下发布代码修改,记录对代码进行的所有更改等。

04 开源许可证中的条件

通常情况下, Copyleft许可证比宽松式许可证附带更多条件。随着开源的使用愈发普遍,前者在商业组织中的的流行度也在逐渐下降

最典型的例子是GPL许可证族对网络分发的限制。虽然GPL 2.0和3.0的条件并未明确规定网络使用属于分发,但作为公认最强Copyleft许可证,AGPL v3.0要求使用修改后的版本提供网络服务时,必须提供该版本的完整源代码。

05 开源许可证的限制

比较开源许可证的另一种方法是看它们的限制。开源许可证的限制涉及责任、明确声明不授予商标权和不提供担保。

对商标使用的限制可以看作一个分野。大多数GPL族许可证并没有明确规定不授予商标权,而Creative Commons和Apache v2.0则明确包含这一限制。值得注意的是,GitHub的choosealicense.com指出,没有这种声明的许可证可能不授予任何隐含的商标权利。

06 Copyleft许可证:GNU GPL vs Eclipse开源许可证

虽然Eclipse开源许可证(EPL)和GNU GPL许可证族都被认为是Copyleft许可证,二者宽松程度不同。GNU GPL许可证族有强制性的Copyleft条款,无论用户代码中包含多少GPL代码,都要公开其软件的完整源代码。

EPL算是一种较弱的 Copyleft 许可证。它不要求用户共享其整个软件项目,而只需在以源代码形式分发时开源任何包含EPL 组件的源码,并在以对象形式分发时按需提供源代码。

此外,EPL只要求用户在源码形式分发时中披露部分源代码,对二进制文件形式没有要求;而GPL族则要求在源代码和二进制文件的复制或衍生版本中都继续使用同一许可证。

07 宽松式许可证:Apache 2.0 vs BSD开源许可证

BSD许可证是一种高度宽松的许可证,允许用户以任何方式修改和重新分发使用了BSD许可证的软件。早期版本的Apache许可证与BSD许可证类似,但Apache 2.0增加了一些关键的差异,使得这两种许可证区别开来。

明确授予专利权。Apache许可证2.0明确规定了在使用、修改或分发该许可证许可的软件时授予的专利权,并列举了撤销此类授权的情况。

对使用的概念进行清晰定义。Apache许可证2.0明确定义了所有使用的术语和概念,减少了歧义的空间。

Apache许可证2.0无需重新措辞即可重复使用。其他项目可以轻松使用Apache许可证2.0而无需修改许可证文档本身的任何内容,大大节省了处理许可证问题的时间;它也因此成为开发人员最喜欢的许可证之一。

结语

无论您是正在开发一个软件项目并需要附加开源许可证以便共享,还是希望确保所使用的软件组件所附带的开源许可证与您自己的项目和需求兼容,了解每个许可证意味的不同限制、条件和权限都非常重要。有些细节看起来微不足道,但会对开源组件的使用和分发方式有决定性的影响,进而影响对开源的使用及软件制品的合规性。

2.png

图:许可证选择指南省流版

感谢每一位开源社区成员对OpenSCA的支持和贡献。我们鼓励更多伙伴参与到OpenSCA开源项目的建设中来,成为开源贡献者,有任何建议都可以发在评论区或者Gitee、GitHub上OpenSCA项目的Issues中。让我们一起拥抱开源,共筑开源安全生态,促进开源产业健康发展。

OpenSCA的代码会在GitHub和Gitee持续迭代,欢迎Star和PR,成为我们的开源贡献者,也可提交问题或建议至Issues。我们会参考大家的建议不断完善OpenSCA开源项目,敬请期待更多功能的支持。

GitHub:
https://github.com/XmirrorSecurity/OpenSCA-cli/releases

Gitee:
https://gitee.com/XmirrorSecurity/OpenSCA-cli/releases

OpenSCA官网:
https://opensca.xmirror.cn/

相关文章
|
人工智能 机器人 测试技术
使用LM Studio在本地运行LLM完整教程
GPT-4被普遍认为是最好的生成式AI聊天机器人,但开源模型一直在变得越来越好,并且通过微调在某些特定领域是可以超过GPT4的。
6442 1
|
8月前
|
Linux 数据安全/隐私保护 Windows
文件传输告别龟速!1分钟搞定Windows↔CentOS高速通道 小白也能玩转的Xftp秘籍
Xftp 是一款便捷的远程文件传输工具,与 XShell 类似,支持通过 SFTP 协议实现文件上传和下载。首先需下载安装 Xftp,并获取目标 Linux 系统(如 CentOS)的 IP 地址。打开 Xftp 后,按 `Ctrl + N` 新建会话,输入主机 IP、协议(SFTP)、用户名和密码连接服务器。
520 15
文件传输告别龟速!1分钟搞定Windows↔CentOS高速通道 小白也能玩转的Xftp秘籍
|
9月前
|
机器学习/深度学习 搜索推荐 异构计算
LLM模型添加自定义Token代码示例:为Llama 3.2模型添加思考与回答标记
本文将介绍如何为大型语言模型(LLM)添加自定义token并进行训练,使模型能够有效地利用这些新增token。以Llama 3.2模型为基础,实现了类似DeepSeek R1中think和answer标记功能的扩展方法,通过监督微调使模型学习使用这些标记进行推理过程与答案输出的区分
633 0
LLM模型添加自定义Token代码示例:为Llama 3.2模型添加思考与回答标记
|
人工智能 JavaScript 前端开发
利用 AI 进行代码生成:GitHub Copilot 的实践与反思
【10月更文挑战第23天】本文探讨了GitHub Copilot,一个由微软和OpenAI合作推出的AI代码生成工具,其核心功能包括智能代码补全、多语言支持、上下文感知和持续学习。文章介绍了Copilot在加速开发流程、学习新语言、提高代码质量和减少重复工作等方面的应用,并反思了AI在代码生成中的代码所有权、安全性和技能发展等问题。最后,文章提供了实施Copilot的最佳实践,强调了在使用AI工具时保持对代码的控制和理解的重要性。
|
人工智能 自然语言处理 物联网
llama factory 从数据集起步 跑通 qwen系列开源生成式大模型 微调
`dataset_info.json` 文件用于管理 llama factory 中的所有数据集,支持 `alpaca` 和 `sharegpt` 格式。通过配置此文件,可以轻松添加自定义数据集。数据集的相关参数包括数据源地址、数据集格式、样本数量等,支持 Hugging Face 和 ModelScope 两个平台的数据集仓库。针对不同格式的数据集,提供了详细的配置示例,如 `alpaca` 格式的指令监督微调数据集、偏好数据集等,以及 `sharegpt` 格式的多模态数据集等。今天我们通过自定义数据集的方式来进行qwen2.5_14B_instruct模型进行微调
5561 7
|
设计模式 前端开发 Java
谈谈springboot的责任链模式
【4月更文挑战第16天】责任链模式是一种行为设计模式,旨在将请求的发送者和接收者解耦。在这种模式中,多个对象可以处理同一请求,但具体由哪个对象处理,则取决于运行时决定。这样的设计使得请求的处理者形成一条链,每个处理者都有机会处理请求或者将其传递给链中的下一个处理者
389 5
|
负载均衡 应用服务中间件 Linux
Nginx安装Windows、Linux | 正向代理、反向代理、负载均衡
Nginx安装Windows、Linux | 正向代理、反向代理、负载均衡
387 0
|
存储 算法 Java
Java程序设计实验2 | Java语言基础(二)
分别用do-while和for循环计算1+1/2!-1/3!+1/4!-1/5!…的前20项之和。
192 1
|
存储 弹性计算 安全
阿里云服务器8核16G配置可选实例规格、收费标准及2024年优惠价格参考
阿里云服务器8核16G配置多少钱?可选实例规格有哪些?2024年的优惠价格是多少?根据阿里云2024年的收费标准及活动价格来看,8核16G配置云服务器的价格为3084.36元1年。阿里云服务器8核16G配置可选的规格有二十几个,不同实例的价格有所不同,下面是8核16G配置可选实例规格详解及优惠价格表。
2002 0
阿里云服务器8核16G配置可选实例规格、收费标准及2024年优惠价格参考
|
数据可视化 算法 C++
C++ cmake工程引入qt6和Quick 教程
C++ cmake工程引入qt6和Quick 教程
1027 0