最初的軟件共享群體
1971年,當我開始在麻省理工學院人工智能(AI)實驗室工作時,我成了那裡
的軟件共享群體的一分子,這個軟件共享群體已經存在多年。其實,軟件的共享並
不限於我們這一特定的群體,它的歷史與計算機一樣長久,這兩者之間的關系就像
人類很早就交換食譜與烹饪一樣。但我們做得比大多數人都做得更多。
AI實驗室當時使用了一種稱為99vS(Incompatible Timesharing System,非兼
容分時系統)的分時操作系統,這是我們實驗室工作人員專為Digital PDP-10(那
個時代的大型計算機)設計的操作系統,而且是用匯編語言開發的。作為這個群體
的成員,我是一個AI實驗室的系統黑客,我的工作就是完善這一系統。
當時我們並不把我們的軟件稱為“自由軟件”(free software),因為這個詞
語當時還不存在,但事實上那就是自由軟件。每當其他大學或者公司的人要求移植
或者使用我們的某個程序時,我們總是應允的。如果你看到某人在使用一個陌生而
且有趣的程序時,你總可以要求查看它的源代碼,以便可以讀代碼、對源代碼進行
修改、或者套用原代碼的一部分來創作新程序。
群體的崩潰
八十年代年代初,Digital公司停止了對PDP-11系列的開發,那時情況發生了巨
變。以六十年代的標准來看,PDP-11系列的體系結構是精巧和強大的,但無法自然
地適應八十年代的技術所允許的更大尋址空間。這意味著,幾乎我們所有的程序,
包括99vS,都一下子報廢了。
在這前不久,AI實驗室的黑客群體已經分崩離析。1981年,從實驗室分離出去
了一個公司,名為“Symbolics”,幾乎雇走了所有的黑客,剩下的群體盛況難再。
Steve Levy編寫過《黑客》一書,這本著作十分傳神地描述了這個群體鼎盛時期的
情況。當AI實驗室於1982年購置了一台新的PDP-11機器時,系統管理員決定使用
Digital的非自由分時系統,而不是99vS。
那個時代的流行計算機系統,如VAX和68020,都有自己的操作系統,但這些系
統都不是自由軟件:即使為了獲得機器碼可執行程序的拷貝,也應該簽署不公開協
議(nondisclosure agreement)。
這就意味著,你開始使用計算機的第一步就是要保證不幫助你身邊的人。相互
協作的群體是被禁止的。專有軟件(proprietary software)所有者制訂的規則是:
“與他人共享軟件就是盜版行為;如果你需要對程序作任何修改,磕頭央求我們吧。”
專有軟件社會系統(即聲明用戶不能分享或修改軟件的系統)的觀念是反社會
的、不道德的、完全錯誤的。這一觀點可能會讓一些讀者驚詫不已。但是,對於一
個基於分裂公眾、使用戶孤立無援的價值系統,我們還能說些什麼呢?對這一觀點
感到難以接受的讀者,可能早已對專有軟件熟視無睹,或者從專有軟件工業的角度
出發才作出了這樣的判斷。這也難怪,因為軟件出版商已經長期為此努力工作,以
使人確信對於這一事情只能有一個觀察角度。
當軟件出版商談到“確保”他們的“權益”,或“禁止盜版行為”時,他們實
際上所說的東西是次要的。他們在版權聲明中真正傳遞的信息卻是他們認為不言自
明的假設,公眾似乎應該不加批判地接受之。現在讓我們來逐條地檢查這些假設。
假設之一,是軟件公司具備無可置疑的自然權力占有軟件,從而有權凌駕於所
有用戶之上。如果這確實是一種自然權力的話,那麼無論它對公眾有多大的傷害,
我們都無法反對。有趣的是,美國的憲法和司法傳統拒絕這種看法;版權並非一種
自然權力,而是一種人為的、由政府強行實施的一種壟斷,以限制用戶拷貝的自然
權力。
另一種沒有挑明的假設是,軟件的唯一重要意義在於軟件可以允許用戶做什麼
——而我們計算機用戶不應該關心我們必須接受什麼樣的社會。
第三種假設是,如果不允許某個公司凌駕於其軟件產品的用戶之上,我們就不
會有任何可用的軟件,或者永遠不會有所需要的軟件去完成這樣或那樣的特別任務。
這個假設一度顯得頗有道理,但是後來的自由軟件運動表明,我們可以創造出足夠
多的有用軟件,而無須加以一連串的限制。
如果我們拒絕接受上述假設,並將用戶置於優先的地位,從普通的、常識性的
道德價值出發審視這些問題,我們就會得到截然不同的結論。計算機用戶應該可以
自由地修改程序以適應他們自己的需求,可以自由地共享軟件,因為幫助他人是社
會存在的基礎。
這裡沒有足夠的篇幅容納得出這一結論的詳細邏輯推理,因此我推薦你閱讀我
們的Web主頁,http://www.gnu.org/philosophy/why-free.Html。
艱難的道德選擇
雖然我原來的群體已經消失,但繼往開來並非不可能,只是我面臨一個道德選
擇。
一條簡單的出路是加入專有軟件世界,簽署不公開協議,並許諾不再幫助我同
事中的黑客。這樣做的結果很可能是我也開發軟件,而且軟件也以不公開協議的形
式發布,從而對其他不願意背叛同伴的人進一步施加壓力。
我有可能由此而發財,而且也從編寫代碼中獲得樂趣。但我明白,在我的職業
生涯結束時,我回過頭來看到的景象將是這些年來築起高牆林立,並將人們分隔開
來,我會覺得自己的一生努力的結果會把這個世界搞得更糟。
在此之前,我已有過接受不公開協議的經驗。當時,別人拒絕向M99v人工智能
實驗室和我提供我們打印機的控制程序的源代碼。該程序缺乏某些功能,打印機的
使用起來極端麻煩。因此,我不能對自己說不公開協議是清白的。他拒絕與我們共
享代碼,當時我非常憤怒。我不可能轉頭對其他每一個人都如法炮制同一作法。
另一種選擇,直截了當但令人不快,是離開計算機領域。如果那樣,我的技能
就不會被濫用,但我的才能仍然會被浪費掉。我個人不會成為分隔、限制計算機用
戶的幫凶,但社會上的分隔和限制依舊在發生。
因此,我要尋求一種解決之道,使我作為一個程序員能夠做些好事。我扪心自
問,我是否能寫出一個或一些程序,能使我所珍視的群體再生呢?
答案很清楚:最急需的首先是一個操作系統。這是開始使用計算機最至關重要
的軟件——有了操作系統,可以做許多事情;沒有操作系統,你連計算機都使用不
了。一個自由的操作系統,會使我們可以再度擁有一個相互合作的黑客群體,而且
進一步邀請其他任何人參與進來。每個人都可以安心使用計算機,而無須變成剝奪
自己朋友權益的同謀。
作為操作系統開發人員,我擁有的技能正適合這項工作。因此,盡管我不認為
成功唾手可得,但是我覺得這是我的天賦。我決定將系統設計得與UNIX兼容以便移
植,同時也便於UNIX用戶的移民到這一新的操作系統上來。我按照一項黒客的傳統
選擇了GNU這個名字,GNU是“Gnu's not UNIX”(GNU不是UNIX)的遞歸同義
詞。
操作系統並不僅僅意味著一個恰好只能運行其他程序的內核。在70年代,任何
排得上號的操作系統都包括有命令解釋器、匯編器、編譯器、解釋器、調試器、文
本編輯器和電子郵件軟件包等等。99vS包括這些東西,Multics有,VMS有,UNIX有,
GNU操作系統也應該含有這些東西。很久之後我看到了以下的詩句,據傳來自Hillel*:
如果我不為自己打算,誰會為我考慮?
如果我只為自己打算,我又變成了什麼東西?
如果現在不動手,還要等到什麼時候?
啟動GNU工程的決定,正是基於同樣的精神。
* 腳注:作為無神論者,我不盲從任何宗教領袖,但有時我不得不贊賞他們中某些
人的箴言。
Freedom中的自由
“free software”這種術語有時會被誤解——事實上它和價格毫無關系。它
的涵義是自由。這是自由軟件的定義所決定的。對於你,某個特定的用戶來說,如
果某個程序稱為自由軟件,那麼:
你擁有運行該程序的自由,而且可以用於任何目的。
你擁有修改該程序以適應你個人需要的自由。(為了在實踐中使這一自由成為
可能,你必須能夠獲得源代碼,因為沒有源代碼而試圖修改程序是極端困難的。)
你擁有再發行拷貝的自由,可以是無償的,也可以收費。
你擁有發行該程序修改後版本的自由,從而使社團可以從你所作的改進中獲益。
因為這裡“free”的涵義是自由而非價格,自由軟件和銷售拷貝之間並沒有矛
盾。事實上,銷售拷貝的自由是至關重要的:把自由軟件收集到CD-ROM上出售對整
個社團都很重要,而銷售它們又是為開發自由軟件籌集資金的重要手段。因此,如
果人們無法將某個程序自由地收集到這些集合中時,這個軟件就不是自由軟件。
由於“free”一詞具有歧義,人們長久以來都在尋找另外的詞來替代它,但直
到現在還沒有找到其合適的替代詞。英語的單詞與單詞之間的細微差別比世界上其
他的語言更多,然而它卻缺少一個簡單明了、沒有歧義的單詞表示自由(freedom)
中的“free”。“unfettered”(除去鐐铐的)也許是詞意與之最接近的詞了。其
他諸如“liberated”(被解放
你擁有再發行拷貝的自由,可以是無償的,也可以收費。
你擁有發行該程序修改後版本的自由,從而使社團可以從你所作的改進中獲益。
因為這裡“free”的涵義是自由而非價格,自由軟件和銷售拷貝之間並沒有矛
盾。事實上,銷售拷貝的自由是至關重要的:把自由軟件收集到CD-ROM上出售對整
個社團都很重要,而銷售它們又是為開發自由軟件籌集資金的重要手段。因此,如
果人們無法將某個程序自由地收集到這些集合中時,這個軟件就不是自由軟件。
由於“free”一詞具有歧義,人們長久以來都在尋找另外的詞來替代它,但直
到現在還沒有找到其合適的替代詞。英語的單詞與單詞之間的細微差別比世界上其
他的語言更多,然而它卻缺少一個簡單明了、沒有歧義的單詞表示自由(freedom)
中的“free”。“unfettered”(除去鐐铐的)也許是詞意與之最接近的詞了。其
他諸如“liberated”(被解放