1. 程式人生 > >自由軟體運動與GNU專案

自由軟體運動與GNU專案

自由的追求

【內容摘要】
  自由軟體意味著自由的權利,而不僅僅是免費獲取軟體的能力。自由軟體的本質:“使用者可以以任何目的執行程式、研究該軟體如何開展工作、重新分發拷貝,此外還可以向公眾重新發布它的原版或修改版。”

  理查德·馬修·斯托曼(Richard Matthew Stallman,簡稱RMS)是自由軟體之父,他是自由軟體運動的精神領袖、GNU計劃以及自由軟體基金會的創立者。作為一個著名的黑客,他的主要成就包括Emacs及後來的GNU Emacs、GNU C編譯器及GDB偵錯程式。他編寫的GNU通用公共許可證(GNU GPL)是世上最廣為採用的自由軟體許可證,為copyleft觀念開拓出一條嶄新的道路。

這裡寫圖片描述

圖1. Richard Matthew Stallman

  提起自由軟體運動,人們總是不由想起比爾·蓋茨和理查德·斯托曼。也許在此之前你並不知道理查德·斯托曼是誰,但你肯定知道比爾·蓋茨。概括來說,比爾·蓋茨是微軟公司的創始人,軟體版權制度的受益者,世界上的頭號富翁;理查德·斯托曼是自由軟體基金會的創始人,自由軟體運動的領袖。
  比爾·蓋茨和理查德·斯托曼,一個疾呼保護版權,打擊盜版;另一個提倡自由複製,原始碼共享。他們是軟體世界的兩極,一個代表金錢,另一個代表自由。他們是針鋒相對的兩方。但是,他們的人生又是如此相似。他們的年齡相仿,都在大城市出生和長大,都進了哈佛大學,最早都是程式設計師。因為後來一些偶然的事件,使他們選擇了不同的信念,走上了不同的道路。
  在計算機工業的發展史上,是先有硬體,再有軟體的。最早的軟體都是由硬體廠商編寫,附在硬體上一起發售的。通常,這些軟體本身都是免費的,程式碼可以被共享。但是,從上個世紀70年代起,隨著硬體平臺的成熟,導致硬體價格不斷下跌,製造商開始期望軟體能夠帶來額外的收入。於是,開始出現種種保護軟體、對其收費的措施,越來越多的廠商開始單獨銷售軟體,也不再提供軟體的原始碼,軟體工業開始獨立出來了。
  1976年,比爾·蓋茨發表了“致計算機愛好者的公開信”。當時他21歲,兩年前剛剛從哈佛大學退學,為一種叫“MITS Altair”的小型計算機全職工作,開發可以在其上執行的一種BASIC語言版本。他寫這封公開信的目的就是為了譴責盜版,因為有人把他寫的軟體視為共享品,而在非法拷貝。他寫道:
  “大多數地計算機愛好者心裡一定清楚,你們當中地許多人都盜竊別人的軟體。硬體是一定要付錢的,而軟體卻成了要共享的東西。有誰會在於編寫軟體的人是不是得到了應有的報酬呢?”……他接著聲稱,這種盜版行為的後果只會阻礙大家去編寫好的軟體。最後,他反問道:“有誰肯去做一無所獲的技術工作?又有哪一位計算機愛好者願意投入三年的工作量用於程式設計、糾錯、撰寫產品文件,最後卻免費釋出其產品?”
  後來的事情都已經成了歷史,他提倡的軟體版權專有模式獲得了勝利。微軟公司成了巨無霸,他本人成了億萬富翁。但是,並不是每一個人都認同這種模式的。程式設計師不再能自由得到和交流程式碼,讓很多人感到非常無奈。更有人認為這是一種阻礙自由進步、禁錮思想、抑制創造的犯罪,從而立志要反抗它。理查德·斯托曼就是一個這樣的人。
  斯托曼1953年出生於紐約,比蓋茨大兩歲。1970年進入哈佛大學,1974年以優異成績畢業於物理學專業,而這一年剛好就是蓋茨從哈佛大學退學的那一年。在大學期間,斯托曼就為麻省理工學院的人工智慧(AI)實驗室工作,充當程式設計師。畢業以後,他繼續留在那裡。在人工智慧實驗室,斯托曼已經進行了很多自由軟體的開發,感到需要一個更大的團隊。但是,一次實驗室裝置的更新讓他感受到MIT的專利軟體LispOS和他的理念格格不入。並且,一家軟體公司買走了他們使用的軟體的版權,挖走了計算中心的程式設計師,最後只剩下了斯托曼和另一個人,無事可幹。
  他為專有軟體的增長和隨之而來的使用者不再能夠修改他們電腦上的程式而憂心忡忡。軟體開發者被束縛,有悖自由精神的現象隨之普遍發生。從這件事以後,斯托曼就決心發起自由軟體運動,提供開放原始碼的軟體,讓所有人自由使用,把使用軟體的自由還給程式設計師。在1983年春天,斯托曼發起了GNU專案,旨在開發一個自由的類Unix的作業系統。GNU 專案的創立,標誌了自由軟體運動的開始。GNU是“GNU’s Not Unix”的無窮遞迴縮寫,意為GNU不是UNIX(注:Gnu在英文中原意為非洲牛羚,發音與new相同)。目標是構建一整套完全由自由軟體構成的UNIX OS體系。

這裡寫圖片描述

圖2. GNU的牛頭標誌

  最初,他幾乎是一個人與整個業界對抗,他既無錢也無權,唯一有的只是理想。他知道自己的目標幾乎是一個不可完成的任務。它需要極度的投入和犧牲,這可能也正是它的魅力所在。正因如此,GNU專案一開始只是開發在UNIX上執行的自由軟體。他先寫了一些軟體,免費提供他人使用,以此打開了GNU的知名度。他後來回憶道,“我沒有把握完成這項工作,但是對我來說,知道是否能完成這項工作並不重要。關鍵在於,我已經開始行動了”。
  後來,斯托曼靠出售Emacs的磁帶賺了點小錢,於是在1985年10月,創立了自由軟體基金會(Free Software Foundation, FSF)。說是基金會,實際上根本沒多少錢。斯托曼本人睡在計算中心的辦公室裡,當時他根本沒有把握自己能獲得收入。他說,“關鍵在於,我已經下定決心要幹這件事了,那時候沒有什麼能夠阻止我”。
  同在1985年,自由軟體基金會發布了“自由軟體通用許可證”,即GPL。這個許可證開頭第一句這樣寫道:“大多數軟體的許可證,設計用來剝奪你分發和修改它們的自由。GPL許可證與此恰恰相反,它就是為了保護你分發和修改自由軟體的自由,確保這些軟體對所有使用者都是自由的。”總的來說,GPL許可證允許你做所有的事情,除了限制別人的自由。任何採用它的軟體就是自由軟體。
  後來,斯托曼與志同道合者開發出了GCC(GNU C Compiler)編譯器。這是一個偉大的編譯器,不僅自由免費,而且比其他商用專利編譯器效能都要好。如今的GCC不僅能夠支援C的編譯,還能支援C++、Java等多種程式設計語言的編譯。GNU的拳頭產品,大概在1990年左右全部發布:Emacs、GCC、GLIBC、Bash shell。GNU的所有產品為了反專利,都使用GPL(General Public License)。因為GNU的理念是“版權制度是促進社會進步的手段,版權本身不是自然權利。”而這恰恰和比爾·蓋茨那封著名的信真是相映成趣。
  比爾·蓋茨曾經說過,“有誰肯去做一無所獲的技術工作?又有哪一位計算機愛好者願意投入三年的工作量用於程式設計、糾錯、撰寫產品文件,最後卻免費釋出其產品?”現在,他應該知道他錯了,這樣的人是存在了。自由軟體運動至少證明了一點,在和金錢的較量中,熱愛自由的人們不一定會輸。
  自由軟體的概念提出以來,在世界範圍內的影響越來越大,越來越多的程式設計師加入了自由軟體運動。以Linux為代表的一個完整的作業系統已經形成,在效能上完全可以替代、並且超過了微軟的Window系統。這證明了無數志願者出於興趣和理想的無償勞動和奉獻,也完全可以做出最複雜的、質量第一流的工作。
  現在,雖然自由軟體基金會已經發展壯大了。但是,斯托曼依然過著簡樸的生活。他沒有自己的汽車,住在租來的房子裡,也沒有結婚沒有孩子,因為他覺得那樣會變成掙錢的奴隸。他說,“自由軟體運動的目的就是使得人們可以在不接受其他什麼人統治的前提下,使用計算機,如果我一直在開發經營性軟體,我就是在把自己的人生用來建造囚禁他人的監獄”。(斯托曼的徵婚廣告:

http://stallman.org/extra/personal.html
  附上一張有點意思的照片:

這裡寫圖片描述

圖3. Richard Stallman和Julian Assange共同拿著Snowden的照片

  最後,引用英國IT作家Glyn Moody的一句話:“自由軟體不僅僅是關於軟體程式碼的,它們也與自由、分享有關,與社會有關。它們與創造有關,與美有關。這些程式碼深處寄託著我們最美好的心願以及對最醜惡的東西的反抗,它將和人們的恆心共久長。”

  更多關於自由軟體運動及理查德·斯托曼的介紹,可以查閱《FREE AS IN FREEDOM》一書,此書中文名為《若為自由故》。值得一提的是,這本書使用的是GFDL許可證(GNU Free Documentation License),也就是說,這是市面上極為少有的一本“自由”圖書。在GFDL條款的保護下,讀者可以自由地複製、分發和修改本書。可以訪問http://faifchs.github.io/獲取本書(中文)的電子版本,讀者可以像給自由軟體打補丁那樣為該書打補丁,將Free as in Freedom的故事延續下去。當然你也可以閱讀英文原版http://www.oreilly.com/openbook/freedom/
  另外,推薦閱讀《The Cathedral & the Bazaar》,中文名為《大教堂與集市》。這本書被稱為開源運動的《聖經》,顛覆了傳統的軟體開發思路,影響了整個軟體開發領域。作者Eric S. Raymond是開源運動的旗手、黑客文化第一理論家,他講述了開源運動中驚心動魄的故事,提出了大量充滿智慧的觀念和經過檢驗的知識,給所有軟體開發人員帶來啟迪。

  這個故事告訴我們:當你決定堅持一件事情,全世界都會為你讓路。