自由軟體的本質

自由軟體的存在,建立在四大自由之上。
  • 零:自由執行程式,無論任何目的。
  • 壹:自由研究該程式如何運作,並依照想法修改以符合自身所需。(能存取源始碼是這項自由的先決條件)
  • 貳:自由再次散布程式副本,幫助親朋好友街坊鄰居。
  • 參:自由將修改後版本散布給他人,如此一來就有機會讓改善惠及社群整體。(能存取源始碼是這項自由的先決條件)
於是,自由軟體就不再是個人專屬的,它更是全民共有的。

BabyGnuTux-Big,作者 Nicolas Rougier,源始檔在此

漢文中所謂軟體,泛指一切智慧、思想的資源,與硬體相對。而硬體泛指一切建設的實質設施。

基本上我們可以這麼想,電腦世界中的軟體是程式碼,是種具有實用性質的數學式,在互相組合交織之後得以完成某些事務的智慧思想過程,人們將之寫下並交付給電腦運行。就像數學一樣,軟體需要相當進階的專業知識才能夠正確地調整、改善和使用,這就是為什麼有許多人會僱用程式設計師來更新軟體與改良。

自由軟體的特性,就是個人和群體都能自由運用這些以數學式形式存在的事務處理思維過程。也因為自由軟體這樣的特性,造就個人與群體之間的連結與互動,形成了「社群」。

歷史

就歷史而言,起源自理查・史托曼 (Richard Stallman) 的重大自由軟體專案 — GNU 專案。其創立本身旨在完成理查・史托曼的個人理想,打造出完全是自由軟體的 Unix 風作業系統,一套不同但類似(且相容)於當時主流之專有 Unix 的作業系統,他將這套作業系統稱為 GNU,意思代表 GNU's Not Unix。於是世界各地認同這個理念的人們就這麼聯合起來,成為社群,互助合作共同打造 GNU 作業系統。

在1991年時,GNU 將近完成,只欠 Unix 風作業系統中最內部用來分配機器資源、並和硬體對話的程式,也就是「核心」,英文稱為 kernel。剛好林納思・托瓦茲 (Linus Torvalds) 所開發的 Linux 核心可以補完欠缺之處,許多人開始將 GNU 和 Linux 結合一起,打包成「GNU/Linux」作業系統,自此為自由軟體運動的濫觴。

不過林納思・托瓦茲為何要開發 Linux 核心呢?他本人說是「Just for fun.」純屬樂趣為之。但正因為自由軟體兼屬個人與集體的特性,他這個人樂趣之產物,向外接觸到他人之後,他人若覺方便好用可將之改善,再散布給另外他人(包括回饋給原作者林納思・托瓦茲), 於是又造就了個人與群體之間的連結互動。

後續林納思・托瓦茲在開發 Linux 的過程中,需要和他人合作,創造出 git 版本控制系統。這是種分散式架構,任何人都可以有 Linux 源始程式碼的儲存庫,方便他人在自己的機器上修改程式碼,也方便回饋到原作者的儲存庫中。人們依據自身需求可以如河流般分支出自己的旁支,抑可以再合併回元初的主道,反映了自由軟體的內在本質。

自由軟體的本質

在自由軟體的世界中,人們和程式碼相同,都會聚在一起、成型、扭曲、纏繞,有時又還原、斷裂,再次連接。這就是自由軟體的本質。這項基本性質,其實反映出許多人類文化的思想,亦可以說這些文化底蘊正是自由軟體根源的本質。

以東方的佛教思想體系來看,自由軟體正是「自利利他」的體現。以這種來看自由軟體世界中的自利,如理查・史托曼想要打造「GNU 作業系統」的理想、林納思・托瓦茲「Just for fun」的個人樂趣,而依據自由軟體的本質,無論何時都將利他。深層點我們可以看到這些想法背後皆是由其他所有事物構成,亦即包含整個宇宙,是我、和無我的概念。亦是荒川弘所著之《鋼の錬金術師》中一再提及之「一為全、全為一」的道理。甚者,源自南非復興的 Ubuntu 精神意涵:「I am what I am because of who we all are. 」亦復如此。

以西方的思想來看,自由軟體亦是「自由・平等・友愛 」的體現。在自由軟體的世界中,人人皆有可以使用、研究改善、散布程式(無論有無修改)的自由,所以人人皆平等,沒有軟體被誰專有的情事,而自由軟體所構築的社群,正對應兄弟關係或類兄弟關係的社群價值之友愛 (Fraternité)

在日本動畫家和電影導演新海誠作品《君の名は。》所講述的「むすび」(結び)神道思想中,萬物皆有靈,無論是連接繩線、連接人與人、時間的流動都是むすび,所有事物的推移全都是神明的力量。人們做的結繩是神的作品,亦是時間流動的體現:聚在一起、成型、扭曲、纏繞,有時又還原、斷裂,再次連接。而這樣的描述正好和前述自由軟體世界的運作不謀而合,人們和程式碼都是如此結合成社群。

自由軟體的本質,就是如此反映出人類文化的思想底蘊。每當我們在使用、貢獻、推廣自由軟體之時,其實就已在其中了;瞭解至此,我們也就不意外為何世界上會有這些人,在各地個人卻又集體地發展自由軟體了。

深入閱讀


留言

這個網誌中的熱門文章

論 Render 翻譯(算繪/演繹)

poedit 基本使用教學與 po 檔概念

論 Package 翻譯,套件與軟體包