文章目錄
- 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, jQuery | Android, Kafka, Kubernetes | Linux Kernel, WordPress, Git |