現在看來,大家很容易會把開源軟體當作是理所當然的,但事實上,我們應該知道自由和開源軟體是經歷了長達半個世紀的一系列漫長髮展的產物。
本文記錄了自由和開源歷史上的一些重要時刻,也稱得上是 FOSS 歷史上的大事件。從 UNIX 的全盛時期,到 GNU 和 Linux 的誕生,再到 GitHub 將開源“民主化”,以及在它們之間的一切。
1969:UNIX 的誕生
1969年,AT&T 貝爾實驗室的工程師開始開發 UNIX。此後的10年,UNIX 在學術機構和大型企業中得到了廣泛的應用,當時的 UNIX 擁有者 AT&T 公司以低廉甚至免費的許可將 UNIX 原始碼授權給學術機構做研究或教學之用,許多機構在此原始碼基礎上加以擴充和改進。後來 AT&T 意識到了 UNIX 的商業價值,從1979年 UNIX 的版本 V7 開始,不再將 UNIX 原始碼授權給學術機構,並對之前的 UNIX 及其變種宣告瞭版權權利。事實上,UNIX 在自由或開源軟體的概念存在之前就已誕生,可以說,UNIX 從來都不是一個自由或開源的作業系統。從某種意義上來說,UNIX 在促進共享原始碼方面起了很小的作用。
然而,圍繞 UNIX 而成長起來的文化在後來的自由和開源軟體的意識形態和社群誕生過程中起到了奠基性的作用。UNIX 的開發者和使用者把自己看成是對抗軟體商業化的“反叛者”,他們自由地共享原始碼,以分散的方式共同合作開發 UNIX 系統。
1984:AT&T 將 UNIX 商業化
從 UNIX 誕生起的前十五年,UNIX 作業系統的擁有者 AT&T 是被法院禁止從中獲利的。起因是1958年 AT&T 為避免美國司法部起訴它違反《反壟斷法》而簽訂的和解協議。AT&T 壟斷了美國長途電話業務,因此它同意不進入計算機行業,不銷售任何與計算機有關的產品,UNIX 是計算機作業系統,所以 AT&T 不能銷售它,任何要求得到原始碼的機構,都能免費得到。
然而在1984年,事情發生了變化,當時對 AT&T 的限制法令被解除,AT&T 開始以能獲利的價格銷售 UNIX。UNIX 的原始碼依然可用,但 AT&T 將 UNIX 從研究性質的專案轉變為一個商業專案,這在 UNIX 黑客社群裡產生了危機。他們開始尋找一個可替代的類 UNIX 系統,且不受商業陷阱的阻礙。
1984:GNU 的誕生
在 AT&T 將 UNIX 商業化的同一年,理查德·斯托曼(簡稱 RMS)發起了 GNU 專案(GNU’s Not Unix! 的遞迴縮寫),目標是建立一個完全自由且向下相容 UNIX 的作業系統。RMS 在1985年曾說過,GNU 是一個我正在編寫的完全相容 UNIX 的專案,所以我可以讓每一個使用它的人都能自由地使用。
GNU 專案剛啟動時,自由軟體這一現代概念也才剛剛誕生,即便是 RMS 也沒能充分表達其中“自由”的含義,早期 GNU 專案的追隨者輕易地認為 RMS 只是旨在開發不收任何費用的軟體。
然而,在接下來的幾年裡,由於開發者和公司越來越少地在釋出程式的同時提供原始碼。此時,對於程式設計師和使用者,GNU 的真正含義開始變得清晰。GNU 的重要性體現在專案承諾所有的原始碼都能自由使用。
1985:自由軟體基金會的建立
隨著 RMS 推動自由軟體發展和成熟的願景日益強烈,他意識到僅通過編寫和分享 GNU 程式碼是遠遠不夠的。於是,他建立了自由軟體基金會來協助該計劃。
自由軟體基金會(簡稱 FSF)是一個致力於推廣自由軟體的美國民間非營利性組織。它於1985年10月由理查德·斯托曼建立。其主要工作是執行 GNU 計劃,開發更多的自由軟體。FSF 幫助建立了保護 GNU 和其他自由軟體專案的法律和制度框架。
1991:Linux 核心的誕生
作為作業系統,GNU 最大的問題是具有完備功能的核心尚未被開發成功。雖然 GNU 專案的開發者成功編寫了大量重要的程式,但他們努力建立一個類似 UNIX 的核心來完善 GNU 的工作卻長期停滯不前。GNU 的核心,稱為 Hurd,是自由軟體基金會發展的重點,今天仍在開發中,經過近三十年的開發,它仍然不能可靠地用於生產環境。同時,BSD 專案的自由軟體核心也受到法律方面問題的困擾。
這為 Linux 核心建立了一個開放的機會。Linux 核心是1991年 Linus Torvalds 在其大學時期開發的一個專案,並將程式碼貢獻了出來。最初,Linus 採用的是自己擬定的許可證,這個許可證會限制商業使用,後來他轉用了 GNU 專案使用的 GPL 許可證。當時 GNU 專案仍未完成,GNU 系統軟體集與 Linux 核心結合後,GNU 軟體構成了這個 POSIX 相容作業系統 GNU/Linux 的基礎。
所以,Linux 核心填補了 GNU 使用者需要完整的且使用自由軟體的類 UNIX 系統的空白。
1998:開源峰會 (Open Source Summit)
到了20世紀90年代後期,GNU,Linux 以及其他重要專案(如 Apache)的自由軟體越來越普及。
由於像 Eric S. Raymond 這樣的黑客們開始擔心 RMS 和 FSF 在推動自由軟體的時候,受意識形態的影響太深,從而與現實脫節。Raymond 和他的追隨者認為,為了自由軟體儘可能大範圍地取得成功,他們應該側重於提供原始碼的實用價值,而不是過多的涉及共享和道德的哲學原則。
同時期,Netscape 宣佈將其 Navigator 瀏覽器的原始碼在 Internet 上公佈。這一系列舉動使得在1998年2月3日,資深黑客 Eric S. Raymond 邀請了大約十幾個自由軟體社群的著名成員一起開會(RMS 沒被邀請),希望可以促使更多公司能夠理解黑客社群早已行之有時的開放式軟體開發流程的獨特優勢,使這種先進流程能夠得到更廣泛的應用。與會者都認為,這是一個有助於消除過去人們對“自由軟體”存在誤解的大好時機,除了 free(免費?自由?)這個詞的含混之外,還有自由軟體給公眾留下的宗教化和喜對抗的印象,從實際出發,針對企業的顧慮,將自由軟體中實用和有助於業務的核心理念推廣出去。
與會者決定使用“開源軟體(open source software)”來代替“自由軟體(free software)”,以推廣開源這一概念,讓大眾更清晰地明白其與自由軟體之間的差別,並以較少的意識形態方式來傳遞價值。
1999:Red Hat 的 IPO
1999年8月11日,紅帽公司正式上市,成為第一家開始公開交易的開源公司,這是自由和開源軟體具有商業意義最有力的證明。
雖然在同一時期上市的其他開源公司 —— 尤其是 VA Linux,它的表現並不好,但紅帽仍然是當今開源市場中的領先公司。
2004:Ubuntu 的推出
到20世紀90年代末,已經提供了許多 GNU/Linux 發行版。但因為缺少對使用者友好的圖形介面程式,除了極客之外,極少的使用者能熟練使用。
誕生於2004年10月20日的 Ubuntu 改變了這個情況。Ubuntu 由南非慈善家和企業家 Mark Shuttleworth 所創立,被稱為“為人類而生的 Linux”。
Ubuntu 的目標在於為一般使用者提供一個最新同時又相當穩定且擁有友好的介面,主要以自由軟體構建而成的作業系統。Ubuntu 目前擁有蓬勃發展的使用者社群,具有龐大的社群力量支援,使用者可以方便地從社群獲得幫助,是目前使用最廣泛的 GNU/Linux 發行版。
2007:Android 的推出
將自由和開源軟體提供給最多人使用的軟體專案無疑是 Android 移動裝置作業系統。Android 是使用最廣泛的移動應用平臺。
雖然大多數 Android 使用者可能不知道 Android 部分是基於 Linux 核心的,然而,很多自由和開源軟體的倡導者抱怨 Android 的許可證沒有提供軟體自由,而且 Android 裝置往往會被專有的元件和預裝軟體限制著,類似這種使用的不便,更多人傾向於使用 GNU/Linux。對於這種情況,Android 的開發者認為“Android 不是 Linux”,儘管有這個平臺的根源。
2008:GitHub 將開源“民主化”
最初,大多數自由和開源軟體專案的貢獻者通過電子郵件或私有的版本控制系統(如 Subversion 或 BitKeeper)進行協作。這種做法不僅笨重(因為沒有集中的、精簡的位置來查詢開源專案和為其貢獻),而且某些版本控制系統還是專有的。
誕生於2008年的 GitHub 改變了這一情況。GitHub 提供使用 Git 進行版本控制的軟體原始碼託管服務。Git 是一個開源的分散式版本控制系統,由 Linus Torvalds 開發,於2005年在 GPL 開源許可證下發布。最初目的是為更好地管理 Linux 核心的開發,用於替代他們曾經使用的閉源解決方案 —— BitKeeper。
GitHub 的出現,使得更多開發者能更方便地參與開源專案,為開源專案貢獻,任何人都可以輕鬆提交自己的程式碼,並在 GitHub 上託管自己的開源專案。
因為幾乎所有人都把自己的程式碼託管在 GitHub 上,所以更容易查詢開源專案,而且協作方式的改變,開發者也不再需要獲得開發者社群的許可權才能參與開源專案。