JavaScript陷阱

**自由軟體**（英語：free software），根據自由軟體基金會對其的定義，是一類可以不受限制地自由使用、複製、研究、修改和分發的，尊重使用者自由的軟體。這方面的不受限制正是自由軟體最重要的本質，與自由軟體相對的是專有軟體（英語：proprietary software，一些人也會將其翻譯為私有軟體、封閉軟體），後者的定義與是否收取費用無關，事實上，自由軟體不一定是免費軟體，同時自由軟體本身也並不抵制商業化。自由軟體受到選定的「自由軟體授權協定」保護而發佈（或是放置在公有領域），其發布以原始碼為主，二進制檔案可有可無。

## 使用者

自由軟體對全世界的商業發展特別是硬體有巨大的貢獻，多數嵌入式裝置系統廠商鑑於自身無需支付授權費用和實用性方面的原因考慮也會在自由軟體的基礎上開發作業系統。世界上絕大多數作業系統多少都會包含有自由軟體組件（例如 BSD 的 TCP/IP 協定棧廣泛被包括 MacOS，Windows 在內的專有商業作業系統使用）。隨著越來越多的自由軟體支援 Microsoft Windows 平台，還有得益於 Android 平台的普及，目前有上億的使用者在日常生活或工作中使用自由軟體。

自由軟體直接使用者往往是電腦方面的專業人士，或者有能力理解和改變原始碼的人。隨著 Ubuntu，Manjaro 等對普通使用者更友好的 GNU/Linux 作業系統的普及，普通使用者也能在缺少相關知識的情況下開箱即用。

## 自由軟體授權條款

大多數自由軟體都使用類似的自由軟體授權條款，使用最多的自由軟體授權如下

* The MIT License
* The GNU General Public License v2
* The Apache License
* The GNU General Public License v3
* The BSD License
* The GNU Lesser General Public License(LGPL)
* The Mozilla Public License (MPL)
* The Eclipse Public License

## 意義與歷史

自由軟體的英文為「free software」。在英文裡「_free_」一詞有「自由」、「免費」的雙重含意，對於如何區分自由軟體（拉丁語：libre）和免費軟體（拉丁語：gratis），自由軟體運動社群的創始人 —— 里查・史托曼做出了以下的定義：「自由軟體的重點在於自由權，而非價格。要了解其所代表的概念，你應該將「free」想成是「言論自由」（英語：_free_ speech）一詞中的含義，而不是「免費啤酒」（英語：_free_ beer）一詞中的含義。」自由軟體代表使用者可以自由地執行、拷貝、分發、學習、修改並改進該軟體。自由軟體的定義可以追溯至 GNU 宣言。

大部分自由軟體都在網際網路上自由發佈，往往不收取任何費用。一些或是以離線實體的方式發行，有時會酌情收取的費用（例如：工本費和運輸費），而人們可用任何價格來販售這些軟體。所以，自由軟體也可以是商業軟體：因為自由軟體授權條款並不限制販賣軟體或者提供商業服務，這些並沒有違反例如 GPL 等自由軟體授權條款。因此，「自由軟體」是關乎自由的問題，與價格無關，軟體如何定價並不影響它是否被歸類為自由軟體。

## 自由軟體的定義

自由軟體基金會（FSF）對自由軟體的定義首次於 1989 年發表。這份定義後來被布魯斯・裴倫斯（Bruce Perens）改寫為《Debian 自由軟體指導方針》。

根據斯托曼和自由軟體基金會（FSF）的定義，自由軟體賦予使用者四種自由:

* 自由之零：不論目的為何，有使用該軟體的自由。
* 自由之一：有研究該軟體如何運作的自由，並且得以修改該軟體來符合使用者自身的需求。取得該軟體之原始碼為達成此目的之前提。
* 自由之二：有重新散布該軟體的自由，所以每個人都可以藉由散布自由軟體來敦親睦鄰。
* 自由之三：有改善再利用該軟體的自由，並且可以發表修訂後的版本供公眾使用，如此一來，整個社群都可以受惠。如前項，取得該軟體之原始碼為達成此目的之前提。

如果一軟體的使用者具有上述四種權利，則該軟體得以被稱之為「自由軟體」。也就是說，使用者必須能夠自由地、以不收費或是收取合理的散布費用的方式、在任何時間再散布該軟體的原版或是覆寫版，在任何地方給任何人使用。如果使用者不必問任何人或是支付任何的授權費用從事這些行為，就表示其擁有自由軟體所賦予的自由權利。

### 自由軟體不是沒有著作權

大部分的自由軟體可以無需費用自由取得，並且它的原始碼可以自由修改並散佈，但它並不是沒有著作權。著作權是當某項作品完成時就自然產生了，不需申請或註冊，而其內涵通常包括姓名標示、發表（公開）、授予他人使用等權利。如合法享有著作權者無條件放棄所有著作權，則該作品就被「釋入公有領域」。需要注意的是，被釋入公有領域後，原著作權持有者就無法再對其他人如何使用該作品施加任何法律上的限制。因此科技巨頭可以合法地使用該等作品進行二次創作（例如製作新軟體），而該等二次創作品則在法律上享有完整的著作權，不受原著作權持有者的支配。

這並不符合自由軟體的定義。自由軟體必須能將「自由」無限傳承下去。因此自由軟體並未「釋入公有領域」，而是將「傳承自由屬性」作為一項允許他人使用自由軟體的條件。如任何人使用了自由軟體二次開發的軟體未向他人開放原始碼，則其對該自由軟體的二次開發，即屬違反著作權法。因此，自由軟體在法律上並未放棄著作權，而是訂明了若干「自由」的定義，並要求使用者如欲行使這些自由，必須對衍生作品維持相同授權。

相反的例子是非自由軟體（封閉軟體）。如果，當使用者付費購買或者免費獲得某套軟體時，所得到的只是「使用權」，使用者必須接受該軟體的軟體授權條款才能使用這個軟體；而授權條款列明軟體的原作者則仍然保有修改權，未經原作者同意進行修改屬違反授權條款之行為，則該等軟體屬於封閉軟體。請注意，自由軟體也有授權條款，常見的如 GNU 通用公眾授權條款，但這些授權條款不會限制你取得原始碼或者限制你修改軟體，唯一的要求是你對修改後的軟體必須應用同樣的或更寬鬆的授權條款。即你修改後形成的新軟體，其他人也可以取得其原始碼並修改，你不得限制他們這樣做，否則你當初的修改行為就因不符合 GNU 通用公眾授權條款而構成侵犯（之前參與編寫這個軟體的人所享有的）著作權。

### 自由軟體不使用封閉格式

封閉軟體通常會使用專屬的封閉格式，並且不允許使用者分發，這極大地限制了使用者的自由。而自由軟體則完全不同，由於自由軟體的原始碼是公開的，所以它所使用的任何格式都是透明的。自由軟體永遠不會只釋出專屬的封閉格式軟體來限制使用者修改的自由。

## 自由軟體的精神領袖

自由軟體的精神領袖是理察・馬修・斯托曼。他被人稱為「最後的真正駭客」，他認為一個好的軟體，應該自由自在地讓人取用。軟體不應該拿來做為相互傾軋、剝削的工具。所以他起草 GNU 通用公眾授權條款來保障自由軟體的自由，並創辦了自由軟體基金會來貫徹他的理念。領袖們有時被稱作終身仁慈獨裁者。

## 自由軟體與開源軟體

最早的開放原始碼定義是在 1998 年建立，來自 Debian 自由軟體指導方針。雖然大多數的開放原始碼軟體同時也是自由軟體，但是，GNU 專案認為「開源」這個詞並沒有抓住自由軟體的真正涵義，容易讓人過於著重軟體的品質、流行與成功而忽視或拋棄自由軟體精神的道德觀和社會價值，力主自由軟體是一個道德底線。

FreeBSD、OpenBSD 以及 NetBSD 的社群人員往往認為「Copyleft」是一種對自由的過度限制，是一種自由的侵害，因此他們傾向於使用較為寬鬆的 BSD、MIT 類似的協定，然而這類協定因為缺少相關的說明並不能避免其成果被專利流氓利用。一些公司 / 群體為了避免專利流氓的侵害而且也不想使用例如 GPLv3、MPL2.0 等 Copyleft 協定的情況下會選擇使用 Apache2.0 協定。

對於 BSD、MIT 這類較為寬鬆的自由軟體協定，GNU 專案認為這是對專有軟體的鬆懈（英語：lax）和寬容式（英語：permissive），因為這些協定不能避免其衍生作品成為限制使用者自由的專有軟體，一旦你允許他們這麼做，那麼你就無法捍衛其他人的自由了。，例如 FreeBSD 在 PlayStation 4 系統軟體的使用以及 BSD 的 TCP/IP 協定棧在專有軟體的使用等。

### 形式上的差異

開源軟體與自由軟體是兩個不同的概念，只要符合開源軟體定義的軟體就能被稱為開源軟體。而自由軟體有比開源軟體更嚴格的概念，因此所有自由軟體都是開放原始碼的，但不是所有的開源軟體都能被稱為「自由」。但一般，絕大多數開源軟體也都符合自由軟體的定義。

### 兩者內涵的差異

1. 開放原始碼作用是，使用開放的開發方式，儘可能的使軟體最佳化，而自由軟體則將尊重使用者自由作為道德標準。
2. 如果說「自由軟體」會引起誤解，（因為英文「Free」一詞有「自由」、「免費」的雙重含意），那麼「開放原始碼」的名字則會引起的誤解則更多。「開源」很容易讓人認為是只要把原始碼「公開」出來就算是開源了，即「你可以看到原始碼」。但是如果使用者的自由仍然得不到尊重，那麼即使公開原始碼也沒有意義。有的軟體公司只是為了想找使用者幫它除錯、吸收社區貢獻的功能，這樣子會破壞了自由軟體的原意。一個例子是 Tivo 公司生產的機上盒。雖然它基於 GNU/Linux，TiVo 公司也按照授權條款釋出了原始碼，但是卻禁止使用者在機上盒上執行自己的程式，或重新安裝系統。
3. 自由軟體的原意就是要給予使用者運用軟體的自由，這個『自由』就是自由軟體的精神所在。但是一些商業化開放的原始碼卻故意忽略了這個最重要的精神，反而無法讓使用者體認到『自由』的真意，那麼開源這一個替代自由軟體的辭句反而把自由的原意除去了。

自由軟體的精神領袖理察・馬修・斯托曼很反對人們把開放原始碼和自由軟體混為一談。。

## 自由軟體與免費軟體

自由及開放原始碼軟體列表

免費軟體（英語：freeware）是一種不須付費就可取得的軟體，但是通常有其他的限制，使用者並沒有使用、複製、研究、修改和分發的自由。該軟體的原始碼不一定會公開，有些免費軟體即使所謂開源但是因為有會限制使用者軟體自由如限制使用者修改重分發或者限定 / 限制特定人群使用等行為的限制性條款存在並不是自由軟體。

## Tivo 化

Tivo 化 是一種限制軟體自由的行為，即通過檢測可執行檔簽章，禁止使用者安裝或執行修改後的可執行檔，這種行為被 Richard Stallman 稱為「專制暴君」(英語：tyrants)。這個名字源自於 Tivo 公司在其數位影片錄影機的產品中使用了 GNU 和 Linux 核心的原始碼但是其從設計上限制了使用者的軟體自由，使用者不能在其產品上自由執行和使用修改後的系統。因此自由軟體基金會出版了 GPLv3，GNU 專案軟體的授權協定也隨之升級，然而因為各種因素很多 Linux 核心開發者對升級表示反對。

## 數字限制管理

數字限制管理（英語：Digital Restrictions Management）或數字限制機制（英語：Digital Restrictions Mechanisms）是自由軟體社群對數位版權管理的一種諷刺性說法，因為這種行為限制了使用者的軟體自由權利。自由軟體基金會針對此種從設計上就限制使用者軟體自由的行為發起了 Defective By Design 運動。

## JavaScript 陷阱

**JavaScript 陷阱**（英語：The JavaScript Trap）指使用者在瀏覽器中使用專有軟體卻毫不知情的現象，RMS 在 GNU 專案網站上給出了具體的定義。

為了解決這個問題，GNU 專案創造了提供探測並攔截使用者存取的網頁上非自由、非平凡的 JavaScript 功能的 GNU LibreJS 給重視軟體自由的使用者使用。一些自由軟體社群，為了解決此類問題也作出了一些努力，例如由自由軟體基金會支援的 LibrePlanet 為此專門成立了行動小組。

## 參見

* 自由軟體，自由社會：理察・斯托曼選集
* Copyleft
* GNU
* GNU 較寬鬆公共許可證
* 理察・馬修・斯托曼
* GNU/Linux
* 開放原始碼
* Linux 的採用
* 自由開源軟體列表
* 自由及開放原始碼軟體授權條款比較
* 海盜黨
* 分享主義

## 參考文獻

## 外部連結

* 《自由軟體，自由社會（第三版）》中文版線上自由閱讀 （頁面存檔備份，存於網際網路檔案館），北京 GNU/Linux 使用者群組翻譯。
* 自由軟體目錄 （頁面存檔備份，存於網際網路檔案館） - 自由軟體基金會
* 中華民國軟體自由協會 （頁面存檔備份，存於網際網路檔案館）