顯示具有 開發 標籤的文章。 顯示所有文章
顯示具有 開發 標籤的文章。 顯示所有文章

2016年6月9日 星期四

自由軟體:不只是軟體,更是編織人心的故事

朋友們,或許你們曾經讀過《Ubuntu 的意義》,那今天我們來更進一步談談自由軟體。

上一篇文章中,我提到自由軟體從開發到產出成品,都需要社群的參與,這點我相信大家多少已能理解。而一個自由軟體專案的運行,須要三個要件:人.心.結。

他們這群人有著各自的興趣專業,彼此協調、分工,參考規劃的時間表一同努力做出成品。人們使用這些軟體,人們在生活中、網路上討論、分享軟體的使用經驗,而分享又幫助了其他使用者,開發者甚至從中再去改善軟體。這樣共創共享、互助合作的人文氣氛,就是自由軟體。以下分別舉 Blender、Fedora、LibreOffice 等專案來向各位說明。

《人 People》

只要你願意試著接觸、參與自由軟體專案,你會發現其實每個自由軟體的背後,都是一群人。不管是使用者、推廣者、試驗者、開發者… 等,都因為這個軟體而產生了連結。

Blender

問:「請問這個叫『Blender』的怪東西究竟是什麼?」
Blender 基金會主席 Ton Roosendaal 答:「Blender 是在講一群人。」

Q: What is this strange "Blender" thing about?
A: Blender is about people. Ton Roosendaal, Chairman of Blender Foundation

Fedora

問:「請問什麼是 Fedora 專案?」
答:「Fedora 專案是全世界自由軟體社群成員間的互助合作。Fedora 專案孕育許多開源軟體社群,並打造出一個名為『Fedora』的 Linux 散佈版本。」

Q: What is the Fedora Project?
A: The Fedora Project is a partnership of Free software community members from around the globe. The Fedora Project builds open source software communities and produces a Linux distribution called "Fedora."

LibreOffice

口號:Fantastic People
「LibreOffice 不只是軟體。它更是人群、文化、創造、分享、與合作。」

LibreOffice is about more than software. It's about people, culture, creation, sharing and collaboration.

《心 Mind》

這群人為何會因此聚在一起?他們參與的動力為何?因為他們有著共同的「目標」、「理想」、「信念」、或是稱之為「夢想」的東西,我想總稱為「心」或許更為合適。

Blender Foundation

提供獨立藝術家和小型團隊完整、自由且開源的 3D 創作一條龍流程。
Provide individual artists and small teams with a complete, free and open source 3D creation pipeline.

Fedora

我們提供專有軟體與內容的自由版替代品,使 Fedora 完全自由,並且讓每個人都能再度將它散布給其他人。
We provide free alternatives to proprietary code and content to make Fedora completely free and redistributable for everyone. 

The Document Foundation

弭平數位落差,讓每個人都可免費使用辦公軟體,使其得以21世紀的完全公民身份參與社會。
To eliminate the digital divide in society by giving everyone access to office productivity tools free of charge to enable them to participate as full citizens in the 21st century

《結 Connection》

這群相同理念的人又如何聚在一塊?可能是專案開發、論壇討論、知識分享、社群聚會… 等。自由軟體不單單只是軟體而已,它也是一群人堅持的理念與生活方式,更是一群有心人聚在一起把夢想編織出來的交互連結過程:聚在一起成型,扭轉、纏繞,時而返回原路、或者斷裂,接著又再聯繫一塊,這就是所謂的「結」。

下次當有朋友問起「什麼是自由軟體?」時,你可以笑著跟他說「自由軟體講的是編織人心的故事」。 

作者 zerng07,目前是 Fedora 大使、The Document Foundation 會員、Blender 翻譯者

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. 協助其他使用者,像是在論壇上幫助發問的網友解決問題、幫助朋友取得軟體或使用軟體