主流的開源協議(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
英文地址,請注明出處:http://en.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 D3: 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文檔是我們最常接觸的文檔…