基礎原理:開源協議

来自開源之海

📖 開源協議:數位時代的契約基石

一、 什麼是開源協議?

開源協議是一種法律許可合同。它定義了軟體著作權人與使用者之間的權利與義務。本質上,它並非放棄版權,而是透過預先授權的方式,允許他人進行複製、修改及分發。如果沒有這些協議,根據傳統著作權法,任何未經明確授權的代碼使用皆屬違法,這將極大地阻礙技術協作。

開源協議是基於著作權法(Copyright)的一種預先授權許可。它並非放棄版權,而是版權持有人(Contributor)明確告知公眾:在遵守特定條款的前提下,任何人皆可自由使用、修改及分發該軟體。如果沒有協議,代碼在法律上默認是「保留所有權利」的私有財產。

二、 為什麼會出現開源協議?

在軟體發展早期,代碼通常隨硬體附贈且自由流通。但隨著作權意識抬頭,廠商開始隱藏原始碼以建立商業堡壘。開源協議的出現旨在解決兩大核心問題:

  • 消除法律風險:讓開發者在合作時不必逐一簽署授權書。
  • 防止私有化:確保共享的成果不會被第三方惡意佔有或用於法律訴訟,保護開發者的勞動尊嚴。
  • 技術共建需求:解決跨組織、跨國界協作中的法律障礙。
  • 防止公地悲劇:防止個人或企業將社群共創的成果私有化而不回饋。
  • 法律避險:明確條款(如「免責聲明」)保護開發者免受軟體缺陷帶來的連帶法律責任。

三、 歷史起源與演進

  • 1970年代:軟體專有化興起,黑客文化受挫。
  • 1980年代(關鍵期):Richard Stallman 於 1985 年發起自由軟體運動,並於 1989 年撰寫了第一版 GPL (GNU 通用公共授權),這標誌著現代開源法律框架的誕生。
  • 1990年代至今:隨互聯網爆發,BSD、MIT 等更靈活的協議相繼成熟。1998 年「開源軟體」(Open Source)概念被正式提出,將重點從「自由」轉向「開發效率」。
  • 萌芽期 (1970s):早期軟體代碼隨硬件附贈,開發者之間自由交換磁帶,存在契約雛形。
  • 法制化 (1980s):1985 年 Richard Stallman 創立自由軟體基金會(FSF)。1989 年 GPL v1.0 問世,正式確立了「Copyleft」法律概念。
  • 商業化與多樣化 (1990s-2000s):1998 年「開源」(Open Source)概念提出,強調開發模式的效率。此後 MIT、Apache 等更符合商業利益的協議開始盛行。

四、 主要協議類型與邏輯區分

1. 寬鬆型授權 (Permissive) —— 商業友好

這類協議限制極少,不要求衍生作品開源,是目前最受商業公司歡迎的類型。

  • MIT License:極度簡潔,僅要求保留版權聲明。適用於追求最大化傳播的專案。
  • BSD (Berkeley Software Distribution):分為二句版與三句版。要求保留版權聲明,且禁止利用原作者名義背書。
  • Apache License 2.0:提供明確的專利授權(Patent Grant),若原作者持有相關專利,使用代碼時自動獲得許可,安全性極高。

2. 強傳染型授權 (Strong Copyleft) —— 社群優先

要求任何使用了該代碼的衍生作品,必須以「相同的協議」分發,確保軟體永遠自由。

  • GNU GPL (v2/v3):最強大的保護協議。若你的軟體使用了 GPL 代碼,你的整個專案都必須開源。v3 版增加了反 Tivoization(防止硬體鎖定開源軟體)條款。
  • GNU AGPL (Affero GPL):補足了雲端漏洞。規定即使不分發安裝包,僅透過網路(SaaS)提供服務,也必須向用戶公開原始碼。

3. 弱傳染型授權 (Weak Copyleft) —— 靈活折衷

介於兩者之間,通常以「模組/檔案」為界限進行約束。

  • GNU LGPL:專為函數庫設計。允許閉源程式碼「動態連結」此庫。只有當你修改庫本身時,才需要開源修改部分。
  • MPL (Mozilla Public License):以「檔案」為單位。修改了受 MPL 保護的文件需開源,但同一專案中其他新增的私有文件可以不開源。

4. 特殊領域授權 (Specialized)

  • EPL (Eclipse Public License):對企業友好,提供專利許可,且允許將開源代碼與私有代碼組合。
  • Unlicense / CC0:放棄所有權利,將作品直接貢獻給公共領域 (Public Domain)。

5. 內容創作專用 (Creative Commons)

雖然主要用於文件、圖片或 Wiki 內容(而非程式碼),但在 MediaWiki 中非常常見。

  • CC BY-SA (姓名標示-相同方式分享):這是 Wikipedia 採用的協議。它要求使用者標明原作者,且修改後的內容必須以同樣的 CC 協議發布。

五、 如何選擇? (快速指南)

  • 如果您希望被廣泛採用且不介意他人閉源:選擇 MIT。
  • 如果您在乎專利保護與企業合規:選擇 Apache 2.0。
  • 如果您希望修改者必須回饋社群:選擇 GPL v3。
  • 如果您開發的是網絡服務後端:選擇 AGPL。