自由及開放原始碼軟體

自由及開放原始碼軟體（Free and open source software，縮寫為FOSS，又稱自由和開源軟體，是一種既可歸類為自由軟體又可歸類為開源軟體的電腦軟體。自由及開放原始碼軟體允許任何人自由地使用、複製、研究及以任何方式來改動軟體，並且其原始碼是公開的。FOSS 的權利來源包括《自由軟體定義》中的四大自由，以及《開源定義》所列出的標準。所有 FOSS 都會公開提供原始碼，但並非所有可取得原始碼的軟體都是 FOSS。自由及開放原始碼軟體相對於專有軟體（proprietary software），後者受到版權的嚴格限制，且通常其原始碼對使用者不開放。

使用自由及開放原始碼軟體的好處包括降低軟體成本、提高安全性和穩定性（如避免惡意軟體威脅）、保護隱私、教育，和讓使用者更多地控制自己的硬體。自由開源的作業系統如 Linux 和 BSD 及其分支（fork）如今被廣泛使用，為數百萬台伺服器、台式機、智慧型手機（例如 Android）和其他設備提供支持。許多軟體套件也採用了自由軟體授權條款或開源授權條款。自由軟體運動與開源軟體運動則是推動 FOSS 生產、採用與推廣的重要社群運動。

## 概述

自由及開放原始碼軟體（FOSS）是同時涵蓋自由軟體與開源軟體的總稱。自由軟體與開源軟體的精確定義，皆適用於在特定條款下散布的軟體；這些條款允許使用者依其需求使用、修改及再散布該軟體，且不要求使用者因從事這些行為而向軟體作者支付權利金或費用。

雖然自由軟體授權條款與開源軟體授權條款幾乎完全重疊，兩者的倡議者之間仍存在重要的哲學分歧。FOSS 這一術語的使用，常被視為試圖在自由軟體基金會（FSF）與開放原始碼促進會（OSI）之間的哲學分歧上採取較中性的表述，並以單一名稱同時指稱兩種概念。不過，理查·史托曼認為，相較於「Free/Libre and Open Source Software」（FLOSS），FOSS 一詞並未真正達到中立。

### 自由軟體

由理查·史托曼提出、並由自由軟體基金會採用的《自由軟體定義》，將自由軟體定義為關乎自由而非價格的軟體；也就是說，自由軟體必須保障使用者的四項基本自由。該定義最早已知的出版版本，出現在 1986 年 2 月自由軟體基金會已停刊的《GNU's Bulletin》中。此文件的正式版本則收錄於GNU計畫網站的哲學頁面。

截至 2017 年 8 月，《自由軟體定義》已被翻譯成 40 種語言。

#### 自由軟體的四項基本自由

依照自由軟體基金會的定義，若一個軟體要被視為自由軟體，其授權條款必須尊重軟體使用者的「四項基本自由」：

- 根據任何目的依照使用者意願執行該程式的自由(自由之零)。
- 研究程式如何運作，並依照使用者需求修改程式的自由(自由之一)。取得原始碼是行使此自由的前提。
- 再散布副本以幫助他人的自由(自由之二)。
- 將修改後版本的副本散布給他人的自由(自由之三)。透過這項自由，使用者可以讓整個社群有機會受益於其修改。取得原始碼也是行使此自由的前提。

### 開源軟體

《開源定義》由開放原始碼促進會使用，用以判定某一軟體授權條款是否符合該組織對開源軟體的認定標準。

這一定義以《Debian自由軟體指導方針》為基礎，主要由布魯斯·佩倫斯撰寫並改寫而成。佩倫斯撰寫該指導方針後，Debian 開發者社群於 1997 年將其編修並通過為正式政策；1998 年 2 月，開放原始碼促進會成立時，則透過移除 Debian 特定內容，將其改寫為《開源定義》。

## 歷史

在電腦發展的早期數十年，特別是 1950 年代至 1970 年代，軟體開發大多具有協作性質。程式通常會以原始碼形式在學術界、研究人員與企業開發者之間共享。當時多數公司的收入主要來自硬體銷售，軟體，包括原始碼，通常會隨硬體一同自由散布，並經常以公有領域軟體的形式存在。

到了 1960 年代後期至 1970 年代，獨立的軟體產業開始逐漸形成。公司開始將軟體作為獨立商品販售，並使用限制性授權條款與技術措施，例如只散布二進位可執行檔，來限制使用者對軟體的存取與控制。這一轉變受到市場競爭增加，以及美國政府對軟硬體綑綁銷售進行反壟斷審查的影響；其中一個代表性案例是 1969 年的「美國訴 IBM 案」。

1980 年，美國著作權法正式將電腦軟體納入保護範圍，成為重要轉折點。這使 IBM 等公司能夠進一步執行閉源散布模式。1983 年，IBM 推出「僅提供目的碼」（object code only）政策，停止散布其系統軟體的原始碼。

為了回應軟體使用限制日益增加的情況，理查·史托曼於 1983 年在麻省理工學院發起GNU計畫。他的目標是開發一套完整的自由軟體作業系統，並恢復使用者對軟體的自由。自由軟體基金會（FSF）於 1985 年成立，以支持此一目標。斯托曼的《GNU宣言》與自由軟體的四項基本自由，奠定了自由軟體運動的倫理立場，強調使用者應能控制自己所使用的軟體。

1991 年，林納斯·托瓦茲釋出 Linux核心；1992 年，Linux 核心改採 GNU通用公共授權條款（GPL）授權，這標誌著建立完整自由作業系統的重要一步。另一方面，在 1993 年 USL v. BSDi 訴訟解決後，FreeBSD、NetBSD 與 OpenBSD 等其他自由軟體專案也逐漸受到關注。

1997 年，艾瑞克·雷蒙的文章《大教堂和市集》探討了自由軟體的開發模式，並影響了網景於 1998 年釋出其瀏覽器套件的原始碼。該程式碼基礎後來發展為 Mozilla Firefox 與 Mozilla Thunderbird。

為了擴大企業界的接受度，包括雷蒙、布魯斯·佩倫斯、提姆·奧萊理與林納斯·托瓦茲在內的一群開發者，將自由軟體運動重新包裝為「開源」。開放原始碼促進會（OSI）於 1998 年成立，用以推廣這一新術語，並強調協作式開發的優點，而非意識形態。

儘管早期曾遇到阻力，例如微軟在 2001 年主張「開源是智慧財產的破壞者」，FOSS 最終仍在企業界獲得廣泛接受。Red Hat 等公司證明，商業成功與自由軟體原則可以並存。

## 使用

### 相較於專有軟體的優點

#### 個人控制、可客製化與自由

FOSS 的使用者可受益於自由軟體所強調的四項基本自由，包括不受限制地使用、研究、複製、修改與再散布軟體，無論軟體是否經過修改皆然。若使用者希望改變軟體的功能，可以修改其原始碼；在授權條款允許下，也可以散布修改後的版本。依照專案的決策模式與社群運作方式，使用者也可能向原始專案提交修改，或請求將修改納入之後的版本。

#### 隱私與安全

專有閉源軟體的使用者通常必須信任軟體供應商，因為其原始碼不對外公開，外部使用者難以直接檢查軟體是否包含後門、資料蒐集機制或其他未公開功能。相較之下，FOSS 的原始碼公開，使用者、研究人員與社群成員可檢查與驗證程式碼，並在發現漏洞時提出修正。這種公開審查可能有助於更早發現與修補錯誤，但其效果仍取決於實際參與審查與維護的人數及能力。

#### 低成本或無成本

FOSS 通常可以免費取得，雖然許多專案會鼓勵使用者捐款或購買商業支援服務。低取得成本也使使用者較容易測試、比較與部署不同軟體方案，降低嘗試新軟體時的成本。

#### 品質、協作與效率

FOSS 允許不同組織與個人共同參與開發，以改善軟體並滿足不同使用情境。與主要由單一公司控制的專有軟體相比，FOSS 專案在許多情況下可吸引更多外部貢獻者參與，包括使用者、志願開發者、企業與研究機構。企業採用開源軟體的原因之一，也可能是其技術品質、可修改性與避免供應商鎖定的能力。

### 相較於專有軟體的限制

#### 安全性與使用者支援

依照常被稱為「林納斯定律」的觀點，能檢視與測試程式碼的人越多，缺陷越有可能被快速發現與修復。然而，原始碼公開並不必然保證會有足夠的人力參與審查。某些由商業公司支援、擁有專職安全團隊的專有軟體，在特定情況下可能比依賴志願者維護的 FOSS 專案更能提供穩定的安全維護與使用者支援。

此外，公開原始碼也可能讓攻擊者更容易研究程式碼並尋找漏洞。不過，這一點是否構成實際劣勢，取決於惡意攻擊者、白帽駭客、專案維護者與安全研究社群之間的相對能力，以及漏洞揭露與修補流程是否有效。

#### 硬體與軟體相容性

FOSS 有時可能無法與特定專有硬體或軟體完全相容。造成這種情況的原因之一，是硬體製造商未公開介面、規格或文件，使 FOSS 社群難以撰寫對應的驅動程式。部分廠商也可能基於商業策略，希望使用者只能使用其自家的專有軟體或服務。

#### 錯誤與缺少功能

在某些情況下，FOSS 的功能、穩定性或可維護性可能優於對應的專有軟體；但在另一些情況下，FOSS 專案也可能存在尚未修復的錯誤，或缺少商業軟體已具備的功能。這通常取決於特定專案的規模、使用者需求、開發者數量與維護活躍程度。與閉源軟體不同的是，FOSS 的使用者若具備時間、能力與動機，通常可以自行修正或擴充軟體。

FOSS 開發也可能受到外部標準的限制。例如，某些常見格式或技術標準可能需要支付權利金，或需要簽署保密協議才能取得完整文件，這會增加自由軟體開發者實作相容功能的困難。

#### 開發持續性的保證較少

某些 FOSS 專案可能難以獲得足夠資源與參與者，以長期維持開發與維護。相較之下，由公司支持的商業軟體通常有較明確的資金與人力來源。不過，商業公司也可能因產品無利可圖而停止開發。若專有軟體供應商停止支援，使用者通常缺乏繼續維護該軟體的權利與原始碼；而在 FOSS 中，只要授權條款允許，使用者仍可自行或委託第三方繼續維護與開發。

#### 應用程式數量不足

由於部分 FOSS 作業系統，特別是面向一般桌面使用者的 Linux 發行版，在終端使用者市場的占有率較低，因此某些商業或專業領域的應用程式可能較少提供原生版本。這可能影響一般使用者或特定產業導入 FOSS 作業系統的意願。

## 開發

開源軟體開發過程中，軟體的原始碼會公開提供，使他人能夠使用、修改與改進。著名的開源軟體產品包括 Mozilla Firefox、Android 和 VLC媒體播放器。

開源軟體的開發流程通常不同於瀑布模型等傳統軟體開發方法。這類專案往往傾向於較早發布版本，並鼓勵社群參與測試、回報問題與貢獻程式碼。開源軟體開發也常採用敏捷軟體開發策略，其特徵包括反覆迭代、逐步改進與增量式開發。

由於開源軟體的開發者通常分散在不同地區，專案常使用電子郵件、Wiki、網路論壇、即時通訊服務與其他線上工具進行溝通。為了讓多人能夠協作修改程式碼，開源專案也常使用 Git 等版本控制系統。

## 經濟面向

FOSS 運動在資訊的建構與使用上，挑戰了傳統的所有權規範。由於資訊是當代經濟成長的重要領域，FOSS 運動也被一些研究者視為對新自由主義與一般私有化趨勢的反制力量。

透過實現新數位世界中「豐裕經濟」的歷史潛力，FOSS 可能形成一種政治抵抗的方案，或指出資本主義可能轉型的方向。