主流的开源协议(MIT,Apache,GPL v2/v3) - 实践

news/2025/9/19 17:30:22/文章来源:https://www.cnblogs.com/tlnshuju/p/19101348

主流的开源协议(MIT,Apache,GPL v2/v3) - 实践

2025-09-19 17:29  tlnshuju  阅读(0)  评论(0)    收藏  举报

文章目录

    • 1. MIT 协议 (MIT License)
    • 2. Apache 2.0 协议 (Apache License 2.0)
    • 3. GPL v2 协议 (GNU General Public License v2)

“开源协议选择指南”的流程图
在这里插入图片描述

flowchart TD
A[开始选择开源协议] --> B{是否要求修改后必须开源?(是否具有 传染性?)};
B -- 是(强Copyleft) --> C{GPL家族};
C --> C1[GPL v2/ v3要求派生代码必须使用相同许可证开源];
B -- 否(宽松/弱Copyleft)--> D{是否需要专利授权?};
D -- 是 --> E{Apache 2.0宽松且提供明确的专利授权};
D -- 否 --> F{MIT最宽松,仅要求保留版权声明};
B -- 否(宽松) --> G{是否要求与闭源软件兼容?};
G -- 是 --> E;
G -- 否 --> F;

1. MIT 协议 (MIT License)

核心特点:极其宽松,几乎没有任何限制。你只得在副本中包含原软件的版权和许可声明,就可以自由地使用、复制、修改、合并、发布、分发、再许可和/或销售软件。对商业应用极其友好。

代表性项目
jQuery: 经典的前端 JavaScript 库。
React: Facebook 推出的前端 UI 框架(注意:React 之前使用 BSD+Patents 条款,后改为 MIT)。
Ruby on Rails: 一套高效的 Web 应用开发框架。
Vue.js: 渐进式 JavaScript 框架(其核心在早期运用 MIT,现在整个项目生态也主要基于 MIT)。
Node.js: JavaScript 运行时环境。
Laravel: 流行的 PHP Web 框架。
.NET Core: Microsoft 推出的跨平台开发框架。
XWindow System: UNIX/Linux 系统上的图形窗口系统。

2. Apache 2.0 协议 (Apache License 2.0)

核心特点:商业友好但比 MIT 更严谨。它除了提供和 MIT 类似的自由权利外,还明确提供了专利授权,并要求对修改过的文件提供明显的更改说明。它防止了“专利偷袭”,同时也不要求衍生代码开源。

代表性项目

一句话总结: 和 MIT 一样宽松,但多了专利保护,更安全。

3. GPL v2 协议 (GNU General Public License v2)

具有“传染性”的强 Copyleft 协议。

  • 特点: 强 Copyleft(著佐权) 协议,具有“病毒式”的传染性。
  • 核心要求:
    1、如果你的项目包含了或者修改了GPL 授权的代码,那么你的整个项目必须也以 GPL 协议开源。
    2、必须提供源代码。
    3、所有基于 GPL 代码的衍生作品也必须使用 GPL 协议。
  • “传染性”体现: 这意味着你不能将 GPL 授权的代码用于你的闭源商业软件中。只要你用了,你的软件整个都必须变成开源的。

代表性项目
GPL v2:

  • Linux Kernel: 最著名的操作系统内核,是 GPL v2 的标杆。
  • Git: 分布式版本控制系统(由 Linus Torvalds 编写)。
  • MySQL: 关系型数据库(Oracle 旗下,同时献出商业许可)。
  • WordPress: 世界上最流行的内容管理系统(CMS)。
  • VLC media player: 功能强大的开源媒体播放器。
  • GIMP: GNU 图像处理程序,类似 Photoshop。

GPL v3(或 v2/v3 双许可):

  • GCC: GNU 编译器集合。
  • GDB: GNU 计划调试器。
  • Bash: GNU 的 Bourne-Again Shell。
  • LGPL(GPL 的宽松版) 的代表:
  • GLib & GTK: Linux 桌面环境(如 GNOME)的基础库和图形组件库。
  • 7-Zip: 材料压缩软件。
  • Audacity: 音频编辑软件。

一句话总结: 用了我的代码,你的代码也必须开源。

特性MIT 协议Apache 2.0 协议GPL (v2/v3) 协议
核心哲学最大限度的自由商业友好,明确专利授权Copyleft,保障下游用户自由
要求开源修改(整个衍生作品)
专利授权隐性/无明确条款有,明确条款有(v3 更明确)
商标使用禁止禁止禁止
应对硬件限制GPL v3 明确禁止 (Anti-Tivoization)
商业友好度极高极高(要求代码开源,与专有软件不兼容)
典型项目Node.js, React, jQueryAndroid, Kafka, KubernetesLinux Kernel, WordPress, Git

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

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

相关文章

np.clip的使用

np.clip() 是 NumPy 中一个非常实用的函数,用于将数组中的值裁剪(或者说限制)在一个指定的区间内。 它的作用就像一把剪刀,把数组中所有超出规定范围的数值都剪掉,让它们回到这个范围的边缘。 np.clip() 的基本用…

重看P4211 [LNOI2014] LCA 以及 P5305 [GXOI/GZOI2019] 旧词 题解

P4211 [LNOI2014] LCA P5305 [GXOI/GZOI2019] 旧词 重看 P4211 求 \(\sum_{i=l}^{r} dep[LCA(i,x)]\),首先把 LCA 都求出来行不通,我们考虑转化计算贡献的形式,一个点的深度就是根到它的路径上的点的个数,两个点的…

25.9.19随笔联考总结

考试 通读题面,决定顺序开题。很快做出 T1,感觉 T2T3 都可做,优势在我!各想一个小时未果,T4 也不会,坠机。赛后得知后三道都是 NOI 难度的题。 估计:100+0+0+0。实际:100+0+0+0。 总结 面对一些神秘题的时候还…

解题报告-P12025 [USACO25OPEN] Sequence Construction S

P12025 [USACO25OPEN] Sequence Construction S 题目描述 最近,农夫约翰农场里的奶牛们迷上了观看《炼乳神探》这档节目。节目讲述了一头聪明的奶牛侦探CowCow解决各类案件的故事。贝茜从节目中发现了新的谜题,但答案…

解题报告-P12026 [USACO25OPEN] Compatible Pairs S

P12026 [USACO25OPEN] Compatible Pairs S 题目描述 在遥远的乡村,农夫约翰的奶牛并非普通的农场动物——它们隶属于一个秘密的奶牛情报网络。每头奶牛都有一个由精英密码学家精心分配的ID号码。但由于农夫约翰随意的…

深入解析:Xilinx Video Mixer

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

maxu

https://v1.paoliangcloud.com/publicwowo.html?to=85ed9abcfe82``

makefile 入门1

makefile 入门1目标 目标的语法非常简单targets: prerequisitesrecipes... 或者 targets: prerequisites ; recipesrecipes...当执行目标时,make会检测prerequisites中的所有文件是否存在,如果都存在则执行targets后…

详细介绍:【 C/C++ 算法】入门动态规划-----一维动态规划基础(以练代学式)

详细介绍:【 C/C++ 算法】入门动态规划-----一维动态规划基础(以练代学式)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

iOS 26 能耗检测实战指南 如何监测 iPhone 电池掉电、Adaptive Power 模式效果与后台耗能问题(uni-app 与原生 App 优化必看)

本文结合 iOS 26 新增的 Adaptive Power 模式与电池界面功能,介绍如何检测 iPhone 能耗问题(包括启动耗电、后台耗电、动画特效与资源加载耗电等),并结合 Instruments、克魔等工具给出 uni-app 项目的实战优化指南…

Transformer的个人理解

Transformer工作原理 分词 文本进来之后,首先经过Tokenizer(分词器)分割成很多个token。每个token都会赋予一个从0开始的ID,用于后续索引。 然后通过一个embedding层,将token转换成一个多维向量,也叫做embedding…

国标GB28181平台EasyGBS如何实现企业园区视频监控一体化管理?

国标GB28181平台EasyGBS如何实现企业园区视频监控一体化管理?企业园区安防系统面临多品牌设备兼容难、系统孤立、管理效率低等痛点。本文详细探讨基于国标GB28181协议的EasyGBS视频平台如何为企业园区提供完整的视频监…

360环视硬件平台为什么推荐使用米尔RK3576开发板?

在汽车智能化和智慧安防快速发展的今天,360环视系统 已成为保障行车与场景安全、提升体验的重要技术。无论是自动泊车、驾驶辅助,还是智慧社区监控,核心诉求都是能够接入 多路摄像头,并通过高效的 推流 实现低延迟…

C语言弱函数

C语言弱函数project/ ├── core/ │ └── system_init.c // 核心框架代码,包含弱函数 ├── boards/ │ └── my_board.c // 板级特定代码,提供强函数 └── main.c // 主程序 /…

高质量票据识别数据集:1000张收据图像+2141个商品标注,支持OCR模型训练与文档理解研究

​获取更多高质量数据集,请访问典枢数据交易平台:https://dianshudata.com/引言与背景 在数字化转型的浪潮中,票据识别技术已成为金融、零售、餐饮等行业自动化处理的核心技术。传统的票据处理依赖人工录入,效率低…

1202_InnoDB中一条UPDATE语句的执行流程

InnoDB中一条UPDATE语句的执行流程可以概括为以下步骤和图示:下面是每个步骤的详细说明: 第一步:连接器与权限验证 (Client → Server Layer)建立连接:客户端应用程序(如Java程序、MySQL CLI)与MySQL服务器建立连…

1201_mysql查询语句select执行流程

查询语句select执行流程,如下图所示,其核心流程可概括为: flowchart TD A["客户端提交 SELECT 语句"] --> B["连接器<br>管理连接, 权限验证"] B --> C["查询缓存<br>(…

记录---vue3项目实战 打印、导出PDF

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 一 维护模板 1 打印模板:<template> <div class="print-content"> <div v-for="item in data.detailList" :key="…

node.js安装(绿色版)

1、官方下载,选择【独立文件(.zip)】下载https://nodejs.org/zh-cn/download/ 2、解压到C:\Program Files\nodejs3、在安装目录下创建以下两个目录node_global(默认:C:\Program Files\nodejs) node_cache(默认:C…