吉優納軟體之未來
作者:理查·史托曼於 2003 年 4 月 21 日在日本經濟產業省產業經濟研究所 (RIETI) 的主題演講稿。
理查·史托曼先生,GNU 計畫:我今天要談談自由軟體,首先是其倫理、社會和政治意義,其次是關於其經濟後果。
自由軟體攸關自由。英文單字 “free” 並未清楚表達這一點,因為它有兩種含義。幸運的是,在您的語言中,您有兩個不同的詞語。因此,如果您說 jiyu na sofuto,就很清楚您不是在談論價格,而是在談論自由。因此,我敦促您,在日語中談論自由軟體時,請務必使用您明確的詞語,而不是我們不明確的詞語。
擁有自由軟體的原因非常簡單:為了生活在自由中,特別是為了能夠正當地對待他人。非自由軟體表示您是無助且分裂的。它表示您甚至無法知道程式在做什麼;您應該相信開發人員的話;而且他們通常不會告訴您它真正做什麼。如果您不喜歡它,您就無法更改它。即使開發人員盡了最大的努力使程式有用,也沒有人是完美的。我可以編寫一個程式,您可能會發現它對您的需求來說只算還可以。也許我編寫它是為了稍微不同的目的,而不是與您的目的相同。沒有人可以預料到一切。也許我以我認為最好的方式做了,但您有更好的想法。沒有人可以永遠把每件事都做對。
使用非自由軟體,您會被困住。您必須接受它的現狀。您必須忍受它。而最重要的是,使用非自由軟體,您被禁止與他人分享。社會依賴人們互相幫助。與願意在您請求幫助時幫助您的鄰居一起生活是有益的。當然,並非總是如此,沒有人被迫幫助另一個人,但是如果您與人們是朋友,他們通常會幫助您。因此,當然,如果我們希望別人幫助我們,我們最好幫助別人。
那麼,當有人說您被禁止幫助其他人時,情況會是什麼樣呢?這裡有有用的知識,您可以通過分享來幫助您的鄰居,但您被禁止與他人分享。這是在攻擊社會的紐帶,將社會瓦解為無法互相幫助的孤立個體。
自由軟體與此形成鮮明對比。自由軟體意味著您擁有四項基本自由。自由零是為了任何目的、以任何您想要的方式運行程式的自由。自由一是通過研究原始碼來幫助自己的自由,以了解程式的作用,然後更改它以滿足您的需求。自由二是通過將副本分發給他人來幫助您的鄰居的自由。自由三是通過發布改進版本來幫助建立您的社群的自由,以便其他人可以使用您的版本,以便其他人可以獲得您的幫助的好處。有了這些自由,使用者就可以控制他們使用的軟體。如果缺乏這些自由,那麼[軟體]所有者將控制軟體並控制使用者。
我們都知道電腦實際上並不是自己做決定的。它們做的是人們告訴它們做的事情。但是是哪些人告訴它們該怎麼做呢?當您使用電腦時,您可以告訴它該怎麼做,還是有人在告訴它該怎麼做?誰控制您的電腦?這就是自由軟體的問題。自由軟體的定義中的自由,自由零、一、二和三,這些是重要的自由的原因是因為這些是公民控制自己的電腦所必需的自由。您需要自由零才能夠用您的電腦做任何您想做的工作。您需要自由一,以便您可以使軟體做您想讓它做的事情。如果您沒有自由一,您就會被困住;您是您軟體的囚犯。
但是並非所有人都是程式設計師。如果我們只有自由一,那麼程式設計師可以更改軟體以做他們想做的事情。但是,如果每個程式設計師都必須親自進行更改,那麼我們實際上將不會有太多控制權。我們將僅限於我們每個人單獨可以做的事情。非程式設計師將完全沒有任何好處。這就是為什麼自由三和自由二至關重要的原因,因為自由二和自由三允許一群使用者一起工作,並使軟體做他們共同想要的事情。因此,您不僅限於單獨、親自地更改它。您和另外 50 個想要相同事物的人,您可以聚在一起。如果您們中的兩三個人是程式設計師,他們可以進行更改,然後他們可以將其分發給您們所有人。您們可以共同出資並付錢給程式設計師來進行您們想要的更改。您的公司可以付錢給程式設計師來進行您的公司想要的更改。然後,如果您發布改進的版本,所有人都可以使用它。因此,整個社會都可以控制其軟體的作用。
自由軟體是一種方法,一種民主方法,用於決定軟體的開發。但它是以一種不尋常的方式民主的,因為我們不會舉行選舉,然後告訴所有人該怎麼做。在自由軟體社群中,沒有人告訴人們該怎麼做;每個人都做出自己的決定。但發生的事情是這樣的:如果很多人希望軟體朝那個方向改進,那麼很多人會努力更改它,因此軟體將朝那個方向快速發展。如果少數人希望軟體朝那個方向發展,他們中的少數人會做出努力,因此它將朝那個方向緩慢發展。如果沒有人希望它朝那個方向發展,它就不會發展。通過我們每個人決定我們要做什麼,我們都為發生的事情以及決定軟體將朝哪個方向發展做出貢獻。
因此,社會集體控制著軟體總體上將如何發展。但是您,個人或任何團體或公司都可以決定如何自行開發它。結果是,自由軟體傾向於做使用者想要的事情,而不是開發人員想要的事情。
人們經常問,“如果每個人都可以自由地更改軟體,那對相容性有什麼影響?” 事實是,使用者喜歡相容性。但這不是他們唯一喜歡的東西。有時,某些使用者想要不相容的更改,因為它有其他好處,如果是這樣,他們可以做到。但是大多數使用者都想要相容性。結果是大多數自由軟體開發人員都非常努力地保持相容性。猜猜如果我在我的程式中做出不相容的差異,而使用者不喜歡它會發生什麼。一些使用者會更改程式並使其相容,然後大多數使用者會更喜歡他的版本。因此,他的版本將變得流行,而我的版本將被遺忘。現在,我當然不希望那樣發生。我希望人們喜歡並使用我的版本,因此我將提前認識到這一點,並且我將從一開始就使我的版本相容,因為我希望人們喜歡它。因此,在我們的社群中,開發人員無法抵抗使用者的意願。我們必須順應潮流,否則使用者會去他們想去的地方,並把我們拋在後面。
但是,如果您看看非自由軟體開發人員,那些非常強大的開發人員,他們可以強加不相容性,而且他們非常強大,以至於使用者無能為力。微軟就以這個而聞名。他們在協定中做出不相容的更改,然後使用者就被困住了。但不僅僅是微軟。以 WAP 為例。例如,WAP 包含普通網際網路協定的修改版本,修改為不相容,其想法是他們會製造這些電話,然後他們會說“它們可以在網際網路上交談”,但是由於它們沒有使用普通的網際網路協定,因此不相容性將強加給使用者。那是他們的計劃。幸運的是,它沒有奏效。但是,當使用者沒有真正掌控權時,您會面臨這種危險:有人會試圖將不相容性強加給使用者。
自由軟體主要是一個政治、倫理和社會問題。我已經解釋了它的這個層面。它也具有經濟後果。例如,非自由軟體可用於創建非常富有的公司,少數人從世界各地的每個人那裡收取金錢,而少數人變得非常富有,而其他人則被剝奪。有許多國家(我猜日本不是其中之一),可以負擔得起電腦的人通常無法負擔得起非自由軟體的費用,即使用非自由軟體的許可。因此,在這些國家,非自由軟體作為一種系統會造成巨大的剝奪。但是在任何國家,金錢都從大多數人手中被榨取出來,並集中到少數通過非自由軟體變得非常富有的人手中。使用自由軟體,您無法做到這一點。您無法從人們手中榨取大量金錢,但是只要您向他們提供真正的服務,您就可以與人們做生意。
自由軟體業務已經存在。事實上,我在 1985 年開始了一項自由軟體業務。我當時在銷售 GNU Emacs 的副本。我正在尋找一種通過自由軟體賺錢的方法。所以我說,“付給我 150 美元,我會給您郵寄一盤帶有 GNU Emacs 文字編輯器的磁帶。” 人們開始付錢給我,我給他們郵寄磁帶。我賺了足夠的錢來維持生計。我停止了這樣做,因為我創立了自由軟體基金會,而且自由軟體基金會開始發行 GNU Emacs 似乎很合適。我不想與自由軟體基金會競爭,所以我不得不找到另一種方法。多年來,基金會通過這種方式賺了足夠的錢來支付幾名員工的工資,包括程式設計師。因此,實際上,如果我自己做,我可能會通過銷售自由軟體的副本而變得相當富裕。
在那之後,我開始了另一項自由軟體業務,我會在接受委託後進行更改。
使用非自由軟體,您無法更改它。您是軟體的囚犯。因此,您要么完全按原樣使用它,要么根本不使用它。使用自由軟體,您有這兩個選擇,但您還有另一個選擇,實際上是許多不同的選擇。您可以對程式進行或大或小的更改,並使用修改後的程式。
現在,如果您個人是程式設計師,您可以自己進行更改。但是假設您不是程式設計師。然後,您可以付錢給程式設計師為您進行更改。例如,如果這個部會正在使用一個程式,並且人們得出結論,這個程式沒有按照我們真正想要的方式工作,您可以很容易地花一些錢來付錢給程式設計師來更改它,使其做您想要的事情。這是我在 1980 年代做了幾年的一種自由軟體業務。(我可以繼續做下去,但是我獲得了一個大獎,所以我不必再做了。)
如今,有很多人通過這種方式謀生。我最近從南美洲的某人那裡聽到,他說他認識那裡有 30 個人通過這種方式謀生。南美洲並不是世界上技術最先進的地區之一,但這種情況已經在那裡開始了。我相信,在 1989 年或 1990 年,一家公司開始從事這種類型的業務,而這家公司是由三個人創立的。幾年之內,它已發展到 50 人,並且每年都盈利。他們本可以繼續做下去,但是他們變得貪婪,因此他們開始開發非自由軟體,後來他們被紅帽公司收購了。
無論如何,自由軟體業務是一種新的商業模式,在專有軟體世界中不存在。因此,人們經常想知道自由軟體將如何影響就業。假設每個電腦使用者都擁有自由。因此,假設所有軟體都是自由軟體。換句話說,如果您擁有該程式,您就有自由運行它、研究它、更改它和重新分發它。這將對資訊科技領域的就業產生什麼影響?
好吧,在該領域的所有就業中,一小部分是程式設計;而大多數程式設計都是客製化軟體,即為一個客戶編寫的軟體。這完全沒問題;只要客戶獲得原始碼並獲得在支付費用後控制軟體的全部權利,那麼這就是合法的。事實上,對於擁有它的客戶來說,它是自由軟體。[因此,只有非客戶特定的程式設計才是真正非自由的。]
因此,在這部分程式設計中,大部分是客製化軟體;要發布的軟體僅佔 [資訊科技產業就業] 總量中小小的一部分。
那麼,自由軟體會做什麼呢?它可能會消除就業中的這一小部分,但也可能不會。因為雖然通過限制使用者來支付這些程式設計師費用的可能性會消失,但會出現一種新的可能性,即支持那些將被付費以改進和擴展自由軟體的程式設計師。那麼我們會失去更多工作還是獲得更多工作?沒有人知道。不可能說清楚。我們確實知道的是,資訊科技領域就業人數的減少僅限於這一小小部分中的小小一部分,即為發布而進行的程式設計。其餘部分將像現在一樣繼續下去。因此,很明顯,就業沒有問題。
關於人們有時提出的另一個問題:我們是否有可能開發足夠的軟體並使其免費?答案是顯而易見的,因為我們已經在這樣做了。提出這個問題的人就像在問飛機真的能飛起來嗎?好吧,我曾經搭乘過飛機。可能你們所有人都搭乘過飛機。我認為它們可以飛起來。在今天的自由軟體中,我們有數百人,甚至數千人,獲得報酬來開發自由軟體。但是我們有超過 50 萬名志願者自由軟體開發人員兼職工作,並且沒有獲得報酬,但開發了大量軟體。
因此,事實上,自由軟體業務對於自由軟體完成其工作並不是必要的。自由軟體業務非常可取。我們開發的將資金從使用者引導到自由軟體開發人員的機構越多,我們就可以生產越多的自由軟體,我們就可以更好地生產它。因此,這當然是可取的,但並非至關重要。我們已經開發了兩個完整的作業系統、兩個圖形使用者介面桌面和兩個辦公室套件,它們都是自由軟體。
人們正在創造性地尋找資助自由軟體的方法,並且正如您可能預期的那樣,有些[方法]有效,有些無效。例如,去年夏天,有一款產品名為 Blender,人們很喜歡它,但它是非自由軟體,並且該公司決定不再支持或銷售它了。他們停止了它。但是開發人員不希望它被停止,因此他們協商了一項協議:如果他們可以籌集 10 萬美元,他們就可以購買這些權利並使其成為自由軟體。因此,他們向社群求助,並在幾週內籌集到了這筆錢。Blender 現在是自由軟體。這表明,也許我們可以通過同樣的方式從社群籌集資金來進行特定的擴展。
一位以能力著稱的程式設計師可以去社群說,“如果人們投入這麼多錢,我就會完成這項工作。” 他不必完全自己完成這項工作。他可以僱用其他程式設計師與他一起工作,這就是您入門的方式。在您成名之前,在您可以憑藉自己的聲譽去社群之前,您可以作為其他程式設計師的學徒工作。他們籌集資金,他們監督工作,但是通過這樣做,最終您也會建立聲譽,然後您就可以去獲得客戶。
當然,政府資助開發有用的軟體也具有合法的作用,就像政府資助旨在為公民服務的科學研究一樣,甚至僅僅是為了人類的好奇心,但肯定是要為公民、為公眾服務。政府資助開發將對公眾有用的軟體,然後在完成後,將其交給公眾並說,“現在每個人都可以使用和改進它。這是人類知識。”也是同樣合法的。因為這才是自由軟體的真正意義所在。它是人類知識,屬於全人類、所有眾生的知識。非自由軟體是受限的知識,知識被少數人控制,其他人無法真正訪問它。他們只能勉強容忍地使用它。他們永遠無法獲得知識。
因此,學校必須使用自由軟體至關重要。學校應該完全使用自由軟體有三個原因。最膚淺的原因是為了省錢。即使在已開發國家,學校也永遠沒有足夠的錢,因此電腦在學校的使用受到阻礙。現在,如果學校使用自由軟體,那麼學校系統就有自由製作副本並將其重新分發給所有學校,而且他們不必為使用軟體的許可證付費。因此,學校系統可以安裝更多電腦,提供更多設施。此外,GNU 加 Linux 作業系統比 Windows 更有效率,因此您可以使用更舊、功能更弱、更便宜的電腦型號。也許您可以使用別人正在丟棄的二手電腦。這是另一種省錢的方法。這很明顯,但這很膚淺。
學校使用自由軟體更重要的原因是為了學習。您看,在青少年時期,有些學生會想要了解有關電腦系統內部的所有知識。這些人可能會成為優秀的程式設計師。如果您想培養強大的程式設計能力,培養不僅準備以相當機械的方式作為大型團隊的一部分工作的人,而且培養那些將採取主動、做大事、開發強大、令人興奮的程式的人,那麼您需要鼓勵這樣做的衝動,只要孩子有這種衝動。因此,提供鼓勵這種學習發展的設施和社會環境非常重要。做到這一點的方法是學校應該運行自由軟體,並且每當孩子開始想知道“這實際上是如何運作的?”時,老師可以說,“這是由 Fubar 程式完成的。您可以在那裡找到 Fubar 程式的原始碼。去閱讀它並弄清楚,親自看看它是如何運作的。” 然後,如果一個孩子說,“你知道嗎,我有一個想法可以讓它變得更好,”老師可能會說,“為什麼不試試看?試著寫出來。更改 Fubar 程式以更改此功能。”
要學會成為一名優秀的作家,您必須閱讀大量書籍並寫作大量文章。如果您要編寫軟體,情況也是如此:您必須閱讀大量軟體並編寫大量軟體。要學會理解大型程式,您必須使用大型程式。但是您如何開始呢?當您剛開始時,您無法自己編寫大型程式,而且也無法做好,因為您還沒有學會如何做。那麼您將如何學習呢?答案是您必須閱讀現有的大型程式,然後嘗試對它們進行小的更改。因為在那個階段,您自己無法編寫大型程式,但是您可以對大型程式進行小的改進。
這就是我學會成為一名優秀程式設計師的方式。我在麻省理工學院有一個特殊的機會。那裡有一個實驗室,他們編寫了自己的作業系統,然後他們使用了它。我去了那裡,他們說,“我們想僱用您。” 他們僱用我來改進這個作業系統中的程式。那是我大學二年級的時候。當時,我無法自己編寫作業系統。我無法從零開始編寫那些程式,但是我能夠閱讀它們並添加一個功能,然後添加另一個功能,再添加另一個功能。每個星期我都會向某個程式添加另一個功能。通過這樣做很多很多次,我提高了我的技能。在 1970 年代,您獲得這種機會的唯一方法是身處一個非常特殊的地方。但是今天,我們可以將這種機會提供給每個人。您只需要一台運行帶有原始碼的 GNU/Linux 系統的 PC,您就有這個機會。因此,您可以輕鬆地鼓勵日本青少年,那些對電腦著迷的青少年,成為優秀的程式設計師。
我有一位朋友在 1980 年左右是一位高中老師,他在一所高中建立了第一台 Unix 機器。然後他指導高中生,使他們學會成為優秀的程式設計師。他們中的幾個人在高中畢業時就已經是聲譽卓著的非常優秀的程式設計師。我確信任何高中都有一些人具有這種天賦,並且想要發展它。他們只需要機會。這就是學校應該完全使用自由軟體的第二個原因。
第三個原因甚至更根本。我們希望學校教授事實和技能,當然,還有良好的品德,這意味著準備好幫助他人。這意味著學校應該對孩子們說,“這裡的任何軟體,您都可以複製它。複製它並帶回家。這就是它在這裡的目的。如果您將任何軟體帶到學校,您必須與其他孩子分享它。如果您不願意與其他孩子分享它,請不要將它帶到這裡,它不屬於這裡,因為我們正在教導孩子們互相幫助。” 品德教育對每個社會都很重要。
我沒有發明自由軟體的想法。自由軟體從一開始就出現了,只要有兩台相同類型的電腦,因為那時使用一台電腦的人會編寫一些軟體,而使用另一台電腦的人會說,“您知道任何解決這個問題的方法嗎?” 他們會說,“是的。我們編寫了一些東西來解決這個問題。這是一個副本。” 因此,他們開始交換他們開發的軟體,以便他們都可以開發更多軟體。但是在 1960 年代,出現了一種用非自由軟體取代它的趨勢,一種奴役使用者、剝奪使用者自由的趨勢。
當我上大學一年級時,我看到了一個給我留下深刻印象的道德榜樣。我當時正在使用一個電腦設施,在這個設施中,他們說,“這是一個教育機構,我們在這裡是為了讓人們學習電腦科學。因此,我們將制定一項規則:任何時候在系統上安裝軟體,原始碼都必須公開展示,以便人們可以閱讀它並了解該軟體是如何運作的。” 其中一位員工編寫了一個實用程式,他開始將其作為非自由軟體出售。他不僅像我那樣出售副本;他還限制了使用者。但是他免費向學校提供了一個副本,而負責電腦設施的人說,“不,我們不會在這裡安裝它,因為我們的規則是原始碼必須公開展示。如果您不讓我們將此程式的原始碼公開展示,我們就不會運行您的程式。” 這啟發了我,因為這是一種為了更重要的事情(即學校的使命:教育)而放棄實際便利的意願。
儘管如此,我在麻省理工學院工作的實驗室在 1970 年代是一個例外,因為我們有一個自由軟體作業系統。當時大多數電腦都在使用非自由作業系統。但我受到了我在那裡看到的榜樣的啟發,我學會了以這種方式生活。我學會了一種生活方式,您會將您的知識教給別人,而不是將其全部留給自己。然後這個社群在 1980 年代初期消亡了。在那時,我開始了自由軟體運動。我沒有開始自由軟體。我通過加入一個已經實踐自由軟體生活方式的實驗室來學習自由軟體的生活方式。我所做的是將其轉變為一場倫理和社會運動,以表明這是在一個良好的社會和一個醜陋的社會之間、在一種乾淨、善良、樂於助人且我們擁有自由的生活方式與一種每個人都受到各種征服他們的帝國奴役的生活方式之間做出選擇的問題,在這種生活方式中,人們認為他們別無選擇,只能放棄他們的自由。
從理論上講,一方面人們說,“哦,沒有人強迫您使用該非自由軟體。沒有人強迫您使用微軟 Word。” 另一方面,您又聽到人們說,“我別無選擇。” 因此,實際上,這不是個人選擇的情況。是的,確實,如果您決心獲得自由,決心拒絕它,您可以做到,但這需要很大的決心。當我們 20 年前開始時,在沒有非自由軟體的情況下使用電腦需要付出巨大的努力。1983 年所有現代電腦的作業系統都是專有的。您無法獲得一台電腦並使用它,除非使用非自由軟體。為了改變這一點,我們不得不花費數年的時間工作,而且我們做到了,我們改變了它。
對於今天的您來說,情況要容易得多。有自由作業系統。您可以獲得一台現代電腦並將其與自由軟體一起使用,完全使用自由軟體。因此,如今,您不必做出巨大的犧牲,而只需做出暫時的、小的犧牲,然後您就可以生活在自由中。通過共同努力,我們可以消除這種犧牲。我們可以讓生活在自由中變得更容易。但為此我們必須努力。我們必須將自由視為一種社會價值。
每個政府都試圖以低成本完成其工作,並且每個政府機構都有特定的工作要完成。因此,當政府機構選擇他們的電腦時,他們傾向於關注狹隘的、實際的問題:需要多少錢,我們什麼時候可以讓它運行,等等。
但是政府有一個更大的使命,那就是引導國家走向健康的發展方向,一個對公民有利的方向。因此,當政府機構選擇他們的電腦系統時,他們應該做出這樣的選擇,以便引導國家走向自由軟體。這對國家的經濟更有利,因為使用者不必僅僅為運行軟體的許可證付費,而是會付錢給當地的人員來改進它並使其適應他們的需求。因此,金錢不會全部流向華盛頓州雷德蒙德,而是會在該地區流通,在當地創造就業機會,而不是填滿某人的口袋。但更重要的是,它創造了一種生活方式,讓國家和人民都獨立自由。