跳轉到內容

FLOSS 概念手冊

25% developed
來自華夏公益教科書,為開放世界提供開放書籍

不喜歡閱讀?以下的大部分內容都以音訊和影片形式解釋在這裡

介紹 / 概念

[編輯 | 編輯原始碼]

FLOSS 代表什麼?

[編輯 | 編輯原始碼]

FLOSS 代表“自由/自由開源軟體”。

在法律上,自由軟體和開源對共享原始碼以及共享者在法律上需要承擔的義務的態度截然不同。不同的態度是政治意識形態的產物,無法輕易調和 - 儘管可以透過參考“共享類似”和“聯盟”的法律概念來中立地解釋(僅限於此)。FLOSS 這一術語的出現僅僅是為了避免向普通使用者解釋或定義這些概念,這些使用者只想瞭解對終端使用者的意義。通常不包括貢獻者之間的法律談判。

什麼是自由軟體?

[編輯 | 編輯原始碼]

自由軟體是指任何人都可以自由使用、複製、改進、檢查或分發的軟體,無論是免費還是收費。更準確地說,它指的是軟體使用者應該享有的四項基本自由。

  • 使用者應該能夠將軟體用於任何目的。(自由 0 - 計算機中的許多東西都從 0 開始)
  • 使用者應該能夠仔細檢查和研究軟體,並能夠自由修改和改進它以更好地滿足他們的需求。(自由 1)
  • 使用者應該能夠將軟體副本提供給其他需要使用軟體的人,無論是免費還是收費。(自由 2)
  • 使用者應該能夠改進軟體,並將他們的改進自由地分發給更廣泛的公眾,以便他們作為一個整體從中受益。(自由 3)

這沒有什麼新鮮或特別之處。這就是早期的“大鐵”時代軟體的開發方式,當時公司透過銷售硬體賺錢。但是後來,軟體公司出現了,他們開始改變遊戲規則。他們只把軟體看作是賺錢的手段,而不是使生活更輕鬆的手段,隨著“包裝許可證”的出現,甚至提供經過適當測試的程式的必要性也消失了。

在法律上,自由軟體由使用和分發軟體的許可證定義,該許可證保證了所有這四項自由。任何向其他使用者授予所有這些自由的使用者都保留他們使用軟體的權利。嚴格來說,軟體是共享類似的,但僅限於遵守這些義務的使用者。所有其他人將被取消資格,並且可能會失去使用、擴充套件、分發或從中派生新作品的權利。

這不是開放內容,開放內容有自己的規則

[編輯 | 編輯原始碼]

一些相關的共享類似運動不接受所謂的自由 0 - 它仍然極具爭議性。因此,這些運動既不是自由軟體,也不是開源。但是,它們是更廣泛的開放內容運動的一部分。一個典型的許可證限制某些人或群體的使用,但允許其他人根據共享類似條款使用它,例如 CC-by-nc-sa(知識共享署名-非商業性-相同方式共享許可證),它在內容和程式碼開發者中非常流行,這些開發者不希望商業實體在沒有付費的情況下建立在他們的作品之上。

作為使用者,我為什麼要檢查和修改我的軟體?

[編輯 | 編輯原始碼]

重要的是,不是你修改或檢視原始碼,而是你不能被阻止這樣做,或者由其他人為你做,並且你不會依賴於特定的人或實體來做。更不用說,公司確實會倒閉——將他們的專有產品一起帶走——有時會讓依賴它們的使用者沒有辦法支援某些重要的產品。

隨著技術的進步,硬體、軟體和使用者的需求都在變化。而軟體,作為一種讓生活更輕鬆的工具,也必須能夠輕鬆快速地進行修改。因此,即使你個人無法更改或修改軟體,你也要確保你不會受到軟體建立者的壟斷力量或甚至只是他們個人想法的影響。

除此之外,還需要能夠檢查軟體,以檢視它是否有惡意功能。例如,檢查程式是否在監視你。Windows 的一個版本被設計為向微軟報告你硬碟上的所有軟體。但微軟並非孤軍作戰:KaZaa 音樂分享軟體的設計使得 KaZaa 的商業夥伴可以將你電腦的使用權出租給他們的客戶。你(或任何其他人)需要能夠檢查和修改你的軟體,才能保護自己免受此類侵害。即使你不知道該尋找哪些不好的東西,但很快就會有人發現程式中的這個“壞東西”並散佈有關它的訊息。

還有其他原因,例如能夠 修復錯誤根據你的需要修改程式。這些將在稍後解釋。

"免費"並不意味著我不必為軟體付費,是嗎?

[編輯 | 編輯原始碼]

不。英語中的 "free" 有兩種含義。

  1. "免費"在 "免費啤酒" 中,指的是零成本。
  2. "免費"在 "言論自由" 和 "自由市場" 中,指的是自由。

免費軟體中的 "免費" 指的是我們上面提到的人們擁有的自由。在免費軟體的定義中,並沒有規定你不能以價格出售它。事實上,有些公司的整個商業模式就是圍繞收集、編譯和銷售免費軟體而建立的。但是,由於獲得免費軟體許可的人可以自由地轉售或贈送它,因此你幾乎總能在網際網路上 或其他地方 輕鬆找到它(合法地)下載。

當你聽到 "免費軟體" 時,請想起自由、自由和 "自由企業"。

那麼,其他型別的軟體有什麼是 "不免費" 的呢?

[編輯 | 編輯原始碼]

如今世界上大多數非免費軟體不是出售的,而是授權的。從複雜的作業系統到微小的遊戲或螢幕保護程式,軟體的終端使用者都擁有在終端使用者許可協議中規定的條件下使用它的許可。該協議列出了使用者可以使用軟體的條件——通常會對軟體的用途施加限制。在幾乎所有情況下,使用者都被明確禁止 "拆開軟體" 以研究它的工作原理,不能修改或改進它,只能製作軟體的單個副本(用於備份目的),並且嚴格禁止將副本提供給其他人。

你所說的 "copyleft" 是什麼意思?版權有什麼問題?這有什麼不同?

[編輯 | 編輯原始碼]

從法律上講,copyleft 是許可證中的一個類似共享條款,要求使用者、分發者或任何基於原始作品的衍生作品作者遵守某些條件(或 "自由")。其中一項條件是根據許可證的條件平等地對待所有其他使用者、分發者和衍生作品作者。其中一項平等條件是從不這樣做的人那裡撤回所有許可權利。

歷史上,免費軟體透過要求所有修改和擴充套件版本的程式也必須是免費軟體來實現 copyleft,使用程式中的版權(以及相關的權利來限制使用它或它的衍生作品)作為槓桿。但這並沒有解決所有問題。特別是,它沒有阻止衍生作品作者為他們的改進申請軟體專利,也沒有阻止任何人基於原始軟體構建 Web 服務並透過 "混搭" 方法進行擴充套件。這些缺陷應該在 GPL 3.0 版本中得到解決。

原始 GPL 儘管有缺陷,但它試圖在所有同意其四項自由的使用者之間建立一個非常小的聯盟。要理解這一點,我們必須回顧替代方案。

使程式免費的最簡單方法是將其置於公共領域,不受版權保護。這允許人們共享程式及其改進,如果他們願意的話。但這也允許不合作的人將程式轉換為專有軟體。他們可以進行更改,多或少,並將結果作為專有產品進行分發。以這種修改形式接收程式的人沒有獲得原始作者賦予他們的自由;中間人剝奪了這種自由。此外,免費軟體的開發人員將被迫與他們自己軟體的改進版本競爭(開源允許這樣做)。

Copyleft 規定,任何重新分發軟體的人,無論是否有更改,都必須傳遞繼續複製和更改軟體的自由。如果他們不這樣做,他們就會失去自己的權利。正如斯托爾曼所說:"Copyleft 保證每個使用者都有自由,並確保沒有人從免費軟體中剝奪自由。"。

要對程式進行 copyleft,首先宣告它受版權保護;然後在許可證文件中新增分發條款——它們構成一項法律文書,賦予每個人使用、修改和重新分發程式程式碼或任何源自它的程式的權利,但前提是分發條款保持不變。因此,程式碼和自由在法律上密不可分。

根據自由軟體基金會的說法,"專有軟體開發人員使用版權來剝奪使用者的自由;我們使用版權來保證他們的自由。這就是我們顛倒名稱的原因,將 "版權" 改為 "copyleft"。" 然而,從歷史上看,這個詞僅僅是唐·霍普金斯給理查德·斯托爾曼的一封信中新增的笑話或雙關語,他在註釋中寫下了 "copyleft - 所有權利反轉"。

最流行的 copyleft 許可證是 GNU 通用公共許可證

有哪些許可證可以保護免費軟體?

[編輯 | 編輯原始碼]

有很多許可證可以使軟體變得免費。但只有其中一些保留了使用者自由,即 copyleft。非 copyleft 許可證包括 X11、BSD、Artistic ... 最強大的 copyleft 許可證以及最廣泛使用的免費軟體許可證是 GNU 通用公共許可證,簡稱 GNU GPL。

有關更完整的許可證列表,請檢視 GNU 網站

[編輯 | 編輯原始碼]

我們免費軟體社群認為,阻礙軟體使用的損害不能用通過出售軟體獲得的利潤來證明。我們使用其他方法來賺錢。

此外,如果有人沒有免費獲得軟體,他們很可能根本就不會獲得它。例如,考慮一下所有從點對點程式中非法獲得專有軟體的人。

與你假設允許分發和修改會導致損失相反,理查德·斯托爾曼列出了限制分發和修改造成的物質損害的三個級別

  1. 使用該程式的人更少。
  2. 沒有使用者可以調整或修復程式。
  3. 其他開發人員無法從程式中學習或基於它進行新的工作。

如需詳細分析,請檢視斯托曼撰寫的論文"為什麼軟體不應該有所有者""為什麼軟體應該免費"

軟體程式的這種自由很有趣。這能擴充套件到其他形式的資訊,比如書籍嗎?

[編輯 | 編輯原始碼]

是的。例如,大多數免費軟體程式的使用者手冊都是根據免費或版權許可釋出的。目前,許多文獻都以許可性條款提供,例如GNU 自由文件許可證 (GFDL)知識共享署名 - 非商業性使用 - 相同方式共享。

但與軟體不同,書籍和文章包含言論和個人觀點。此外,對特定工作的個人署名也很重要。因此,無限修改的益處並不總是適用於文學、科學或其他內容。因此,開放內容運動更側重於類似共享條款。

這些條款並不侷限於那些免費軟體或開源軟體的要求。例如,它們包括知識共享非商業性使用許可證,除非商業方協商平行商業許可證(也可能是類似共享許可證或更像是專有許可證),否則禁止商業方使用。其他類似共享條款建議對衍生作品的創作者遵循具體的爭議解決、科學方法或新聞報道程式。

與最初的自由軟體基金會一樣,每個條款都會建立一個全球聯盟,主要依靠許可證來執行其規則,並利用使用或改進內容的權利作為槓桿。

FSF 本身已經認識到開放內容和自由軟體之間的區別。GNU 自由文件許可證被維基百科和華夏公益教科書使用,其中包含條款,拒絕任何不署名作者或其他貢獻者的人使用內容的權利,但這與自由軟體條件類似。GFDL 清晰明確地允許商業用途,並且支援註釋和“不變部分”,可以可靠地確定材料的來源或可靠性,或總結對其的異議 - 儘管這些目前沒有被維基百科或華夏公益教科書使用,但它們對於不允許所有使用者編輯的那些服務而言,仍然是必要的。

自由軟體歷史

[編輯 | 編輯原始碼]

這整個自由軟體運動是從什麼時候開始的?

[編輯 | 編輯原始碼]

軟體共享與計算機一樣古老。但自由軟體運動的歷史可以追溯到麻省理工學院人工智慧實驗室的軟體共享社群。理查德·斯托曼於 1971 年加入該實驗室時成為該軟體共享社群的成員。

在 20 世紀 80 年代初期,由於一系列事件,駭客社群崩潰了。理查德·斯托曼是實驗室裡為數不多的駭客之一,他面臨著嚴峻的道德選擇。他可以選擇接受世界已經改變並開始使用專有軟體。或者他可以建立一個自由的作業系統,從而重建一個合作駭客的社群。簡而言之,他要麼改變自己,要麼改變世界。

斯托曼決定改變世界。於是 GNU(發音為 Guh-new,與 canoe 押韻)專案誕生了,這是一個免費的 Unix 作業系統替代品。1984 年 1 月,斯托曼辭去了在麻省理工學院的工作,開始編寫 GNU 軟體。斯托曼編寫的第一個 GNU 軟體之一是 Emacs 文字編輯器。隨著時間的推移,越來越多的駭客加入了斯托曼,並開始組建一個完整的自由軟體主體。這涵蓋了從像 ls 和 cp 這樣的微型程式到像 GNU 編譯器集合和 Bash shell 這樣的龐大軟體包。

Free software Timeline
自由軟體時間線

好吧,那 Linux 是什麼呢?它是什麼時候出現的?

[編輯 | 編輯原始碼]

直到 1991 年,GNU 專案才建立了完成一個完整作業系統的所需程式,除了一個重要的部分 - 核心。簡而言之,核心是提供對機器硬體的安全訪問的軟體,並決定哪些軟體在何時使用哪些硬體。到那時,一位名叫林納斯·託瓦茲的芬蘭學生編寫了一個名為 Linux(發音為 Lee-nux 或 Lin-ux)的免費 Unix 相容核心。核心與其他 GNU 軟體包結合在一起,形成了一個完整的可使用作業系統。如今,這種組合被稱為 GNU/Linux,儘管它經常被錯誤地稱為 Linux

這開源是什麼東西?

[編輯 | 編輯原始碼]

開源與自由軟體類似。最大的區別是開源將 FLOSS 僅僅視為一種製作更好軟體的方式,並不重視人們的自由。

開源是怎麼開始的?

[編輯 | 編輯原始碼]

1998 年,一些自由軟體開發者意識到,如果他們對倫理和自由保持沉默,只談論自由軟體的實際利益,他們也許能夠更好地傳播自由軟體,特別是向企業傳播。術語“開源”被提出來作為實現這一目標的方式。

為什麼開源和自由/自由軟體經常被歸類在一起?

[編輯 | 編輯原始碼]

大多數(並非全部)開源軟體也可以被視為自由軟體,反之亦然。

哪個更好?自由軟體還是開源軟體?

[編輯 | 編輯原始碼]

這兩個術語實際上總是應用於相同的軟體程式,但自由軟體作為一個運動,要比開源更好,因為它重視你的自由,併為軟體開發提供了更優越的模型,而開源只倡導一種開發模型。

生產方法

[編輯 | 編輯原始碼]

自由軟體究竟是怎麼製作的?

[編輯 | 編輯原始碼]

與其他軟體的製作方式相同。人們坐在電腦鍵盤前,輸入命令和程式碼並編譯它們。

為了正確理解自由軟體的製作方式,我們需要了解所有軟體——自由和專有軟體——是如何製作的。

點選以下連結以瞭解有關誰在做這件事? 的更多資訊: http://widi.berlios.de/paper/study.html

好吧,那麼軟體是如何製作的呢?

[編輯 | 編輯原始碼]

軟體程式本質上是一組指示計算機執行特定任務的指令。由於計算機本身沒有思考能力,因此它只能理解用特定語言編寫的指令,這種格式被稱為“目的碼”。不幸的是,對人類來說,目的碼看起來像亂碼。在建立軟體時,人類使用一種他們容易理解的特定格式,稱為“原始碼”。原始碼使用字母、數字和標點符號,就像任何人類語言一樣,可以被學習過的人類理解。因此,我們現在有原始碼,一種人類編寫或建立程式的格式,但對計算機來說看起來像亂碼;以及目的碼,一組計算機可以理解但對人類來說看起來像亂碼的指令。一個名為編譯器的特殊程式將原始碼轉換為目的碼。重申一下,人類用名為原始碼的格式寫下他們想要計算機做的事情。然後它被翻譯成計算機唯一理解的語言——目的碼。一個名為編譯器的特殊程式進行這種翻譯。

現在我已經理解了軟體是如何製作的,那麼自由軟體是如何製作的呢?

[編輯 | 編輯原始碼]

記住,大多數人不能輕易理解目的碼。因此,如果一個人想要仔細研究、修改或改進一段軟體,他們必須能夠訪問該軟體的原始碼。由於自由地檢查、修改或改進軟體是自由軟體概念的核心,因此,要將一段軟體視為自由軟體,人類必須能夠訪問該軟體的原始碼。

與專有軟體不同,專有軟體只有原始軟體建立者(或他們明確授權的人)才能訪問原始碼,任何感興趣的人都可以訪問自由軟體的原始碼。因此,如果自由軟體的使用者想要修改或改進它,他們可以自由地這樣做。在許多情況下,進行改進的人會透過網際網路將改進後的軟體提供給更廣泛的公眾。根據定義和實踐,通常只通過網際網路相互聯絡的人協作建立自由軟體。自由軟體建立過程中經常被忽視的一個關鍵方面是來自普通使用者的投訴和建議形式的反饋。這種反饋被積極尋求,並且存在許多工具可以使普通使用者輕鬆地將這些投訴、錯誤報告和建議整合到生產方法中。

那麼這與其他型別軟體的生產有什麼不同呢?

[編輯 | 編輯原始碼]

通常,生產非自由軟體的實體對誰能夠訪問其程式的原始碼有非常嚴格的限制,並且只以目的碼格式分發其軟體。這樣做的原因是,雖然將原始碼編譯成目的碼非常容易,但從目的碼中獲取原始原始碼非常困難。一個比喻是乳酪。雖然用牛奶製作乳酪很容易,但從乳酪中獲得牛奶幾乎是不可能的。

什麼樣的人制作自由軟體?

[編輯 | 編輯原始碼]

許多編寫自由軟體的人都是志願者,他們可能有一份與之無關的白天工作。這些人將空閒時間用於開發自由軟體。

從自由軟體分發中獲益或提供自由軟體支援的商業組織也透過投資其利潤的一部分來開發自由軟體。Red Hat就是一個這樣的組織。

有許多非營利組織透過自由軟體使用者的捐款籌集資金來開發自由軟體。自由軟體基金會就是這樣一個組織。其他例子包括SPI、GNOME基金會、Mozilla基金會等等。

一些自由軟體包是由大學開發的。Festival文字轉語音引擎、Octave(Matlab克隆)是大學開發的軟體的例子。

許多商業組織也為自由軟體的開發做出貢獻,因為這些組織從現有的自由軟體程式碼庫中獲益。例如,IBM維護著Linux移植到PowerPC CPU的版本,因為它需要一個作業系統來執行其CPU。

但我仍然不明白,為什麼有人會想免費贈送他們的作品?他們從中得到了什麼!?

[編輯 | 編輯原始碼]

出於愛或為了錢。

是的,人們確實透過將他們建立的軟體釋出為自由軟體來賺錢。像MySQL和Red Hat這樣的公司機構,因為它們將自己建立的軟體釋出為自由軟體(並提供自由軟體的支援合同)而賺錢。並且他們發現,他們能夠賺到的錢比他們將軟體保留為非自由軟體時所能賺到的錢多得多。

使用“贈送”一詞來表示“將程式分發為自由軟體”具有誤導性。它暗示問題是價格,而不是自由。避免混淆的一種方法是說“釋出為自由軟體”。

人們編寫自由軟體的原因有很多。有些人可能只是想讓自己的作品傳播到世界各地。許多人希望生活在自由中。他們為自由軟體做出貢獻,以便他們能夠繼續生活在自由中。有些人編寫自由軟體只是為了好玩。他們熱愛程式設計,因此利用他們的程式設計技能做一些有用的事情。

你可能想閱讀埃裡克·雷蒙德的論文,標題為Noosphere的宅基地。埃本·莫格倫在他的名為無政府主義的勝利:自由軟體和版權的消亡的論文中解釋了“莫格倫對法拉第定律的隱喻推論”。這條定律也解釋了為什麼人們開發自由軟體。

使用自由軟體的論據

[編輯 | 編輯原始碼]

我仍然沒有被說服。在軟體設計方面,大型計算機公司肯定最瞭解?為什麼我要使用由業餘愛好者設計的軟體?

[編輯 | 編輯原始碼]

自由軟體並非由業餘愛好者建立。自由軟體開發過程是公開透明的。如果你想將你的程式碼包含在一個自由軟體專案中,它將受到許多人的審查。業餘或寫得很差的程式碼會被直接拒絕。

雖然你認為“大公司”在軟體設計方面更勝一籌的說法值得懷疑,但“大公司”也可以自由地開發自由軟體。而且它們確實開發了自由軟體。例如,Red Hat、Sun、Novell和IBM都開發了自由軟體。

如果有一群人想編寫特定軟體,他們可以籌集資金,聘請一家程式設計公司,讓專業人員編寫軟體,然後將其釋出為自由軟體。沒有理由讓自由軟體必須由業餘愛好者編寫。

即使由業餘愛好者設計的自由軟體比由專業人員設計的非自由軟體更差,你可能仍然想使用自由軟體,因為它賦予你自由,而自由更重要。此外,喜歡這個想法的更好的程式設計師可以為這個專案做出貢獻。

大型公司在軟體設計方面更瞭解,這絕對不正確。它們依賴於一小群程式設計師,並且通常不像自由軟體那樣與使用者密切接觸。因此,自由軟體開發人員通常更瞭解使用者的需求以及他們對現有版本的投訴。一些大型公司允許技術能力不足的營銷專家做出軟體設計決策,這些決策優先考慮營銷需求,而不是使用者的需求和軟體的健壯性。

無論如何,對許多自由軟體應用程式的檢查表明,如今它們與等效的非自由應用程式一樣好甚至更好,或者正在快速達到這一水平。並且很大一部分自由軟體開發人員並非業餘愛好者。而且你如何知道銷售非自由軟體的大公司是否僱傭了業餘程式設計師來編寫程式碼?

我們使用什麼取決於我們想要什麼。對於電腦使用者來說,能夠完成他們想要完成的事情的軟體是必要的。如果這樣的軟體不存在,那麼他們就不能做那種特殊的工作。工作能完成得有多好,以及完成得有多快,取決於可用的軟體和硬體的質量。因此,人們希望擁有能夠讓使用者以最少的努力完成工作並獲得最佳輸出的軟體。軟體的這些特性通常會隨著時間的推移而改進,術語“站在巨人的肩膀上”適用於自由軟體,因此改進會帶來進一步的改進。在非自由軟體下,它總是“重新發明輪子”,或者更糟糕的是,為了讓另一家公司或個人改進程式碼而規避專有限制。

但比所有這些更重要的是軟體的自由度。如果軟體受到限制,並且製作軟體的公司隱瞞了有關軟體是如何建立以及檔案是以什麼格式建立的所有資訊,那麼使用者就會依賴於該公司,並受到剝削。由於這些在更大的背景下更為重要,因此在使用非自由軟體時,使用自由軟體非常重要。

但是漏洞怎麼辦?自由軟體更容易受到病毒感染嗎?

[edit | edit source]

這個問題涉及兩種不同的計算機相關問題 - 漏洞和病毒。

漏洞是程式中無意的錯誤。在使用自由軟體時,當你發現程式中的漏洞時,你就有權行使自由二,即幫助自己並糾正程式的自由。如果你不是程式設計師,你可以自由地將漏洞報告給軟體維護者,或者僱用任何程式設計師來糾正程式。你不必受制於任何單一組織。透過向軟體包的維護者提交漏洞修復,軟體包會越來越好。

病毒是一種惡意程式,它透過在其他程式中嵌入自己的副本來感染其他程式。有關這些安全風險的更多資訊,請參見下面的部分。

由於原始碼是可用的,是不是很容易讓人找到安全漏洞並利用它?

[edit | edit source]

是的,但在原始碼到達利用漏洞的人手中之前,它會經過開發自由軟體的人手中。他們通常會修復這些漏洞。

在使用自由軟體的情況下,利用漏洞的事件會非常、非常快地報告和修復,通常在幾小時內。

換個角度看,由於原始碼是可用的,所以很容易有人找到安全漏洞,甚至在它被利用之前就製作一個補丁!

此外,GNU 作業系統從一開始就以安全為設計理念。

所以你是說自由軟體的演進速度實際上比非自由軟體快?

[edit | edit source]

自由軟體的演進速度非常快。這主要是因為它涉及到它的使用者,使用者會為工具的開發貢獻漏洞報告,甚至程式碼補丁。開發的路徑和速度非常開放,只有真正需要的功能和問題才會被解決。快速釋出和經常釋出是這種開發的主要“口號”。

但是請注意,這僅有利於已經達到普遍使用的階段的工具。一旦發生這種情況,使用者也有興趣推廣並實際參與開發。在某種程度上,這確保了只有值得的和有用的工具才能以這種方式獲得支援。

與流行的假設相反,這種模式是自由放任,以儘可能真實和高效的方式。供求關係在供應者和消費者更多的情況下運作得最好。而這就是這裡發生的事情。

演進的速度實際上是由軟體的流行度和實用性決定的。軟體越流行,它演進的速度就越快。事實上,如果任何事情阻礙了這種速度,比如不感興趣的維護者或被放棄的公司,通常其他的人會作為專案的開發者站出來。或者有時,專案的派生分支會產生(不是說它們沒有在其他時候產生),以繼續開發,在另一個旗幟下進行,因為原始原始碼可以被任何人自由使用或維護。

與專有軟體採用的孤立開發模式相比,這是一個巨大的優勢。對於工具的延續性也不存在任何疑問,這是軟體演進路徑中的最終障礙。

這個概念在埃裡克·雷蒙德的論文《大教堂與集市》中得到了很好的解釋。

自由軟體只被電腦愛好者使用,對吧?

[edit | edit source]

錯。

自由軟體被那些更看重自由的人使用,而不是其他任何東西。

全世界數百萬人在訪問網際網路上的熱門網站時,實際上是在使用自由軟體,而沒有意識到這一點 - 請參見下面的部分。

有哪個知名組織真正利用自由軟體獲得了優勢?

[edit | edit source]
  • 此頁面託管在執行自由軟體(GNU/Linux,Apache/1.3.29(Unix),PHP/4.3.4)的伺服器上。
  • 超過 98% 的域名伺服器都使用名為 BIND 的自由軟體來識別頁面(如 http://wikibooks.org/)所在的機器。
  • 超過 80% 的所有網站伺服器都使用名為 Apache 的自由軟體來提供他們的網站。但不幸的是,由於 Apache 沒有遵守 copyleft 協議,因此這些伺服器中的許多都執行著 Apache 的專有版本。
  • 超過 60% 的所有網路伺服器都執行 Linux 核心,另一個自由軟體。
  • 大多數計算機上的 TCP/IP 實現(包括那些執行非自由作業系統的計算機)都是自由軟體。
  • "Digital Domain 使用 105 臺執行 Red Hat [GNU/]Linux 的 DEC Alphas 來模擬和渲染詹姆斯·卡梅隆的《泰坦尼克號》中的水" -- http://www.computer.org/computer/homepage/0202/ec/

與自由軟體的個人關係

[edit | edit source]

使用自由軟體,我可能會遇到哪些問題?

[edit | edit source]

與非自由軟體一樣的問題。

今天自由軟體的一些問題是:

  • 不一致。以手冊為例。有些自由軟體附帶資訊手冊,有些附帶 man 頁面,有些附帶 HTML 文件,有些附帶純文字檔案,還有一些只附帶原始碼註釋!
  • 無法使用某些專利演算法。但這不是自由軟體本身的問題。
  • 某些裝置的驅動程式不可用,尤其是“WinModems”。
  • 自由軟體在美國法律上不能用於某些涉及複製保護技術的活動。這包括播放加密的 DVD。

好吧,但是為什麼我需要修改我的軟體呢?

[edit | edit source]

有很多原因。例如,某個軟體不支援你的本地語言。你希望這個軟體能提供你的本地語言版本,以便你可以使用它。如果這個軟體是專有的,你將不得不去懇求軟體的“所有者”。如果他認為進行更改不盈利,他不會進行更改。使用自由軟體,你可以自己進行更改,或者你可以去一家程式設計公司,要求他們為你進行更改(理查德·斯托曼就是透過這種方式在一段時間內維持生計)。使用自由軟體,你並非無助。

還要考慮這種可能的情況。在你接受教育期間,你可能編寫過一個專案、論文或學位論文。很有可能,你可能使用過朋友或大學的計算機來建立這些作品。沒有保證,你幾年後在懷舊的心情下決定翻閱過去的作品時,就能獲得與建立該檔案時相同的軟體或軟體包。此時,你會想修改現有的軟體來讀取新的檔案格式。

如果你是一個需要(或者像經常發生的那樣,受法律義務)長期儲存某些資訊的組織,透過第三方供應商修改你的軟體的權利是最重要的權利。

聽著,我不是電腦高手!我直接使用打包軟體不是更容易嗎?如果出現問題,我該找誰呢?

[edit | edit source]

如果你不是電腦專家,使用自由軟體就更重要了。這樣,你就不用依賴於你購買非自由軟體的公司。

首先,閱讀軟體附帶的文件。如果這沒有幫助,請嘗試使用搜索引擎(如 mozDex)在網上搜索。最後,嘗試以下方法之一。

如果你正在尋找“免費”的幫助,你的當地總會存在一個自由軟體使用者組或 Linux 使用者組。找到一個。或者詢問任何提供支援的無數郵件列表或論壇。你會對收到的回覆和支援感到驚訝。一個論壇是 Nuxified.org。還有更多受歡迎的論壇,但有些沒有樹立好榜樣——他們使用非自由軟體(如 vBulletin)來為他們的網站提供動力。

如果你願意花錢,你始終可以聘請一家公司或一位諮詢程式設計師來幫助你。

你也可以從專業公司購買支援。由於軟體本身是開放的,支援供應商無法像使用專有軟體那樣把你鎖定。你始終可以自由地選擇另一個支援供應商。

此外,如果你的需求非常大,擁有一個內部軟體開發和支援團隊,他們將使用自由軟體來滿足你的需求,並不斷維護它,這將是非常划算的。

但我怎麼知道我能信任一個沒有與擁有信譽的大公司相關聯的人呢?

[edit | edit source]

許多大公司確實為自由軟體提供支援。許多大公司為他們的服務收取的費用是許多個人或小型公司的幾倍。請記住,在自由軟體場景中,你只為服務付費,而不是為產品或軟體包付費。因此,將會有巨大的節省,即使那些從事自由軟體的公司或顧問是其領域的專家和市場領導者,他們也將始終擁有較低的營業額。

此外,一家鮮為人知的小公司/個人可能會獲得壞名聲。

我應該使用哪個 GNU/Linux 發行版(簡稱發行版)?

[edit | edit source]

有許多公開可用的 GNU/Linux 發行版。 Distrowatch維護著一個發行版列表,其中包含其功能的摘要。 Fedora Core(以前稱為 Red Hat)、OpenSuseUbuntu是新使用者受歡迎的發行版(按字母順序排列)。還有許多其他發行版,例如 Damn Small Linux、Gentoo、Morphix、Slackware 等等。

Ubuntu是一個基於 Debian GNU/Linux 的發行版,但旨在易於使用。他們提供了非自由軟體,但預設情況下不會啟用它。它有一個 Live CD 可供使用,允許你在不安裝到計算機上的情況下測試發行版。

OpenSuse是一個功能強大且易於使用的發行版。他們的評估版包含非自由軟體,但開源軟體版不包含。

Fedora Core也是新使用者友好的。

如果你精通計算機並且對 GNU/Linux 系統有一些工作經驗,請嘗試使用 Debian。Debian 的主要優勢在於其龐大的軟體包數量。它還支援許多不同的架構。Debian 還具有不使用 Linux 作為核心的發行版,例如 Debian GNU/Hurd 和 Debian GNU/kFreeBSD。只有在你真的有興趣開發自由軟體時才使用這些發行版。但是要注意,Debian 在其軟體包儲存庫中包含非自由軟體,這些軟體包的名稱以“-nonfree”結尾。

為了避免使用非自由軟體,你應該避免使用 Mandriva(以前稱為 Mandrake)、MEPIS、KNOPPIX、Linspire……這些發行版預設情況下包含非自由軟體包。

如果你正在尋找 100% 免費的發行版,你應該嘗試 gNewSenseTrisquel

根據你的需求,甚至還有專門的 GNU/Linux 發行版。有一個發行版專門播放影片光碟。有幾個發行版僅用作防火牆。有些發行版可以從一兩張軟盤執行。有些發行版旨在用作救援盤。還有一些發行版專門用於音樂家和地理資訊系統 (GIS)。大多數主流發行版都附帶了幾張光碟,但你通常可以使用第一張或兩張光碟來建立一個可執行且可用的系統。

我在哪裡可以找到自由軟體?

[edit | edit source]

一些好的來源是

注意:接下來的兩個也列出了非自由軟體,儘管大多數是免費的。

我有一些 Windows 軟體,我在 GNU/Linux 上找不到替代品!我在哪裡可以找到一個?

[edit | edit source]

檢視 Ubuntu 社群上的自由軟體替代頁面適用於 Windows 的 GNU 軟體

好的,那麼我如何開始在我的機器上安裝自由軟體呢?

[edit | edit source]

再次,你開始在你的機器上安裝非自由軟體的方式相同。你可以購買預裝了自由軟體的計算機。或者你可以讓朋友幫你做這件事。或者找到一個專業人士來做這件事。

如果你決定自己動手,請嘗試許多不同的軟體,直到找到你喜歡的軟體。

大多數發行版都內建了一種簡單地安裝軟體並查詢其所有依賴項的方法,稱為包管理器。一些包管理器是

  • Smart 支援多種型別的儲存庫,包括 yum、apt、apt4rpm 和 urpmi。
  • Yum 用於 Fedora Core
  • Apt 用於 Debian
  • Apt4RPM 用於 RPM 發行版
  • Portage 用於 Gentoo
  • Ports 用於 FreeBSD

如何將我編寫的軟體變成自由軟體?

[編輯 | 編輯原始碼]

請參閱 GNU GPL 的最後一部分。 務必編寫 自由文件(或讓其他人來做)!

我怎樣才能從自由軟體中賺錢?

[編輯 | 編輯原始碼]

最簡單的方法是銷售自由軟體。 務必向他們解釋,這是自由的問題,而不是價格。 與軟體一起分發本書可能是個好主意。 請記住,如果軟體在 GNU GPL 下,並且您分發二進位制檔案,則必須將原始碼與二進位制檔案一起提供,或者單獨提供原始碼。

您還可以編寫 自由文件 並出售。 上述段落中的相同內容也適用於這裡。

另一種方法是,如果您能編寫軟體,可以自僱來新增/更改自由軟體中的某些內容。 如果您是軟體的維護者,您可以讓人們付費讓您將專案中新增/更改的優先順序提高。 這就是 Richard Stallman 過去用來養活自己的方式,而且他還在繼續。

華夏公益教科書