2016年4月5日 星期二

自由軟體常見問答集 FAQ

問:什麼是自由軟體?
答:自由軟體與一般市面常見的封閉軟體(或稱專有軟體)不同,它的授權條款保證使用者四項基本自由
  1. 不論任何目的,皆可自由使用
  2. 自由研究程式如何運作,並且自由改寫 (能夠取得源碼是這項自由的前提)
  3. 可以自由地將它再散布出去,所以你可以幫助你的親朋好友
  4. 自由改善並釋出成果,讓他人可自由取用,這樣整個社群就能受益於你所作的修改
參見:《充滿烏托邦理想的四大自由自由》,作者葛冬梅

問:什麼是源碼(或稱源始碼、源代碼、程式碼)?
答:程式的原始狀態其實是源碼,一種用程式語言撰寫的檔案,透過編譯器或直譯器等工具可以將它轉為機器可以執行的二進位檔。一般我們常用的軟體都屬於後者,也就是二進位檔。這兩者的關係,就像是文書處理軟體的電子檔與印刷出來的文件;前者我們 可以透過電腦編輯,後者我們無法編輯,但是可以在生活中使用。

問:自由軟體與免費軟體哪裡不同?
答: 自由軟體主要指具備四大自由的軟體授權方式,免費只是其中一項「可以自由地將它再散布出去」的附帶效果,不一定會發生,端視散佈給你的人而定。免費軟體強調使用免費,但它一般採用只准許你個人使用,而且也不准許你研究程式如何運作,也不能改寫,更不用提將它散布出去給別人了 (註:有的授權方式可能會例外准許),有的甚至屏除商業使用的專有授權。

自由軟體和開源軟體哪裡不同?
答:自由軟體強調四項自由的保障,開放源碼是必要手段;而開源軟體則強調源碼的開放性。開源軟體需要符合下列十點:
  1. 自由再散布
  2. 軟體應附有源碼
  3. 允許修改軟體和衍生軟體
  4. 源碼的完整性
  5. 不得歧視任何人或團體
  6. 不得歧視任何專業工作領域
  7. 授權條款的散布
  8. 授權條款不得具體針對一項軟體產品
  9. 授權條款的規定不得影響其他軟體
  10. 授權條款非基於特定之技術或平台
參見:《開放原始碼的十項定義》,作者葛冬梅

為什麼大多數可見的自由軟體都是免費的?
答:因為自由軟體其中一個自由保障大家可以自由地將它再散布出去,就算軟體最開始的開發者要收費(通常是收取合理的散布費用與成本費用),付費取得軟體的人還是可以將它放在網路上供大家下載且仍然符合授權規範,這樣可以讓軟體更自由流通。

當然,也有一些基於自由軟體的產品是需要收費的,舉例來說 Red Hat Enterprise Linux 這套企業用 Linux 作業系統就是,雖然該公司沒有發布二進位檔給大家直接使用,但該公司仍要依照自由軟體的第二項自由規範釋出源碼,讓其他人能研究程式如何運作。因此有一些社群朋友將這套 Linux 釋出的源碼,再編譯而成 CentOS 作業系統,大家可以自由下載。

問:哪些授權方式算是自由軟體?
答:最常見的授權方式為 GPL、LGPL、AGPL,和 Apache、BSD,以及 CPL、MPL、EPL、CCDL 等。若軟體沒有標明授權方式,通常不屬於自由軟體。

問:有什麼推薦的自由軟體?
答:很多,無法一一列舉。但有許多常見的專業自由軟體羅列如下:
辦公套裝軟體 LibreOffice:http://zh-tw.libreoffice.org
影像編輯軟體 Gimp:http://www.gimp.org
手繪軟體 Krita:https://krita.org/ 
手繪軟體 MyPaint:http://mypaint.org/
向量繪圖軟體 Inkscape:http://inkscape.org
3D  內容製作軟體 Blender:http://www.blender.org/

問:有自由的作業系統嗎?
答:有的,例如 Musix、gNewSense、Trisquel... 等,它們完全以自由軟體構成。
但礙於現實層面,不是所有一般生活中的軟體都有自由的版本,為了讓作業系統正常運作,或是提供更多實用軟體給使用者,大部分可自由下載的作業系統中,仍包含 一些可以自由再散布但不能研究或修改的軟體,通常會放在非主要的軟體庫讓大家使用,但作業系統本身主要還是以自由軟體為基礎構成,例如 UbuntuFedoraopenSUSEChakraPCBSDezgo 等。

問:網路上哪裡有自由軟體的教學或分享?
答:目前軟體教學或分享散見於各個作者的網站、部落格,或是各大論壇的討論中,較無系統性,建議可以透過 Google 搜尋引擎輸入您想了解問題的關鍵字查詢。
近來也有一些計畫或專案想統一個地方擺放教學與分享,但仍在起步中,例如:LibreOffice 正體中文文件

問:我對自由軟體的使用上有疑問,該去哪裡發問?
答:你應該找到與該自由軟體相對應的論壇,或是請益對該軟體有專精的部落客。
舉例來說,有關 Ubuntu 作業系統使用上的問題,可以前往 Ubuntu 正體中文站;對於 Fedora 作業系統有不解,可以前往 Fedora 中文論壇;對於 LibreOffice 有疑問,可以前往 OOo 補給站;對於 Blender 有疑惑,可以前往 臺灣 Blender 使用者小聚

問:有些商業公司說採用自由軟體的成本比較高,是真的嗎?
答: 不見得,依情況而異,但絕大多數的情況下不是真的。如果說你或你的公司已經採用某些商業公司的產品很久,當然在轉換至自由軟體環境時仍需要付出一些代價,代價就是需要人員重新適應新軟體,舊的資料要轉移到新環境上。尤其是你的技術、資料與人力已有相當程度依賴這些商業公司的產品時,這樣的轉換就如同重新來過。

市場上有不少公司提供自由軟體的支援服務,以及環境轉換的服務。然而這樣的代價僅只需要一次,一旦成功轉移後, 自由軟體可以讓你永續使用下去。商業公司的封閉軟體就不行了,每當支援年限一過,需要轉移到新版時,你的技術、資料與人力也都需要部份調整或全部重新來過,每次升級都是陣痛;而且除了轉移的成本外,還需要產品升級的成本。

如果你還不是很熟悉相關軟體,採取自由軟體或封閉軟體都無所謂,都是全新開始的過程。封閉軟體的好處是市面上有許多書籍可以參考,還有訓練廠商可以上課;而自由軟體的書籍因為使用風氣還沒帶開,所以參考書目較少,但是你仍可以透過網路查詢,此外你也可以參與許多論壇發問,通常會有熱心網友的志願答覆。

問:有人說自由軟體比封閉軟體安全,是真的嗎?
答:沒有絕對。

雖然自由軟體的源碼是提供給大家公開檢視的,所以開發者發布之前通常會比較謹慎撰寫,但也有開發者沒測試過就先發布的。此外,其他參與的開發者,以及有興趣的資安專家也會檢閱源碼,一發現有問題可以即刻回報開發者;然而,通常這些人都很忙碌,不見得有時間仔細檢視。當然,惡意的怪客也會檢閱源碼,找尋可以攻擊的漏洞, 所以也有可能怪客先發現問題,展開攻擊後才有其他人發現。但只要該問題被發現後,任何志願修補問題的人都能將改善問題的源碼公布出來,可以迅速對攻擊展開回應;不過反應速度還是取決於問題何時被發現,以及有沒有人有能力修補並釋出。

封閉軟體授權明文規定不准任何人反組譯軟體,所以除了開發者與合作夥伴之外都不能研究源碼,因此惡意的怪客就會利用反組譯技術取得源碼,找到漏洞並攻擊,此後的修補動作完全仰賴廠商與合作夥伴的反應速度,這途中如果有人擅自研究,並將改善的源碼公佈,這樣的動作就違反了當初軟體的授權,根據授權條款之規定可能遭受廠商提告。也有可能他們內部對於軟體品質要求相當高,因此軟體很安全也說不定,但實際情況為何猶如黑箱,因為封閉的授權條款使得外界完全無法得知真實情況。

此外,密碼學、電腦安全專家 Bruce Schneier 所著作的「祕密與謊言 (Secrets and Lies: Digital Security in a Networked World )」一書中,也揭露出封閉軟體背後的不安全性或許大於開源軟體,但實際情況卻會因為人為因素而產生變異。這本書的中文版由商周出版社出版,目前已經絕版,可以透過各大圖書館查閱(若你是嘉義高中的學生,圖書館剛好就有一本),或是購買二手書。

問:自由軟體專案背後的運作機制是怎樣的呢?
答: 一般自由軟體專案都是由自願者發起,等到軟體有一定成熟度後再將公開發行,讓大家使用。

開發時,通常需要有一些人來參與翻譯與測試,直到預定發布日期達到時,再看看軟體目前狀態是否達到釋出的標準,像是軟體的重大問題是否修正了,如果可以了就會釋出,不行的話就將時程往後推,等到那個日期再檢視一次。

釋出後,如果有什麼地方有問題,或是使用者有什麼改善方法與建議,都可以直接透過官方溝通平台表達,或甚至透過源碼的修改再將改善成果提交回官方。如果發現翻譯不完整,通常也都能透過官方提供的平台或公開檔案改善後再提交回官方。是一種需要使用者相當程度參與其中的軟體開發方式。

較大型的自由軟體專案通常有商業公司贊助或是由其發起,這些商業公司可能提供人力、財力幫忙開發軟體,並且將軟體用於自己的產品上。舉例來說,Linux  內部核心(原文 kernel,簡稱內核)的源碼有 75% 來自商業公司僱用的員工,因為 Linux 內核可以用於這些公司的產品上。這種開發方式使用者的參與程度通常比較低,因為商業公司會僱用自己的翻譯者、測試者來確保軟體的可用性,但這不代表使用者就被屏除在軟體專案之外,實際上仍然可參與其中。

問:自由軟體大多可以免費取得,那麼它們的開發成本從哪裡補足?
答:如果說這個軟體在商業上的價值較低,或是比較冷門一般人不大會使用到,那麼這些自由軟體的開發成本通常完全仰賴開發者自己,大多數是興趣與熱情讓他們犧牲自己的業餘時間來開發。

至於一般使用者常用的大型軟體,有些商業公司基於商業利益會提供資金贊助,此外這些軟體專案會希望使用者能捐款,盡量提供資金讓開發者可以不擔憂生活壓力來開發軟體。有的規模較大的甚至會成立基金會來協助軟體開發,像是 GNOME 基金會與文件基金會(The Document Foundation)分別協助 GNOME 桌面環境與 LibeOffice 的開發。

問:我可以透過什麼方式回饋自由軟體專案呢?
答:如果你喜歡這個自由軟體,希望它變得更好,你可以透過以下方式來幫助它
  1. 協助專案開發,像是幫忙測試軟體並回報遇到的使用問題、幫忙翻譯軟體、幫忙改善有問題的源碼
  2. 捐款贊助軟體專案,或是購買週邊商品。舉例來說,GNOME 專案就有「GNOME 之友」認養活動,你可以透過這個活動來幫助 GNOME 基金會。還有 Ubuntu 作業系統背後的主導開發公司 Canonical 有「線上商店」讓你可以訂購 Ubuntu 週邊商品。
  3. 捐款贊助在地社群,或加入自由軟體之相關組織機構。例如,Fedora 臺灣社群就有捐款計劃,你可以給予他們贊助來幫忙舉辦活動或支應主機代管的開銷;或者是考慮成為軟體自由協會的會員,一起和這群關愛自由軟體的人們為臺灣自由軟體的未來奮鬥。
  4. 推廣這個軟體,像是在網路上宣傳、推薦給親朋好友、或是撰寫部落格來介紹它
  5. 協助其他使用者,像是在論壇上幫助發問的網友解決問題、幫助朋友取得軟體或使用軟體

沒有留言:

張貼留言