主流的开源协议(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)

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

代表性项目
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 类似的自由权利外,还明确提供了专利授权,并要求对修改过的文件提供明显的更改说明。它防止了“专利偷袭”,同时也不要求衍生代码开源。

代表性项目

  • Apache 基金会项目:

    • Apache HTTP Server (Web 服务器)
    • Apache Kafka (分布式消息队列)
    • Apache Hadoop (大数据框架)
    • Apache Spark (大数据处理引擎)
    • Apache Tomcat (Java Web 容器)
  • Android: 谷歌的移动操作系统(其大部分代码)。

  • Kubernetes: 容器编排系统。

  • TensorFlow: Google 的机器学习框架。

  • Elasticsearch: 搜索和分析引擎(在 7.11 版本之后,其部分功能使用了 Elastic License 或 SSPL,但核心和历史版本是 Apache 2.0)。

  • Swift: Apple 开发的编程语言。

  • Flutter: Google 推出的跨平台 UI 工具包。

一句话总结: 和 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.pswp.cn/web/96135.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96135.shtml

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

相关文章

CameraService笔记

cameraservicecamera 结构图1. 启动CameraServer1.1 注册media.camera服务1.2 构造CameraService1.3 CameraService::onFirstRef1.4 CameraService::enumerateProviders&#xff1a;前置准备知识1.4 CameraService::enumerateProviders&#xff1a;Provider和Device初始化1.4.1…

MacOS 15.6 编译SDL3 Android平台多架构so库

成功编译输出: 编译: Android平台多架构编译脚本: sdl3_android_build.sh #!/bin/bash# 设置变量 macos 其他系统需要更改路径 SDL_SOURCE_DIR=$(pwd)/SDL BUILD_DIR=${SDL_SOURCE_DIR}/../sdl3_build_android NDK_PATH=$HOME/Library/Android/Sdk/Ndk/25.2.9519653 CMAKE…

Real-IAD D³: A Real-World 2D/Pseudo-3D/3D Dataset for Industrial Anomaly

Real-IAD D: A Real-World 2D/Pseudo-3D/3D Dataset for Industrial Anomaly Detection Paper Github 摘要 随着工业异常检测&#xff08;Industrial Anomaly Detection, IAD&#xff09;复杂程度的不断提升&#xff0c;多模态检测方法已成为机器视觉领域的研究焦点。然而&a…

IT需求提示未读信息查询:深度技术解析与性能优化指南【类似:钉钉已读 功能】

IT需求提示未读信息查询&#xff1a;深度技术解析与性能优化指南【类似&#xff1a;钉钉已读 功能】 DROP TABLE IF EXISTS rs_kpi_it_need_tip; CREATE TABLE IF NOT EXISTS rs_kpi_it_need_tip (id bigint NOT NULL AUTO_INCREMENT COMMENT 主键ID&#xff…

Django中的软删除

软删除&#xff08;Soft Delete&#xff09;是一种数据删除策略&#xff0c;它并不真正从数据库中删除记录&#xff0c;而是通过标记&#xff08;如 is_deleted 字段&#xff09;来表示记录已被删除。 这样做的好处是可以保留数据历史&#xff0c;支持数据恢复和审计。 在 Djan…

JavaEE 进阶第四期:开启前端入门之旅(四)

专栏&#xff1a;JavaEE 进阶跃迁营 个人主页&#xff1a;手握风云 目录 一、常用CSS 1.1. border 1.2. width/height 1.3. padding&#xff1a;内边距 1.4. margin&#xff1a;外边距 二、初始JavaScript 2.1. JavaScript是什么 2.2. 发展历史 2.3. JavaScript 和 HT…

学习日记-SpringMVC-day49-9.4

知识点&#xff1a;1.RequestMapping&#xff08;3&#xff09;知识点核心内容重点RequestMapping注解的parameters属性通过parameters指定请求参数条件&#xff08;如bookID&#xff09;&#xff0c;控制请求匹配规则&#xff08;必须包含/排除特定参数或值&#xff09;参数存…

【Day 50 】Linux-nginx反向代理与负载均衡

概述在现代 Web 架构中&#xff0c;Nginx 作为高并发、高性能的 HTTP 和反向代理服务器&#xff0c;被广泛应用于提升服务性能、增强系统安全性和实现负载均衡。其中&#xff0c;反向代理能够隐藏后端服务器信息并优化请求处理流程&#xff0c;负载均衡则可将请求分发到多个后端…

vue中配置 ts

在 Vue 项目中配置 TypeScript&#xff08;TS&#xff09;可以提升代码的类型安全性和开发体验。以下是在 Vue 项目&#xff08;基于 Vite&#xff09;中配置 TypeScript 的详细步骤和关键配置&#xff1a; 一、创建支持 TypeScript 的 Vue 项目 如果是新建项目&#xff0c;推…

阿里云镜像地址获取,并安装 docker的mysql和nginx等服务,java,python,ffmpeg,go等环境

阿里云那个镜像地址获取 阿里云镜像加速器不是一个通用的 registry.cn-hangzhou.aliyuncs.com&#xff0c;而是你账号专属的&#xff0c;比如这样&#xff1a; https://abcd1234.mirror.aliyuncs.com&#x1f449; 登录阿里云控制台获取&#xff1a; 阿里云镜像加速器 然后替…

conda环境导出

1. 激活你想要打包的环境首先&#xff0c;确保你激活了你要打包的 conda 环境&#xff1a;conda activate qwen2. 导出环境配置使用 conda 命令将当前环境的配置导出为一个 .yml 文件&#xff0c;记录下环境中所有的依赖和版本&#xff1a;conda list --export > techgpt_en…

openEuler2403安装部署Kafka

文章目录 openEuler2403安装部署Kafka with KRaft一、前言1.简介2.架构3.环境 二、正文1.部署服务器2.基础环境1&#xff09;JDK 安装部署2&#xff09;关闭防火墙 3.单机部署1&#xff09;下载软件包2&#xff09;修改配置文件3&#xff09;格式化存储目录4&#xff09;单机启…

发布工业智能体,云从科技打造制造业AI“运营大脑”

近日&#xff0c;在2025世界智能产业博览会重庆市工业智能体首发仪式现场&#xff0c;云从科技重磅发布经营决策-产线运营智能体&#xff0c;为制造业的智能化转型提供了全新的解决方案。该智能体的亮相&#xff0c;不仅代表着人工智能技术在工业领域的深度应用&#xff0c;更标…

【Linux基础】parted命令详解:从入门到精通的磁盘分区管理完全指南

目录 前言 1 parted命令概述 1.1 什么是parted 1.2 parted与fdisk的对比 1.3 parted的主要优势 2 parted命令的安装与基本语法 2.1 在不同Linux发行版中安装parted 2.2 parted的基本语法 2.3 parted的工作模式 3 parted交互式命令详解 3.1 交互式操作流程 3.2 主要…

如何在路由器上配置DHCP服务器?

在路由器上配置DHCP服务器的步骤因品牌&#xff08;如TP-Link、华为、小米、华硕等&#xff09;略有差异&#xff0c;但核心流程一致&#xff0c;主要包括登录管理界面、开启DHCP功能、设置IP地址池及相关参数。以下是通用操作指南&#xff1a; 一、准备工作 确保电脑/手机已连…

HTML和CSS学习

HTML学习 注释 <!-- -->组成 告诉浏览器我是html文件<!DOCTYPE html> <title>浏览器标签</title> <body> <!--- 其中是主要内容 ---> <p> 段落 </p> </body> </html> (结束点…

OpenTenBase vs MySQL vs Oracle,企业级应用数据库实盘对比分析

摘要 因为工作久了的缘故&#xff0c;接触过不少数据库。公司的管理系统用的MySQL&#xff0c;财务系统用的Oracle。随着时代发展&#xff0c;国产开源数据库已经在性能上能与这些国际知名顶尖数据库品牌相媲美&#xff0c;其中OpenTenBase以其开放环境和优越性能脱颖而出&…

Oracle 备份与恢复常见的七大问题

为了最大限度保障数据的安全性&#xff0c;同时能在不可预计灾难的情况下保证数据的快速恢复&#xff0c;需要根据数据的类型和重要程度制定相应的备份和恢复方案。在这个过程中&#xff0c;DBA的职责就是要保证数据库&#xff08;其它数据由其它岗位负责&#xff09;的高可用和…

StringBuilder类的数据结构和扩容方式解读

目录 StringBuilder是什么 核心特性&#xff1a; StringBuilder数据结构 1. 核心存储结构&#xff08;基于父类 AbstractStringBuilder&#xff09; 2. 类定义与继承关系 3. 数据结构的核心特点 StringBuilder数据结构的初始化方式 1. 无参构造&#xff1a;默认初始容量…

LangChain实战(十七):构建与PDF/PPT文档对话的AI助手

本文是《LangChain实战课》系列的第十七篇,将专篇深入讲解如何构建能够与PDF和PPT文档进行智能对话的AI助手。通过学习本文,您将掌握复杂格式文档的解析技巧、文本与表格处理技术,以及实现精准问答的系统方法。 前言 在日常工作和学习中,PDF和PPT文档是我们最常接触的文档…