BYTE 訪談 Richard Stallman

Richard Stallman 與 BYTE 編輯討論他的公有領域 Unix 相容軟體系統 (1986 年 7 月)。


Richard Stallman 已經著手進行可能是迄今為止最雄心勃勃的自由軟體開發專案,即 GNU 系統。在他的 GNU 宣言中,Stallman 在 1985 年 3 月號的 Dr. Dobb's Journal 上發表,將 GNU 描述為一個「完整的 Unix 相容軟體系統,我正在編寫它,以便我可以免費贈送給每個可以使用它的人…… 一旦 GNU 編寫完成,每個人都將能夠免費獲得良好的系統軟體,就像空氣一樣。」(GNU 是 GNU's Not Unix 的縮寫;g 的發音為。)

Stallman 廣為人知是 EMACS 的作者,EMACS 是一個功能強大的文字編輯器,他在麻省理工學院人工智慧實驗室開發了它。作為 GNU 專案一部分而產生的第一個軟體是 EMACS 的新實作,這絕非巧合。GNU EMACS 已經贏得了聲譽,成為目前任何價格下可獲得的最佳 EMACS 實作之一。

BYTE:我們在 1985 年 3 月號的 Dr. Dobb's 上讀到了您的 GNU 宣言。從那以後發生了什麼?那真的是開始嗎?從那時起您進展如何?

Stallman:在 Dr. Dobb's 上發表並不是專案的開始。我寫 GNU 宣言是在我準備開始專案時,作為向電腦製造商請求資助的提案。他們不想參與,我認為與其花時間尋求資金,不如花時間編寫程式碼。宣言在我寫完後大約一年半發表,當時我幾乎才剛開始發行 GNU EMACS。自那時以來,除了使 GNU EMACS 更加完整並使其在更多電腦上運行之外,我幾乎完成了最佳化 C 編譯器以及運行 C 程式所需的所有其他軟體。這包括一個原始碼級除錯器,它具有 Unix 上其他原始碼級除錯器所沒有的許多功能。例如,它在除錯器中具有方便變數,因此您可以儲存值,並且它還具有您已列印出的所有值的歷史記錄,這使得追蹤清單結構變得非常容易。

BYTE:您已經完成了一個現在廣泛發行的編輯器,並且您即將完成編譯器。

Stallman:我預計它將在今年十月完成。

BYTE:核心呢?

Stallman:我目前計劃從麻省理工學院編寫並於最近公開發布的核心開始,想法是我將使用它。這個核心稱為 TRIX;它基於遠端程序呼叫。我仍然需要為它目前沒有的許多 Unix 功能添加相容性。我還沒有開始著手處理它。我正在完成編譯器,然後才開始處理核心。我也將必須重寫檔案系統。我打算透過以正確的順序寫入區塊來使其成為故障安全的,以便磁碟結構始終保持一致。然後我想添加版本號。我有一個複雜的方案來調和版本號與人們通常使用 Unix 的方式。您必須能夠在沒有版本號的情況下指定檔案名,但也必須能夠使用明確的版本號指定它們,而這兩者都需要與尚未以任何方式修改以處理此功能的存在的普通 Unix 程式一起工作。我認為我有一個執行此操作的方案,只有嘗試它才能告訴我它是否真的能完成工作。

BYTE:您是否可以簡要描述一下 GNU 作為一個系統將如何優於其他系統?我們知道您的目標之一是產生與 Unix 相容的東西。但至少在檔案系統領域,您已經說過您將超越 Unix 並產生更好的東西。

Stallman:C 編譯器將產生更好的程式碼並運行得更快。除錯器更好。對於每一部分,我可能會或可能不會找到改進它的方法。但這個問題沒有一個答案。在某種程度上,我正在獲得重新實作的好處,這使得許多系統變得更好。在某種程度上,這是因為我在這個領域工作了很長時間,並且在許多其他系統上工作過。因此,我有很多想法可以提出。它會更好的一種方式是,系統中幾乎所有東西都可以在任何大小的檔案、任何大小的行上工作,並且其中出現任何字元。Unix 系統在這方面非常糟糕。作為軟體工程的原則,不應該有任意限制,這並不是什麼新鮮事。但這只是編寫 Unix 時的標準做法,一直把它們放在裡面,可能是因為他們正在為一台非常小的電腦編寫它。GNU 系統中唯一的限制是當您的程式因為嘗試處理太多資料而記憶體不足,並且沒有地方可以儲存所有資料時。

BYTE:如果您有虛擬記憶體,那就不太可能達到這個限制。您可能只是需要永遠才能提出解決方案。

Stallman:實際上,這些限制往往在您永遠無法提出解決方案之前很久就達到了。

BYTE:您能否說說 GNU EMACS 特別適用於哪些類型的機器和環境?它現在在 VAX 上運行;它是否以任何形式遷移到個人電腦?

Stallman:我不確定您所說的個人電腦是什麼意思。例如,Sun 是一台個人電腦嗎?GNU EMACS 至少需要 1MB 的可用記憶體,最好更多。它通常用於具有虛擬記憶體的機器上。除了少數 C 編譯器中的各種技術問題外,幾乎任何具有虛擬記憶體並運行相當新版本的 Unix 的機器都可以運行 GNU EMACS,並且目前大多數機器都這樣做。

BYTE:是否有人嘗試將其移植到 Atari 或 Macintosh?

Stallman:Atari 1040ST 仍然沒有足夠的記憶體。我預計下一台 Atari 機器將運行它。我也認為未來的 Atari 將具有某些形式的記憶體映射。當然,我並不是為了在當今流行的那種電腦上運行軟體而設計軟體。當我開始這個專案時,我就知道這將需要幾年時間。因此,我決定我不想透過承擔在當前受限環境中運行的額外挑戰來製作更糟糕的系統。因此,我決定我將以似乎最自然和最好的方式編寫它。我相信在幾年內,足夠大的機器將會普及。事實上,記憶體大小的增加速度如此之快,以至於讓我驚訝的是,大多數人將虛擬記憶體放入的速度有多慢;我認為這完全是必要的。

BYTE:我認為人們並不認為單用戶機器有這個必要。

Stallman:他們不明白單用戶並不意味著單一程式。當然,對於任何類似 Unix 的系統,即使只有您一個人,能夠同時運行許多不同的進程也很重要。您可以在沒有虛擬記憶體的機器上運行 GNU EMACS,如果它有足夠的記憶體,但您無法很好地運行 GNU 系統的其餘部分或 Unix 系統。

BYTE:GNU EMACS 中存在多少 LISP?我突然想到,使用它作為學習 LISP 的工具可能很有用。

Stallman:您當然可以這樣做。GNU EMACS 包含一個完整的,儘管不是很強大的 LISP 系統。它足夠強大,可以編寫編輯器命令。它無法與 Common LISP 系統相提並論,Common LISP 系統是您可以真正用於系統程式設計的東西,但它擁有 LISP 需要擁有的所有東西。

BYTE:您是否可以預測一下,您何時可能會發行一個可用的環境,如果我們將其安裝在我們的機器或工作站上,我們實際上可以在不使用您發行的程式碼之外的任何東西的情況下完成合理的工作?

Stallman:這真的很难说。这种情况可能在一年内发生,但当然也可能需要更长的时间。也可能在更短的时间内发生,但这不太可能了。我想我会在一两个月内完成编译器。我真正要做的另一项大型工作是在内核中。我最初预测 GNU 大约需要两年时间,但现在已经两年半了,我仍然没有完成。延迟的部分原因是,我花了很多时间在一个最终走入死胡同的编译器上。我不得不完全重写它。另一个原因是,我在 GNU EMACS 上花费了太多时间。我最初认为我根本不需要这样做。

BYTE:請告訴我們您的發行方案。

Stallman:我不會將軟體或手冊放入公有領域,原因是我想確保所有用戶都獲得共享的自由。我不希望任何人製作我編寫的程式的改進版本並將其作為專有軟體發行。我不希望這種情況永遠發生。我想鼓勵對這些程式進行免費改進,而做到這一點的最佳方法是消除任何人將改進變成非自由的任何誘惑。是的,少數人會避免進行改進,但許多其他人會進行相同的改進,並且他們會使它們免費。

BYTE:您如何保證這一點?

Stallman:我透過為程式加上版權並貼上通知來做到這一點,該通知明確允許人們複製程式並更改它們,但前提是他們在與我使用的相同條款下發行,如果有的話。您不必發行您對我的任何程式所做的更改——您可以只為自己做,並且您不必將其提供給任何人或告訴任何人。但是,如果您將其提供給其他人,則必須在與我使用的相同條款下進行。

BYTE:您是否獲得了對從 C 編譯器衍生的可執行程式碼的任何權利?

Stallman:版權法沒有給我編譯器輸出的版權,因此它沒有給我任何方法來說任何關於它的事情,事實上我也不會嘗試這樣做。我不同情人們使用任何編譯器開發專有產品,但試圖阻止他們使用此編譯器開發它們似乎沒有特別的用處,所以我不會這樣做。

BYTE:如果人們也採用您的程式碼片段來產生其他東西,您的限制是否適用?

Stallman:是的,如果他們結合了任何相當大的片段並進行了更改。如果是兩行程式碼,那沒什麼;版權不適用於此。基本上,我選擇了這些條件,以便首先存在版權,這是所有軟體囤積者用來阻止所有人做任何事情的東西,然後我添加一個通知,放棄了這些權利的一部分。因此,這些條件僅談論版權適用的事物。我不認為您應該遵守這些條件的原因是因為法律。您應該遵守的原因是因為一個正直的人在發行軟體時會鼓勵其他人進一步共享它。

BYTE:從某種意義上說,您是透過提供所有這些他們可以使用的有趣工具來引誘人們進入這種思維模式,但前提是他們接受您的哲學。

Stallman:是的。您也可以將其視為使用軟體囤積者針對他們建立的法律系統。我正在使用它來保護公眾免受他們的侵害。

BYTE:鑑於製造商不願意資助該專案,您認為 GNU 系統完成後誰會使用它?

Stallman:我不知道,但這不是一個重要的問題。我的目的是讓人們有可能拒絕隨專有軟體而來的枷鎖。我知道有些人想這樣做。現在,可能還有其他人不在乎,但他們不是我關心的對象。我為他們以及他們影響的人感到有點難過。現在,一個感受到專有軟體條款令人不快的人覺得他被困住了,除了不使用電腦之外別無選擇。好吧,我將為他提供一個舒適的替代方案。

其他人可能會使用 GNU 系統,僅僅因為它在技術上更優越。例如,我的 C 編譯器產生的程式碼與我從任何 C 編譯器中看到的程式碼一樣好。而 GNU EMACS 通常被認為遠優於商業競爭對手。GNU EMACS 也沒有任何人資助,但每個人都在使用它。因此,我認為許多人會因為 GNU 系統的技術優勢而使用其餘部分。但即使我不知道如何使 GNU 系統在技術上更好,我也會做一個 GNU 系統,因為我希望它在社會上更好。GNU 專案實際上是一個社會專案。它使用技術手段來改變社會。

BYTE:那麼,人們採用 GNU 對您來說相當重要。這不僅僅是一個學術練習,目的是產生這個軟體並將其贈送給人們。您希望它能改變軟體行業的運作方式。

Stallman:是的。有些人說永遠不會有人使用它,因為它沒有一些有吸引力的公司標誌,而另一些人則說他們認為它非常重要,而且每個人都會想使用它。我無法知道真正會發生什麼。我不知道有任何其他方法可以嘗試改變我發現自己身處其中的這個領域的醜陋,所以這是我必須做的。

BYTE:您能談談其含義嗎?您顯然認為這是一個重要的政治和社會聲明。

Stallman:這是一個改變。我正在嘗試改變人們普遍看待知識和資訊的方式。我認為試圖擁有知識,試圖控制是否允許人們使用它,或試圖阻止其他人共享它是破壞。這是一種以犧牲整個社會的貧困為代價來造福於從事它的人的活動。一個人透過摧毀價值兩美元的財富來獲得一美元的收益。我認為有良知的人不會做這種事情,除非他可能會因此而死。當然,做這種事情的人相當富有;我只能得出結論,他們是不擇手段的。我希望看到人們因編寫自由軟體和鼓勵其他人使用它而獲得回報。我不希望看到人們因編寫專有軟體而獲得回報,因為這並不是真正對社會的貢獻。資本主義的原則是人們透過生產東西來設法賺錢,從而自動地,可以說,鼓勵人們做有用的事情。但當涉及到擁有知識時,這就行不通了。他們被鼓勵做的事情並不是真正有用的事情,而真正有用的事情並沒有得到鼓勵。我認為重要的是要說,資訊與汽車和麵包等物質對象不同,因為人們可以自行複製和共享它,如果沒有人試圖阻止他們,他們可以更改它並使其對自己更好。這是人們可以做的有用的事情。麵包並非如此。如果您有一個麵包,而您想要另一個,您不能只是將您的麵包放入麵包影印機中。除非經過用於製作第一個麵包的所有步驟,否則您無法製作另一個麵包。因此,人們是否被允許複製它並不重要——這是*不可能的*。

直到最近,書籍才僅在印刷機上印刷。您有可能手工複製一份,但這不切實際,因為它比使用印刷機要花費更多的工作。而且它產生的東西遠沒有那麼吸引人,以至於在所有意圖和目的上,您都可以表現得好像除了批量生產書籍之外,不可能製作書籍一樣。因此,版權並沒有真正剝奪閱讀公眾的任何自由。購書者可以做的任何事情都沒有被版權禁止。

但這對於電腦程式來說並非如此。對於錄音帶卡匣來說也不是如此。對於書籍來說,現在部分是錯誤的,但仍然真實的是,對於大多數書籍來說,影印它們比購買副本更昂貴,而且肯定要花費更多的工作,而且結果仍然不那麼吸引人。現在我們正處於一個版權無害且可以接受的情況正在轉變為版權將變得具有破壞性和不可容忍的情況的時期。因此,那些被誹謗為「盜版者」的人實際上是那些試圖做一些他們被禁止做的有用的事情的人。版權法完全旨在幫助人們完全控制某些資訊的使用以利於自身。但它們並非旨在幫助那些想要確保公眾可以訪問資訊並阻止他人剝奪公眾權利的人。我認為法律應該承認一類屬於公眾所有的作品,這與公有領域不同,就像公園與垃圾桶中發現的東西不同一樣。它不是在那裡供任何人拿走的,它在那裡供所有人使用,但任何人都不應阻礙。公眾中任何發現自己被剝奪了公眾擁有的東西的衍生作品的人都應該能夠就此提起訴訟。

BYTE:但是,盜版者不是對獲取程式副本感興趣,因為他們想使用這些程式,而不是因為他們想使用這些知識來產生更好的東西嗎?

Stallman:我不認為這是重要的區別。更多人使用一個程式意味著該程式對社會的貢獻更大。您有一個麵包,可以吃一次或一百萬次。

BYTE:有些用戶購買商業軟體是為了獲得支援。您的發行方案如何提供支援?

Stallman:我懷疑這些用戶被誤導了,並且沒有清楚地思考。擁有支援當然很有用,但是當他們開始思考這與銷售軟體或軟體是專有的有什麼關係時,他們就在混淆自己。沒有任何保證專有軟體會獲得良好的支援。僅僅因為賣家說他們提供支援,並不意味著它會很好。而且他們可能會倒閉。事實上,人們認為 GNU EMACS 比商業 EMACS 具有更好的支援。原因之一可能是我可能比編寫其他 EMACS 的人更厲害,但另一個原因是每個人都有原始碼,並且有很多人有興趣弄清楚如何使用它,因此您不必從我這裡獲得支援。即使只是免費支援,包括我修復人們向我報告的錯誤並將其納入下一個版本,也為人們提供了良好的支援水平。您始終可以僱用某人為您解決問題,並且當軟體免費時,您就擁有一個有競爭力的支援市場。您可以僱用任何人。我隨 EMACS 發行一個服務清單,其中列出了人們的姓名和電話號碼以及他們提供支援的費用。

BYTE:您會收集他們的錯誤修復嗎?

Stallman:嗯,他們會將其發送給我。我要求所有想要列出的人承諾,他們永遠不會要求他們的任何客戶對他們被告知的任何內容或作為支援的一部分提供給他們的 GNU 軟體的任何更改保密。

BYTE:因此,您不能讓人們根據他們知道其他人不知道的某些問題的解決方案來競爭提供支援。

Stallman:不。他們可以根據他們的聰明才智和更可能找到您問題的解決方案,或者他們已經更了解常見問題,或者更了解如何向您解釋您應該做什麼來競爭。這些都是他們可以競爭的方式。他們可以嘗試做得更好,但他們不能主動阻礙他們的競爭對手。

BYTE:我想這就像買車一樣。您沒有被迫回到原始製造商那裡尋求支援或持續維護。

Stallman:或者買房子——如果唯一可以解決您房子問題的人是最初建造它的承包商,那會是什麼樣的?這就是專有軟體中涉及的那種強加。人們告訴我 Unix 中發生的問題。由於製造商銷售改進版本的 Unix,他們傾向於收集修復程式,但不以二進制檔案形式發布它們。結果是錯誤並沒有真正得到修復。

BYTE:他們都在重複努力,試圖獨立解決錯誤。

Stallman:是的。這是另一個有助於從社會角度看待專有資訊問題的觀點。想想責任保險危機。為了從社會獲得任何賠償,受傷的人必須聘請律師並與該律師分享這筆錢。這是一種愚蠢且效率低下的方式來幫助事故受害者。並考慮人們為了從競爭對手中搶走業務而付出的所有時間。想想用大型紙板包裝的鋼筆,這些包裝的成本高於鋼筆——只是為了確保鋼筆不會被盜。如果我們只是在每個街角都放上免費鋼筆,那不是更好嗎?並想想所有阻礙交通流量的收費站。這是一種巨大的社會現象。人們找到透過阻礙社會來賺錢的方法。一旦他們能夠阻礙社會,他們就可以獲得報酬來讓人們離開。擁有資訊固有的浪費將變得越來越重要,並最終將決定沒有人真正需要為生計而工作的烏托邦(因為這一切都是由機器人完成的)與一個像我們這樣的世界之間的區別,在這個世界中,每個人都花費大量時間複製下一個人正在做的事情。

BYTE:就像在軟體上輸入版權聲明一樣。

Stallman:更像是監管每個人,以確保他們沒有任何被禁止的副本,並且重複人們已經完成的所有工作,因為它是專有的。

BYTE:一個憤世嫉俗的人可能會想知道您如何謀生。

Stallman:來自諮詢。當我做諮詢時,我總是保留贈送我為諮詢工作編寫的內容的權利。此外,我可以透過郵寄我編寫的免費軟體和一些其他人編寫的軟體的副本來謀生。很多人寄來 150 美元購買 GNU EMACS,但現在這筆錢歸於我創立的自由軟體基金會。基金會不給我發薪水,因為這會存在利益衝突。相反,它僱用其他人來開發 GNU。只要我能繼續透過諮詢謀生,我認為這是最好的方式。

BYTE:目前的官方 GNU 發行磁帶中包含哪些內容?

Stallman:目前,磁帶包含 GNU EMACS(一個版本適用於所有電腦);Bison,一個取代 YACC 的程式;MIT Scheme,這是 Sussman 教授的超簡化 LISP 方言;以及 Hack,一個類似於 Rogue 的地下城探索遊戲。

BYTE:印刷手冊是否也隨磁帶一起提供?

Stallman:不。印刷手冊每本 15 美元,或者自己影印。也影印並共享這次訪談。

BYTE:如何獲得副本?

Stallman:寫信給自由軟體基金會,地址:675 Massachusetts Ave., Cambridge, MA 02139。

[FSF 自 2024 年 9 月 1 日起遠端運營。
目前的郵寄地址
自由軟體基金會,31 Milk St # 960789, Boston, MA 02196, USA
語音:+1-617-542-5942
傳真:+1-617-542-2652]

BYTE:當您完成 GNU 系統後,您打算做什麼?

Stallman:我不確定。有時我認為我接下來會做的是在軟體的其他領域做同樣的事情。

BYTE:所以這只是對軟體行業的一系列攻擊中的第一個?

Stallman:我希望如此。但也許我會做的是過著悠閒的生活,只在少數時間工作以維持生計。我不必過著奢侈的生活。剩下的時間我可以找到有趣的人一起閒逛,或者學習做我不懂的事情。