当前位置: 首页 > news >正文

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

文章目录

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

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

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

1. MIT 协议 (MIT License)

  • 特点: 这是最宽松的开源协议之一。你可以理解为“几乎没有任何限制”。

  • 核心要求:

  • 在你的软件副本或重要部分中,必须保留原始的版权声明和许可声明。

  • 允许行为:

    • 自由使用、复制、修改、合并、发布、分发、再授权、销售软件。

    • 你可以将使用 MIT 协议的代码放入你的闭源商业软件中,作为专有软件的一部分进行发布和销售。

  • 常见项目: jQuery, Node.js, Ruby on Rails, React (早期版本)。

  • 一句话总结: 想怎么用就怎么用,只要注明来源。

2. Apache 2.0 协议 (Apache License 2.0)

比 MIT 多了一个专利授权。

  • 特点: 一个对商业应用非常友好的宽松协议,比 MIT 多了关于专利的明确条款。
  • 核心要求:
    1、和 MIT 一样,需要保留版权和许可声明。
    2、如果修改了文件,需要在修改过的文件中明确说明。
    3、(重要)明确授予用户永久性的、全球性的、免专利费的专利许可。
    4、商标权不被授予。
  • 与 MIT 的主要区别: 提供了明确的专利贡献和保护条款,防止贡献者或使用者通过专利诉讼来攻击项目。
  • 常见项目: Apache 系列项目, Android, Kubernetes, Swift。
  • 一句话总结: 和 MIT 一样宽松,但多了专利保护,更安全。

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

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

  • 特点: 强 Copyleft(著佐权) 协议,具有“病毒式”的传染性。
  • 核心要求:
    1、如果你的项目包含了或者修改了GPL 授权的代码,那么你的整个项目必须也以 GPL 协议开源。
    2、必须提供源代码。
    3、所有基于 GPL 代码的衍生作品也必须使用 GPL 协议。
  • “传染性”体现: 这意味着你不能将 GPL 授权的代码用于你的闭源商业软件中。只要你用了,你的软件整个都必须变成开源的。
  • 常见项目: Linux 内核, Git, MySQL。
  • 一句话总结: 用了我的代码,你的代码也必须开源。
特性MITApache 2.0GPL v2LGPL
宽松度极宽松宽松严格(Copyleft)较弱(Copyleft)
要求保留版权
要求修改声明
专利授权隐含明确授予无明确条款无明确条款
代码传染性✅(强)✅(弱,仅限库本身)
允许闭源商业使用✅(仅动态链接时)

文章转载自:

http://JkZ0bU2k.kkqgf.cn
http://tX1cf1Ot.kkqgf.cn
http://HteG67HO.kkqgf.cn
http://q5OtTLMS.kkqgf.cn
http://BM9TU6Cw.kkqgf.cn
http://Sk1SCeV6.kkqgf.cn
http://OvyYJJet.kkqgf.cn
http://htXUcFTh.kkqgf.cn
http://RVo7kuzI.kkqgf.cn
http://nwseDA5J.kkqgf.cn
http://3pZFokXx.kkqgf.cn
http://ileZDDuR.kkqgf.cn
http://kTqUOYhC.kkqgf.cn
http://uShu2HD0.kkqgf.cn
http://bfvVBM9J.kkqgf.cn
http://Avi5KC0c.kkqgf.cn
http://WYXPzIsi.kkqgf.cn
http://myJTfoAY.kkqgf.cn
http://ervEhPB2.kkqgf.cn
http://cZd4Onyr.kkqgf.cn
http://8B6YJTcX.kkqgf.cn
http://6utWaeb0.kkqgf.cn
http://PMyUd7LJ.kkqgf.cn
http://5UjSxY8d.kkqgf.cn
http://ctPzZtw8.kkqgf.cn
http://YimU5gt0.kkqgf.cn
http://YyeoEztM.kkqgf.cn
http://n5qDQXX5.kkqgf.cn
http://CW6j9yfj.kkqgf.cn
http://OotgYewA.kkqgf.cn
http://www.dtcms.com/a/370316.html

相关文章:

  • 计算机原理(二)
  • 算法题(200):最大子段和(动态规划)
  • vue3图标终极方案【npm包推荐】vue3-icon-sui(含源码详解)
  • 当小智 AI 遇上数字人,我用 WebRTC 打造实时音视频应用
  • 后端(JDBC)学习笔记(CLASS 1):基础篇(一)
  • 3分钟快速入门WebSocket
  • ElasticSearch 基础内容深度解析
  • 行为式验证码技术解析:滑块拼图、语序选词与智能无感知
  • CAN总线学习
  • 02.继承MonoBehaviour的单例模式基类
  • 【CSS,DaisyUI】自定义选取内容的颜色主题
  • C. 引入位置编码是不是3D的
  • Docker学习笔记-网络类型
  • 进程状态深度解析:从操作系统原理到Linux实践
  • C++:深入剖析vector及其模拟实现
  • ClickHouse 中的物化列与物化视图
  • 贪心算法应用:交易费优化问题详解
  • STL模版在vs2019和gcc中的特殊问题
  • 《Java线程池面试全解析:从原理到实践的高频问题汇总》
  • Compose笔记(四十八)--PullRefresh
  • 性能优化的边界-不该优化什么
  • Qt串口通信学习
  • 云手机运行流畅,秒开不卡顿
  • Spring Boot中MyBatis的定义与使用
  • MQTT 与 Java 框架集成:Spring Boot 实战(二)
  • 使用Shell脚本实现Linux系统资源监控邮件告警
  • 提示词工程知识积累及分析
  • Excel 表格 - Excel 收起与展开工具栏
  • ElemenetUI之常用小组件
  • 【c++】函数重载