各开源协议一览

news2025/4/18 15:29:43

在 GitHub 上,开源项目通常会使用一些常见的开源协议来定义项目的使用、修改和分发规则。以下是目前 GitHub 上最常见的几种开源协议及其差异和示例说明:


TL;DR

协议宽松程度是否强制开源专利保护适用场景
MIT最宽松希望代码被广泛使用
Apache 2.0宽松希望提供专利保护
GPL严格希望确保代码始终开源
LGPL较宽松部分是希望代码被更广泛集成
BSD宽松希望代码被广泛使用且简单
MPL 2.0中等部分是希望代码部分开源但允许混合

协议详解

1. MIT License

  • 特点
    • 非常宽松,几乎没有任何限制。
    • 允许用户自由使用、复制、修改、合并、发布、分发、再授权甚至用于商业用途。
    • 唯一要求是保留原始版权声明和许可声明。
  • 适用场景
    • 适合希望代码被广泛使用的开发者。
    • 示例:Vue.js 使用了 MIT License 。
  • 差异
    • 相较于其他协议(如 GPL),MIT 不强制要求衍生作品也必须开源。

2. Apache License 2.0

  • 特点
    • 提供了明确的专利授权条款,保护用户免受潜在的专利诉讼。
    • 允许用户自由使用、修改和分发代码,但需要保留版权声明和许可证文件。
    • 明确限制商标使用,不允许用原作者的商标进行宣传。
  • 适用场景
    • 适合希望保护知识产权并提供专利保障的项目。
    • 示例:Apache Kafka 使用了 Apache License 2.0 。
  • 差异
    • 比 MIT 更加详细,特别是关于专利和商标的规定。

3. GNU General Public License (GPL)

  • 特点
    • 强制性开源,任何基于 GPL 代码的衍生作品也必须以 GPL 协议发布。
    • 用户可以自由使用、修改和分发代码,但必须公开源码。
  • 适用场景
    • 适合希望确保代码始终开源的项目。
    • 示例:Linux Kernel 使用了 GPL 。
  • 差异
    • 相较于 MIT 和 Apache,GPL 对衍生作品有更强的约束力。

4. Lesser GNU General Public License (LGPL)

  • 特点
    • 是 GPL 的一个变种,允许将 LGPL 代码作为库链接到闭源项目中。
    • 衍生作品如果是独立模块,可以不公开源码;但如果修改了 LGPL 库本身,则必须公开修改后的代码。
  • 适用场景
    • 适合希望代码被更广泛地集成到商业项目中的库类项目。
    • 示例:GNU C Library (glibc) 使用了 LGPL 。
  • 差异
    • 比 GPL 更宽松,但仍要求对库本身的修改保持开源。

5. BSD License

  • 特点
    • 类似于 MIT,非常宽松。
    • 分为两种主要版本:2-Clause(简化版)和 3-Clause(禁止用项目名称做广告)。
    • 要求保留版权声明和许可证文件。
  • 适用场景
    • 适合希望代码被广泛使用且不介意闭源衍生作品的项目。
    • 示例:FreeBSD 使用了 BSD License 。
  • 差异
    • 相较于 MIT,3-Clause 版本增加了对广告的限制。

6. Mozilla Public License 2.0 (MPL 2.0)

  • 特点
    • 是 BSD 系协议和 GPL 系协议的折中。
    • 要求对 MPL 覆盖的代码部分保持开源,但允许与闭源代码混合。
    • 必须保留版权信息,并公开对覆盖代码的修改。
  • 适用场景
    • 适合希望代码部分开源但允许与其他闭源代码协作的项目。
    • 示例:Firefox 使用了 MPL 2.0 。
  • 差异
    • 比 GPL 更宽松,但比 MIT 和 BSD 更严格。

7. Creative Commons (CC)

  • 特点
    • 主要用于非代码内容(如文档、图片、音乐等)。
    • 提供多种版本,包括 CC0(完全放弃版权)、CC BY(署名即可使用)等。
  • 适用场景
    • 适合非软件项目或需要灵活授权的内容。
    • 示例:Wikipedia 的部分内容使用了 CC BY-SA 。
  • 差异
    • 不适用于传统意义上的代码项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2331955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习12-集成学习-案例

参考 【数据挖掘】基于XGBoost的垃圾短信分类与预测 【分类】使用XGBoost算法对信用卡交易进行诈骗预测 银行卡电信诈骗危险预测(LightGBM版本) 【数据挖掘】基于XGBoost的垃圾短信分类与预测 基于XGBoost的垃圾短信分类与预测 我分享了一个项目给你《【数据挖掘】基于XG…

【数据库原理及安全实验】实验二 数据库的语句操作

目录 指导书原文 实操备注 指导书原文 【实验目的】 1) 掌握使用SQL语言进行数据操纵的方法。 【实验原理】 1) 面对三个关系表student,course,sc。利用SQL语句向表中插入数据(insert),然后对数据进行delete&…

【BFT帝国】20250409更新PBFT总结

2411 2411 2411 Zhang G R, Pan F, Mao Y H, et al. Reaching Consensus in the Byzantine Empire: A Comprehensive Review of BFT Consensus Algorithms[J]. ACM COMPUTING SURVEYS, 2024,56(5).出版时间: MAY 2024 索引时间(可被引用): 240412 被引:…

Linux-CentOS-7—— 配置静态IP地址

文章目录 CentOS-7——配置静态IP地址VMware workstation的三种网络模式配置静态IP地址1. 编辑虚拟网络2. 确定网络接口名称3. 切换到网卡所在的目录4. 编辑网卡配置文件5. 查看网卡文件信息6. 重启网络服务7. 测试能否通网8. 远程虚拟主机(可选) 其他补…

Jupyter Lab 无法启动 Kernel 问题排查与解决总结

📄 Jupyter Lab 无法启动 Kernel 问题排查与解决总结 一、问题概述 🚨 现象描述: 用户通过浏览器访问远程服务器的 Jupyter Lab 页面(http://xx.xx.xx.xx:8891/lab)后,.ipynb 文件可以打开,但无…

算法训练之位运算

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

C++设计模式+异常处理

#include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory> #include <stdexcept> // 包含异常类using namespace std;// 该作业要求各位写一…

checkra1n越狱出现的USB error -10问题解决

使用checkra1n进行越狱是出现&#xff1a; 解决办法(使用命令行进行越狱)&#xff1a; 1. cd /Applications/checkra1n.app/Contents/MacOS 2. ./checkra1n -cv 3. 先进入恢复模式 a .可使用爱思助手 b. 或者长按home,出现关机的滑条&#xff0c;同时按住home和电源键&#…

golang-defer延迟机制

defer延迟机制 defer是什么 defer是go中一种延迟调用机制。 执行时机 defer后面的函数只有在当前函数执行完毕后才能执行。 执行顺序 将延迟的语句按defer的逆序进行执行&#xff0c;也就是说先被defer的语句最后被执行&#xff0c;最后被defer的语句&#xff0c;最先被执…

【小沐学Web3D】three.js 加载三维模型(Angular)

文章目录 1、简介1.1 three.js1.2 angular.js 2、three.js Angular.js结语 1、简介 1.1 three.js Three.js 是一款 webGL&#xff08;3D绘图标准&#xff09;引擎&#xff0c;可以运行于所有支持 webGL 的浏览器。Three.js 封装了 webGL 底层的 API &#xff0c;为我们提供了…

一种替代DOORS在WORD中进行需求管理的方法 (二)

一、前景 参考&#xff1a; 一种替代DOORS在WORD中进行需求管理的方法&#xff08;基于WORD插件的应用&#xff09;_doors aspice-CSDN博客 二、界面和资源 WORD2013/WORD2016 插件 【已使用该工具通过第三方功能安全产品认证】&#xff1a; 1、 核心功能 1、需求编号和跟…

一个基于ragflow的工业文档智能解析和问答系统

工业复杂文档解析系统 一个基于ragflow的工业文档智能解析和问答系统,支持多种文档格式的解析、知识库管理和智能问答功能。 系统功能 1. 文档管理 支持多种格式文档上传(PDF、Word、Excel、PPT、图片等)文档自动解析和分块处理实时处理进度显示文档解析结果预览批量文档…

23种设计模式-行为型模式-访问者

文章目录 简介场景解决完整代码核心实现 总结 简介 访问者是一种行为设计模式&#xff0c;它能把算法跟他所作用的对象隔离开来。 场景 假如你的团队开发了一款能够使用图像里地理信息的应用程序。图像中的每个节点既能代表复杂实体&#xff08;例如一座城市&#xff09;&am…

组播网络构建:IGMP、PIM 原理及应用实践

IP组播基础 组播基本架构 组播IP地址 一个组播IP地址并不是表示具体的某台主机&#xff0c;而是一组主机的集合&#xff0c;主机声明加入某组播组即标识自己需要接收目的地址为该组播地址的数据IP组播常见模型分为ASM模型和SSM模型ASM&#xff1a;成员接收任意源组播数据&…

建筑兔零基础自学记录69|爬虫Requests-2

Requests库初步尝试 #导入requests库 import requests #requests.get读取百度网页 rrequests.get(http://www.baidu.com) #输出读取网页状态 print(r.status_code) #输出网页源代码 print(r.text) HTTP 状态码是三位数字&#xff0c;用于表示 HTTP 请求的结果。常见的状态码有…

NVIDIA PhysX 和 Flow 现已完全开源

NVIDIA PhysX SDK 在 3-Clause BSD 许可下开源已有六年半了&#xff0c;但其中并非所有内容都是开源的。直到最近&#xff0c;随着 GPU 模拟内核源代码在 GitHub 上的发布&#xff0c;这种情况才有所改变。以下是 NVIDIA 分享的消息&#xff0c;以及 Flow SDK 着色器实现的发布…

电脑DNS出错无法打开网页

目录 解决步骤 打开“控制面板”--》“查看网络状态和任务” 打开“更改适配器设置” 对WLAN右键&#xff0c;打开属性 打开“使用下面的DNS服务器地址”--》高级 添加“114.114.114.114”&#xff0c;点击确定 今天晚上突然网页打不开了&#xff0c;一开始我以为是网络的…

[Redis]redis-windows下载安装与使用

本篇记录windows redis下载安装与使用。 下载 官网下载方式(没windows版) https://redis.io/downloads/#stack 可以选择下载社区版Redis CE与增强版Redis Stack。 两者都不支持直接运行在windows上&#xff0c;需要Docker环境。 You can install Redis CE locally on your …

极氪汽车云原生架构落地实践

云原生架构落地实践的背景 随着极氪数字业务的飞速发展&#xff0c;背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验&#xff0c;并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。 为快速响应用户的需求&#xff0c;例如…

2025年AI开发学习路线

目录 一、基础阶段&#xff08;2-3个月&#xff09; 1. 数学与编程基础 2. 机器学习入门 二、核心技能&#xff08;3-4个月&#xff09; 1. 深度学习与框架 2. 大模型开发&#xff08;重点&#xff09; 三、进阶方向&#xff08;3-6个月&#xff09; 1. 多模态与智能体…