Linux 系統發展史小覽 (與Unix區別科普文)

不少人雖然知道 Unix、Linux等操作系統,甚至可能是技術高手,但知道它們之間那千絲萬縷關係的人並不多。其實, Unix,Linux,macOS甚至 iOS、Android 這些操作系統的淵源都頗深!

本文旨在讓大家瞭解科技界過去的一些故事,每一種科技的進步都伴隨開發者們不懈的努力!就是想讓大家明白一個道理,你現在所處的美好的科技世界,是曾經無數開發者辛勤汗水的積累而來的。如果你並不瞭解它們的過去,這次不妨就來細究一下。

Linux 和 BSD
Linux和 BSD 都是免費的,開源的,類 Unix 系統。他們甚至使用很多相同的軟件。他們看上去簡直就像是一個操作系統,那麼,它們有什麼不同嗎?

其實,兩者之間的不同,遠遠超出了我們下面提到的這些,尤其是在構建完整操作系統和許可授權的哲學思想上,更是相差甚遠。

許多人所稱的“Linux”實際上不是 Linux。Linux 從技術上說只是 Linux 內核,典型的 Linux 發行版則包括了 Linux 內核和許多軟件。這是爲什麼Linux 有時被稱爲 GNU/Linux。事實上,許多在 Linux 上使用的軟件同樣也在 BSD 上使用。

Linux 和 BSD 都是類 UNIX 操作系統。我們可以通過閱讀類 UNIX 操作系統歷史發現 Linux 和 BSD 有不同的譜系。Linux 是由 Linus Torvalds 在芬蘭上大學的時候開發的。BSD 則代表“Berkeley Software Distribution,伯克利軟件套件”,其源於對加州大學伯克利分校所開發的貝爾實驗室 UNIX 的一系列修改,它最終發展成一個完整的操作系統,現在有多個不同的 BSD 分支。

1、內核 vs 完整操作系統
嚴格的說,Linux 是隻是一個內核。製作 Linux 發行版所要做的工作就是,彙集那些創建一個完整 Linux 操作系統所需的所有軟件,將它組合成一個像Ubuntu、Debian、RedHat / CentOS、Mint 或者是 Arch 這樣的 Linux 發行版。有許多不同的Linux 發行版。

與此相反的是,BSD 這個名字則代表其內核和操作系統。例如,FreeBSD 提供了 FreeBSD 內核和 FreeBSD 操作系統。它是作爲一個單一的項目維護的。換句話說,如果你想要安裝 FreeBSD,就只有一個 FreeBSD 可供你安裝。如果你想要安裝 Linux,你首先需要在許多 Linux 發行版之間選擇。

BSD 包括一個名爲 Ports 的系統,它提供了一種安裝軟件包的方式。Ports 系統包含了軟件包的源代碼,所以您的計算機如果想安裝軟件的話,則需要先編譯他們。(如果您曾經使用過以前流行的 Gentoo,有點類似那樣。)不過,軟件包也可以是預安裝的二進制形式,以便你不需要花時間和系統資源編譯他們就能運行。

2、許可證
許可證是典型的差異,雖然它不會對大多數人產生影響。Linux 使用 GNU 通用公共許可證,即 GPL。如果你修改了 Linux 內核,並將其分發,你就必須放出您的修改的源代碼。

BSD 使用 BSD 許可證。如果你修改了 BSD 內核或發行版,並且發佈它,你根本不需要必鬚髮布其源代碼。你可以自由地對你的 BSD 代碼做任何你想做的事情,你沒有義務發佈的你修改的源代碼,當然你想發佈也行。

兩者都是開放源碼的,但是以不同的方式。人們有時會陷入關於哪種許可證是“更自由”的辯論。GPL 可以幫助用戶以確保他們可以擁有 GPL 軟件的源代碼,並限制開發人員迫使他們開放代碼。BSD 許可證並不能確保用戶可以擁有源代碼,而是給開發人員選擇是否公佈代碼的權利,即使他們想要把它變成一個閉源項目。

3、BSD分支
以下是通常認可的三個“主流” BSD 操作系統:

(1)FreeBSD: FreeBSD 是最受歡迎的 BSD,針對高性能和易用性。它支持英特爾和 AMD 的32位和64位處理器。

(2)NetBSD: NetBSD 被設計運行在幾乎任何架構上,支持更多的體系結構。在他們的主頁上的格言是”理所當然,我們運行在 NetBSD 上”。

(3)OpenBSD:OpenBSD 爲最大化的安全性設計的 —— 這不僅僅它宣稱的功能,在實踐中也確實如此。它是爲銀行和其他重要機構的關鍵系統設計的。

還有兩個其他的重要 BSD 操作系統:

(4)DragonFly BSD: DragonFly BSD 的設計目標是提供一個運行在多線程環境中的操作系統 —— 例如,計算機集羣。

(5)Darwin / Mac OS X: Mac OS X (macOS) 實際上基於 Darwin 操作系統,而 Darwin 系統基於 BSD。它與其他的 BSD 有點不同,雖然底層內核和其他的軟件是開源代碼(BSD 代碼),但操作系統的大部分是閉源的 Mac OS 代碼)。蘋果在 BSD 基礎上開發了 Mac OS X 和iOS,這樣蘋果就不必寫操作系統底層,就像Google在Linux 基礎上開發 Android系統一樣。

4、BSD over Linux??
Linux 顯然比 FreeBSD 更受歡迎。例如,Linux 往往會比 FreeBSD 更早提供新硬件的支持。BSD 有一個兼容包可用,使之能像大多數的其他軟件一樣原生的執行 Linux 二進制程序。

如果您使用過 Linux, FreeBSD 不會讓你感覺到太大的不同。如果把 FreeBSD 作爲桌面操作系統,你也可以使用相同的 GNOME,KDE 或 Xfce桌面環境,你也可以在BSD上使用 Linux 上的大多數的其他軟件。有一點需要注意,FreeBSD 不會自動安裝的圖形化桌面,所以你要花相對於 Linux 更多的心思來照顧你的BSD。BSD 更守舊一些。

FreeBSD 的可靠性和穩定性也許更適合作爲服務器的操作系統。而廠商也會選擇 BSD 而不是 Linux 作爲其操作系統,因爲這樣他們就不必放出他們修改的代碼。

如果你是一個 PC 桌面用戶,你真的不需要太過在意 BSD。你可能會喜歡 Linux,因爲它具有更先進的硬件支持,更容易安裝,具有現代操作系統的特點。如果你關注服務器或嵌入式的設備,你可能會更喜歡 FreeBSD。

我們可能會聽到一些人說他們在桌面電腦上使用 FreeBSD,你當然也可能是其中之一!但像 Ubuntu 或 Mint 一樣的開源操作系統對於多數用戶來說更體驗良好和更先進些。

發展簡史
Unix是目前還在存活的操作系統的元老了,走過了40年的歷程。

1、Unix 起源
回顧Unix歷史,我們就要說一下一個叫MULTICS的項目。上世紀六十年代時,大部份計算機都是採用批處理的方式(也就是說,當作業積累一定數量的時候,計算機纔會進行處理)。那時,我們熟知的美國電話及電報公司(AT&T)、通用電器公司(G.E.)及麻省理工學院(MIT)計劃合作開發一個多用途、分時及多用戶的操作系統,也就是這個MULTICS,其被設計運行在GE-645大型主機上。不過,這個項目由於太過複雜,整個目標過於龐大,糅合了太多的特性,進展太慢,幾年下來都沒有任何成果,而且性能都很低。於是到了1969年2月,貝爾實驗室決定退出這個項目。

熟悉這段歷史的人都知道,貝爾實驗室中的有個叫 Ken Thompson 的人,他爲 MULTICS 這個操作系統寫遊戲了個叫“Space Travel”的遊戲,在 MULTICS 上經過實際運行後,他發現遊戲速度很慢而且耗費昂貴 —— 每次運行會花費75美元。退出這個項目以後。他爲了讓這個遊戲能玩,所以他找來Dennis Ritchie爲這個遊戲開發一個極其簡單的操作系統。這就是後來的Unix。(值得一提的是,當時他們本想在DEC-10上寫,後來沒有申請到,只好在實驗室的土·嗇角邊找了一臺被人遺棄的 Digital PDP-7 的迷你計算機進行他們的計劃,這臺計算機上連個操作系統都沒有,於是他們用匯編語言僅一個月的時間就開發了一個操作系統的原型)他們的同事Brian Kernighan非常不喜歡這個系統,嘲笑Ken Thompson說:“你寫的系統好真差勁,乾脆叫Unics算了。” Unics 的名字就是相對於 MULTICS 的一種戲稱,後業改成了Unix。於是,Unix 就在這樣被遊戲和玩笑創造了,當時是1969年8月。也就是這一年,Linux 之父 Linus Torvalds 在芬蘭出生了。

1971年,Ken Thompson 寫了充分長篇的申請報告,申請到了一臺PDP-11/24的機器。於是Unix第一版出來了。在一臺PDP-11/24的機器上完成。這臺電腦只有24KB的物理內存和 500K 磁盤空間。Unix佔用了12KB的內存,剩下的一半內存可以支持兩用戶進行Space Travel的遊戲。而著名的 fork() 系統調用也就是在這時出現的。

到了1973年的時候,Ken Thompson 與 Dennis Ritchie 感到用匯編語言做移植太過於頭痛,他們想用高級語言來完成第三版,對於當時完全以彙編語言來開發程序的年代,他們的想法算是相當的瘋狂。一開始他們想嘗試用Fortran,可是失敗了。後來他們用一個叫BCPL的語言開發,他們整合了BCPL形成B語言,後來Dennis Ritchie覺得B語言還是不能滿足要求,就是就改良了B語言,這就是今天的大名鼎鼎的C語言。於是,Ken Thompson 與 Dennis Ritchie 成功地用C語言重寫了 Unix 的第三版內核。至此,Unix這個操作系統修改、移植相當便利,爲Unix日後的普及打下了堅實的基礎。而Unix和C完美地結合成爲一個統一體,C與Unix很快成爲世界的主導。

Unix 的第一篇文章 “The UNIX Time Sharing System”由 Ken Thompson 和 Dennis Ritchie 於1974年7月的 the Communications of the ACM 發表。這是UNIX與外界的首次接觸。結果引起了學術界的廣泛興趣並對其源碼索取,所以,Unix第五版就以“僅用於教育目的”的協議,提供給各大學作爲教學之用,成爲當時操作系統課程中的範例教材。各大學公司開始通過 Unix 源碼對 Unix 進行了各種各樣的改進和擴展。於是,Unix 開始廣泛流行。

2、Unix 分裂
1978年,對 Unix 而言是革命性的一年;因爲學術界的老大柏克利大學,推出了一份以第六版爲基礎,加上一些改進和新功能而成的 Unix。這就是著名的“1 BSD(1st Berkeley Software Distribution)”,開創了Unix的另一個分支:BSD 系列。 同時期,AT&T成立USG,將 Unix變成商業化的產品。從此,BSD的 Unix 便和AT&T 的Unix 分庭抗禮,Unix就分爲System IV 和 4.x BSD這兩大主流,各自蓬勃發展。

1979年發佈的Unix 第七版被稱爲是“最後一個真正的Unix”,這個版本的Unix內核只有40K bytes。後來這個版本被移植到VAX機上。20世紀80年代相繼發佈的8、9、10版本只授權給了少數大學。

1982年,AT&T基於版本7開發了UNIX System Ⅲ的第一個版本,這是一個商業版本僅供出售。爲了解決混亂的UNIX版本情況,AT&T綜合了其他大學和公司開發的各種UNIX,開發了UNIX System V Release 1。這個新的UNIX商業發佈版本不再包含源代碼,所以加州大學Berkeley分校繼續開發BSD UNIX,作爲UNIX System III和V的替代選擇。BSD對UNIX最重要的貢獻之一是TCP/IP。BSD 有8個主要的發行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及 4.4-lite。這些發佈版中的TCP/IP代碼幾乎是現在所有系統中TCP/IP實現的前輩,包括AT&T System V UNIX 和Microsoft Windows中的TCP/IP都參照了BSD的源碼。

同時,其他一些公司也開始爲其自己的小型機或工作站提供商業版本的UNIX系統,有些選擇System V作爲基礎版本,有些則選擇了BSD。BSD的一名主要開發者,Bill Joy,在BSD基礎上開發了SunOS,並最終創辦了Sun Microsystems。

1991年,一羣BSD開發者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)離開了加州大學,創辦了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常見的Intel平臺上提供全功能商業BSD UNIX的廠商。後來Bill Jolitz 離開了BSDI,開始了386BSD的工作。386BSD被認爲是FreeBSD、OpenBSD 和 NetBSD、DragonFlyBSD的先輩。

這是一個AT&T妄圖私有化的Unix的時代。爲了私有化Unix,1986年IEEE指定了一個委員會制定了一個一個開放作業系統的標準,稱爲 POSIX (Portable Operating Systems Interface)。最後加上個X,不知道是爲了好聽,還是因爲這本質上是UNIX的標準。當然,AT&T的Unix取得了這個標準制訂戰爭的勝利,還取得了Unix這個註冊商標。此時BSD的擁護者自喻爲冷酷無情的公司帝國的反抗軍。就銷售量來說,AT&T UNIX始終趕不上BSD/Sun。到1990年,AT&T與BSD版本已難明顯區分,因爲彼此都有采用對方的新發明。

這段時期,從實驗室出來的被全世界所分享的Unix,正處於被私有化的關鍵時期。

3、Unix 的法律糾紛
BSDI 很快就與AT&T的UNIX Systems Laboratories(USL)附屬公司產生了法律糾紛,USL是AT&T註冊的公司。AT&T爲了擁有System V版權,以及Unix商標,爲了壟斷Unix,1992年,USL正式對BSDI提起訴訟,說BSD剽竊他的源碼。而最終了結了好評如潮的BSD系統。

由於最後判決懸而未決,這樁法律訴訟將BSD後裔的開發,特別是自由軟件,延遲了兩年,這導致沒有法律問題的Linux內核獲得了極大的支持。Linux跟386BSD的開發幾乎同時起步,Linus說,當時如果有自由的基於386的Unix-like操作系統,他就可能不會創造Linux。儘管無法預料這給以後的軟件業究竟造成了什麼樣的影響(如果沒有這個法律糾紛,很有可能沒有今天的革命性的Linux),但有一點可以肯定,Linux更加豐富了這塊土壤。

這場官司一直打到 AT&T將自己的Unix系統實驗室賣掉,新接手的Novell公司採取了一種比較開明的做法,允許BSDI自由發佈自己的BSD,但是前提是必須將來自於AT&T的代碼完全刪除,於是誕生了4。4 BSD Lite版,由於這個版本不存在法律問題,4。4BSD Lite成爲了現代BSD系統的基礎版本。

這樁訴訟最終在1994年1月了結,更多地滿足了BSDI的利益。伯克利套件的18,000個文件中,只有3個文件要求刪除,另有70個文件要求修改,並顯示USL的版權說明。這項調解另外要求,USL不得對4。4BSD提起訴訟,不管是用戶還是BSDI代碼的分發者。於是,BSD Unix走上了復興的道路。BSD的開發也走向了幾個不同的方向,並最終導致了FreeBSD、OpenBSD和NetBSD的出現。

從AT&T意識到了Unix的商業價值,不再將Unix源碼授權給學術機構以來,到以後的幾十年,Unix仍在不斷變化,其版權所有者不斷變更,授權者的數量也在增加。Unix的版權曾經爲AT&T所有,之後Novell擁有了Unix,再之後Novell又將版權出售給了SCO(這一事實雙方尚存在爭議,這裏是最新進展)。有很多大公司在取得了Unix的授權之後,開發了自己的Unix產品。(幾年前,據傳聞微軟爲了限制Linux,微軟讓SCO到法院告Linux剽竊其源碼)

由於Unix是由C語言寫的,所以修改和移植都很容易,因此,很多商業公司及學術機構均加入這個操作系統的研發,各個不同版本的Unix也開始蓬勃發展。這才產生了今天這麼多的各式各樣的Unix衍生產品。如AIX、Solaris、HP-UX、IRIX、OSF、Ultrix等等。(這些商業化的Unix基本上都是源於AT&T授權的Unix System V)

4、Unix 開源組織
AT&T的這種商業態度,讓當時許許多的Unix的愛好者和軟件開發者們感到相當的痛心和憂慮,他們認爲商業化的種種限制並不利於產生的發展,相反還能導制產品出現諸多的問題。隨着商業化Unix的版本的種種限制和諸多問題,引起了大衆的不滿和反對。於是,大家開始有組織地結成“反叛聯盟”以此對抗欺行罷市的AT&T等商業化行爲。

另一方面,關於“大教堂”(集權、封閉、受控、保密)和“集市”(分權、公開、精細的同僚複審)兩種開發模式的對比成爲了新思潮的中心思想。這個新思潮對IT業產生了非常深遠影響。爲整個計算機世界帶來了革命性的價值觀。

此時,一個名叫Richard Stallman的領袖出現了,他認爲Unix是一個相當好的操作系統,如果大家都能夠將自己所學貢獻出來,那麼這個系統將會更加的優異!他倡導的Open Source的概念,就是針對Unix這一事實反對實驗室裏的產品商業化私有化。儘管Stallman既不是、也從來沒有成爲一個Unix程序員,但在後1980的大環境下,實現一個仿Unix操作系統成了他追求的明確戰略目標。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他們對代碼共享的使命感甚至比那些有更多Unix背景的人強烈。

爲了這個理想,Richard Stallman於1984年創業了GNU,計劃開發一套與Unix相互兼容的的軟件。1985 年 Richard Stallman 又創立了自由軟件基金會(Free Software Foundation)來爲 GNU 計劃提供技術、法律以及財政支持。儘管 GNU 計劃大部分時候是由個人自願無償貢獻,但 FSF 有時還是會聘請程序員幫助編寫。當 GNU 計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被 Red Hat 兼併的 Cygnus Solutions。

GNU組織的建立,延續了當年Unix剛出現時的情形,併爲這種情形建立了可靠的法律和財務保障。GNU 工程十幾年以來, 已經成爲一個對軟件開發主要的影響力量, 創造了無數的重要的工具。例如:強健的編譯器,有力的文本編輯器,甚至一個全功能的操作系統。從那時開始,許多程序員聚集起來開始開發一個自由的、高質量、易理解的軟件,讓這使得Unix社區生機勃勃,一派繁榮景象。

自90年代發起這個計劃以來,GNU 開始大量的產生或收集各種系統所必備的組件,像是——函數庫、編譯器、調式工具、文本編輯器、網站服務器,以及一個Unix的使用者接口(Unix shell)等等,等等。但由於種種原因,GNU一直沒有開發操作系統的kernel。正當Richard Stallman在爲操作系統內核傷腦筋的時候,Linux 出現了。

5、Linux 橫空出世
1990年,Linus Torvalds 還是芬蘭赫爾辛基大學的一名學生,最初是用匯編語言寫了一個在80386保護模式下處理多任務切換的程序,後來從 Minix(Andy Tanenbaum教授所寫的很小的 Unix 操作系統,主要用於操作系統教學)得到靈感,進一步產生了自認爲狂妄的想法——寫一個比 Minix 更好的Minix,於是開始寫了一些硬件的設備驅動程序,一個小的文件系統。這樣0.0.1版本的 Linux 就出來了,但是它只具有操作系統內核的勉強的雛形,甚至不能運行,你必須在有Minix的機器上編譯以後才能玩。這時候Linus已經完全着迷而不想停止,決定踢開 Minix,於是在1991年10 月5號發佈Linux 0.0.2版本,在這個版本中已經可以運行 bash 和 gcc。

從一開始,Linus就決定自由擴散Linux,包括原代碼,隨即Linux引起黑客們(hacker)的注意,通過計算機網絡加入了Linux的內核開發。Linux傾向於成爲一個黑客的系統——直到今天,在Linux社區裏內核的開發被認爲是真正的編程。由於一批高水平黑客的加入,使Linux 發展迅猛,幾乎一兩個禮拜就有新版或修正版的出現,到1993年底94年初,Linux 1.0 終於誕生了!Linux 1.0已經是一個功能完備的操作系統,而且內核寫得緊湊高效,可以充分發揮硬件的性能,在4M內存的80386機器上也表現得非常好,至今人們還在津津樂道。時至今日,kernel的版本已經出到2.6。Linux的發展不像傳統的軟件工程,它完全是透過網絡,集合世界各地的高手而成的一套操作系統,在這裏我們也可以見識到網絡快速傳播的威力。Linux 初次讓整個世界感覺到了開源力量和網絡力量的如此強大。(Linux 的標誌和吉祥物是一隻名字叫做 Tux 的企鵝,標誌的由來是因爲Linus在澳洲時曾被一隻動物園裏的企鵝咬了一口,便選擇了企鵝作爲Linux的標誌。)

Linux 的歷史是和GNU緊密聯繫在一起的。從1983年開始的GNU計劃致力於開發一個自由並且完整的類Unix操作系統,包括軟件開發工具和各種應用程序。到1991年 Linux 內核發佈的時候,GNU已經幾乎完成了除了系統內核之外的各種必備軟件的開發。在 Linus Torvalds 和其它開發人員的努力下,GNU組件可以運行於Linux內核之上。整個內核是基於 GNU 通用公共許可,也就是GPL(GNU General Public License,GNU通用公共許可證)的,但是Linux內核並不是GNU 計劃的一部分。1994年3月,Linux1.0版正式發佈,Marc Ewing成立了 Red Hat 軟件公司,成爲最著名的 Linux 分銷商之一。

嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和應用程序的操作系統(也被稱爲GNU/Linux)。基於這些組件的Linux軟件被稱爲Linux發行版。一般來講,一個Linux發行套件包含大量的軟件,比如軟件開發工具,數據庫,Web服務器(例如Apache),X Window,桌面環境(比如GNOME和KDE),辦公套件(比如OpenOffice.org),等等。

1991至1995年間,Linux從概念型的 0.1 版本內核原型,發展成爲能夠在性能和特性上均堪媲美專有Unix的操作系統,並且在連續正常工作時間等重要統計數據上打敗了這些Unix中的絕大部分。1995年,Linux找到了自己的殺手級應用——開源的web服務器Apache。就像Linux,Apache出衆地穩定和高效。很快,運行 Apache 的 Linux 機器成了全球ISP平臺的首選。約60%的網站選用Apache,輕鬆擊敗了另兩個主要的專有型競爭對手。今天的LAMP(Linux , Apache, MySQL, PHP)已經成爲了架構Web服務器的主要首選。

現如今的Linux不但可以裝在幾乎所有的主流服務器上,當然也包括桌面的X86系統中。其還常常被用於嵌入式系統,機頂盒、手機、交換機、遊戲機、PDA、網絡交換機、路由器、等等,都是因爲 Linux 那精彩的內核。

Linux 的出現,不僅僅給世界帶來了一個免費的操作系統,也不僅僅是對 Unix 自由、共享的文化的延續,它的出現帶給了計算機世界自 Unix、GNU 以來更爲成熟的思想和文化。

6、Linux —— 今天的領袖
Linux 和 GNU 關係是比較微妙的。那時,自由軟件基金會編寫的用戶軟件工具包鋪平了一條擺脫高成本專有軟件開發工具的前進道路。意識服從經濟,而不是領導:一些新手加入了RMS的革命運動,高舉GPL大旗,另一些人則更認同整體意義上的Unix傳統,加入了反對GPL的陣營,但其他大部分人置身事外,一心編碼。

Linus Torvalds 巧妙地跨越了GPL和反GPL的派別之爭。他利用GNU工具包搭起了自創的Linux內核,用GPL的傳染性質保護它,但拒絕認同Richard Stallman的許可協議反映的思想體系計劃。Linus Torvalds明確表示他認爲自由軟件一般情況下更好,但他偶爾也用專有軟件。即使在他自己的事業中,他也拒絕成爲狂熱分子。這一點極大地吸引了大多數黑客,他們雖然早就反感Richard Stallman的言辭,但他們的懷疑論一直缺個有影響力或者令人信服的代言人。而Linus Torvalds正好充當了這一角色。

Linus Torvalds 令人愉快的實用主義及靈活而低調的行事風格,促使黑客文化在1993至1997年間取得了一連串令人驚奇的勝利,不僅僅在技術上的成功,還讓圍繞Linux操作系統的發行、服務和支持產業有了堅實的開端。結果,他的名望和影響也一飛沖天。Torvalds 成爲了互聯網時代的英雄;到1995年爲止,他只用了四年時間就在整個黑客文化界聲名顯赫,而Richard Stallman爲此花了十五年,而且他還遠遠超過了Stallman向外界販賣“自由軟件”的記錄。與Torvalds相比,Richard Stallman的言辭漸漸顯得既刺耳又無力。(參看《Linus Torvalds 語錄 Top 10》)

今天,我們也說不清楚是GNU Linux還是Linux GNU。Linux既不排斥開源,也不排斥商業化,Linus認爲好的軟件是需要免費和商業化共同推進的。正是這種革命性的想法,造就了今天的Linux火紅的局面(參看《誰寫了Linux》、《Linux基金會的廣告》、《Linux Distribution Timeline》)。Linux就像一股清泉流入了所有人的心中,引發了很多的啓迪和思考。

7、Unix與黑客文化
黑客的文化和 Unix 的商業化存在着必然的聯繫。自從Unix出現,黑客文化就與之而來。

1993初,一個悲觀的觀察家撰文指出,已經有理由認爲Unix的傳奇故事連同他帶有黑客文明將一同破產。許多人預測,從那時起 Unix 將在六月內死亡。他們很清楚,十年的Unix商業化,使自由跨平臺的Unix夢以失敗告終。Unix允諾的跨平臺可移植性,在一打大公司專有的Unix版本之間不停地鬥嘴中丟失,一個完美的操作系統最終淪爲多種版本的一團亂麻,這應該說是人類文明史上的一個重大悲劇。

在專有軟件社會中,只有像微軟一樣的“集權制,大教堂”生產方式才能成功。那個時代的人悲觀地相信,技術世界的個人英雄主義時代已經結束,軟件工業和發展中的互聯網絡將逐漸地由像微軟一樣的巨型企業支配,再也沒有“佐羅”,世界是愷撒大帝的世界,計算機文明將進入黑暗的帝國時代。黑客已經死了,自由不付存在。

自從 Unix 出現以來,第一代的Unix黑客似乎垂垂老矣,衣食不飽( Berkeley計算機科學研究組在1994丟失了自己基金)。這是一個抑壓的時代。專有的商業Unix的結果證明那麼沉重、那麼盲目、那麼不適當,以致微軟能夠用那次等技術的Windows搶走他們生存的空間,拿走他們的乾糧。黑客世界的殘餘力量被逼到了世界上的角落裏,苟延殘喘。

就在黑客文化日漸衰落之時,美國新聞週刊的資深記者Steven Levy完成了著名的《黑客列傳》一書,書中着力介紹了一個人物:Richard M。 Stallman的故事,他是麻省理工學院(MIT)人工智能實驗室領袖人物,堅決反對實驗室的研究成果商業化。他是商業軟件社會中堅強的一員,決不隨波逐流,建立了全新的黑客文化。

Richard M。 Stallman(他的登陸名RMS更爲人熟知)早在1970年代晚期就已經證明他是當時最有能力的程序員之一。Emacs編輯器就是他衆多發明中的一項。RMS的目標是將後1980的鬆散黑客社羣變成一臺有組織的社會化機器以達到一個單純的革命目標。也許他未意識到,他的言行與當年卡爾·馬克思號召產業無產階級反抗工作的努力如出一轍。RMS宣言引發的爭論至今仍存於黑客文化中。他的綱要遠不止於維護一個代碼庫,已經暗含了廢除軟件知識產權主張的精髓。RMS通過“自由軟件(free software)”讓黑客文化更加有自我意識。當然,這個充滿魅力又具爭議的人物本身已經成爲了一個黑客文化英雄。

只有癡迷的“黑客”和具有創造力的怪人結成的反叛聯盟才能把我們從愚蠢中拯救出來——他們接着教導我們,真正的專業和奉獻精神,正是我們在屈服於世俗觀念的“合理商業做法”之前的所作所爲。 ——《The Art of Unix Programming》

RMS讓世界上所有的人都知道,入侵電腦系統只是低級不入流的黑客乾的事,真正的黑客,是爲了自由,爲了軟件的自由,爲了挑戰計算機世界中的霸權主義而鬥爭。他們不是街頭小混混,他們更像是綠林好漢,更像是羅賓漢,更像是佐羅。就像渴望民主的人民同專制的政府鬥爭一樣。RMS領導着許多的黑客通過互聯網向專有軟件發出宣戰。

X Windows是首批由服務於全球各地不同組織的許多個人以團隊形式開發的大規模開源項目之一。電子郵件使創意得以在這個羣體中快速傳播,問題由此得以快速解決,而開發者可以人盡其才。軟件更新可以在數小時之內發送到位,使得每個節點在整個開發過程中步調一致。網絡改變了軟件的開發模式。

另一方面,RMS的理論體系有許多東西非常有爭議,他的GPL被認爲是一種“病毒式”的協議,BSD的fans和老牌Unix黑客們認爲,他們編寫Unix的年頭都比GPL聲明要長得多,GPL依然有太多的限制,而BSD協議則比GPL更加的自由。另一方面,RMS走向了另一個極端,他是完全反版權的,反商業化的。把軟件產品從強制收費推向了強制免費、共享和開源,這也爲他帶來了許多許多的爭議。

在RMS組織黑客鬧革命的年代裏,沒有多少黑客認同於RMS的理論體系,更多的他們參與GNU只是爲了體現那種在互聯網上協同工作,令人激動的工作模式。自從GNU設立以來,爭議不斷,而黑客文化卻從未有統一在他的理想體系之下。

自從Linux出現以後,一個新的黑客領袖出現了,Linus Torvalds的中庸態度網聚了世界上頂尖的黑客,其繞過了GPL和反GPL的派系之爭,他使用GNU的工具從而以GPL的“傳染性”保護了Linux,但他同時也不承認RMS的理論思想體系,他即開源,又支持商業化。雖然,他沒有帶給黑客們什麼重要的思想體系或統一的價值觀,但他整合了全世界黑客的陣營,讓所有的黑客的行爲都圍繞着Linux這一事物進行。他以“用自由軟件是因爲它運行得更好”輕而易舉地蓋過了“用自由軟件是因爲所有軟件都該是自由的”。

1998年初,這種新思潮促使網景公司(Netscape Communications)公佈了其Mozilla瀏覽器的源碼。媒體對此事件的關注促成了Linux在華爾街的上市,推動了1999-2001年間科技股的繁榮。事實證明,此事無論對黑客文化的歷史還是對Unix的歷史都是一個轉折點。

8、Unix 的歷史教訓
下面的文字出自《The Art of Unix Programming》(Unix編程藝術)。令今天我們所有人所反思。

在Unix歷史中,最大的規律就是:(看看《誰寫了Linux》你就會知道這一規律)

距開源越近就越繁榮。任何將Unix專有化的企圖,只能陷入停滯和衰敗。

回顧過去,我們早該認識到這一點。1984年至今,我們浪費了十年時間才學到這個教訓。如果我們日後不思悔改,可能還得大喫苦頭。

雖然我們在軟件設計這個重要但狹窄的領域比其他人聰明,但這不能使我們擺脫對技術與經濟相互作用影響的茫然,而這些就發生在我們的眼皮底下。即使Unix社區中最具洞察力、最具遠見卓識的思想家,他們的眼光終究有限。對今後的教訓就是:過度依賴任何一種技術或者商業模式都是錯誤的——相反,保持軟件及其設計傳統的的靈活性纔是長存之道。

另一個教訓是:別和低價而靈活的方案較勁。或者,換句話說,低檔的硬件只要數量足夠,就能爬上性能曲線而最終獲勝。經濟學家Clayton Christensen稱之爲“破壞性技術”,他在《創新者窘境》(The Innovator’s Dilemma)[Christensen]一書中以磁盤驅動器、蒸汽挖土機和摩托車爲例闡明瞭這種現象的發生。當小型機取代大型機、工作站和服務器取代小型機以及日用Intel機器又取代工作站和服務器時,我們也看到了這種現象。開源運動獲得成功正是由於軟件的大衆化。Unix要繁榮,就必須繼續採用吸納低價而靈活的方案的訣竅,而不是去反對它們。

最後,舊學派的Unix社區因採用了傳統的公司組織、財務和市場等命令機制而最終未能實現“職業化”。只有癡迷的“黑客”和具有創造力的怪人結成的反叛聯盟才能把我們從愚蠢中拯救出來——他們接着教導我們,真正的專業和奉獻精神,正是我們在屈服於世俗觀念的“合理商業做法”之前的所作所爲。

9、Unix 族譜
Unix 的故事仍舊延續着……,許多網站也爲這段歷史留下記錄。一個詳細記錄Unix歷史的網站,這個網站忠實記載着1969~2005 年Unix發展的大事,而且還有 PDF 檔案可供下載,上面有一個龐大的UNIX家族版本樹,讓人歎爲觀止。網站的首頁陳列每個時期Unix的歷史,也代表着無數工程師的心血與努力。

10、Unix 的特點
現在的文獻中提到Unix基本上是說,由Ken Thompson和Dennis Ritchie共同開發的。而通過歷史我們也能發現,Unix的主要是由Ken Thompson寫下的。但在學術界,Dennis Ritchie的名字往往被排在了Ken Thompson前面的。這就是因爲,Dennis Ritchie不但發明了C語言,而且當時他設計Unix操作系統的設計思想,影響了整個世界,直到今天。

當時,他們開發 UNIX,沒有正式立項,是 Ken Thompson 和 Dennis Ritchie 等少數幾個人偷偷乾的,如果一切都要從頭從新設計,那幾乎是不可能的。所以,Unix吸取與借鑑了Multics的經驗,如內核,進程,層次式目錄,面向流的I/O,把設備當作文件,……等等。但是Unix在繼承中又有創新,比如Unix採用一種無格式的文件結構,文件由字節串加組成。這帶來兩大好處:一是在說明文件時不必加進許多無關的“填充物”,二是任何程序的輸出可直接用作其他任何程序的輸入,不必經過轉換。後面這一點叫做“管道”(piping),這就是Unix首創的。此外,像把設備當作文件,從而簡化了設備管理這一操作系統設計中的難題,雖然不是UNIX的發明,但是實現上它採用了一些新方法,比Multics更高明一些。

下面是Unix的特點:(30多年過去了,這些東西早已變成經典)

◦Everything (including hardware) is a file

◦所有的事物(甚至硬件本身)都是一個的文件。

◦Configuration data stored in text

◦以文本形式儲存配置數據。

◦Small, single-purpose program

◦程序儘量朝向小而單一的目標設計

◦Avoid captive user interfaces

◦儘量避免令人困惑的用戶接口

◦Ability to chain program together to perform complex tasks

◦將幾個程序連結起來,處理大而複雜的工作。

11、Unix的影響和哲學
Unix是第三次工業革命中計算機軟件領域最具代表性的產物。在這近40年中,由Unix造成的影響是最有深遠意義的。就我看來,Unix爲軟件領域帶來了至少以下有積極的東西,由這些東西所引發的直接或間接的事物更是舉不勝數。

軟件開發的若干哲學和思想。

全民參與推動軟件,代碼共享的模式。

開啓了黑客文化和開源項目。

免費和商業的完美結合的 Linux。

C語言,而後發展的C++,Java等等類C的編程語言和腳本。(參看《C語言的演變史》)

TCP/IP,其的Socket編程已成爲今天通用的網絡編程主流。(參看《到處都是Unix的胎記》)

不能不說,AT&T雖然發展了Unix,但今天Unix的混亂的局面也和AT&T 有着直接原因。但反過來說,如果沒有AT&T的反面教材,今天的GNU/Linux很有可能也不會出現。AT&T究竟是限制了Unix的發展,還是以反面示例促進了Unix社區,已不好評說。今天,軟件是商業化好還是開源好的爭論還在繼續,縱觀這幾十年來Unix的歷史,Linux的劃時代地出現。相信你會得出自己的結論。不管怎麼樣,Unix的經歷對計算機領域貢獻的不單單是技術,他給我們提供了豐富而生動的教材。特別是Unix引發的哲學,讓今天的我們依然受益不淺。

說到Unix爲我們所帶來的軟件開發的哲學,我必需要說一說。Unix遵循的原則是KISS(Keep it simple, stupid)。在https://en.wikipedia.org/wiki/Unix_philosophy上有很多的基本上大同小異的Unix哲學,都是很經典的。

Doug McIlroy 是認爲UNIX的哲學是這樣的:三條哲學,簡明扼要,就是這三條哲學貫穿着整個Unix世界。尤其是第一條“do one thing and do it well”真是相當精彩!

Write programs that do one thing and do it well。

Write programs to work together。

Write programs to handle text streams, because that is a universal interface。

只要是Unix的程序員,他們會比別的程序員在任何時候都會不停地強調着這三條哲學。

而《The Art of Unix Programming》總結了下面這些哲學,都是至理名言啊。

Rule of Modularity: Write simple parts connected by clean interfaces。

Rule of Clarity: Clarity is better than cleverness。

Rule of Composition: Design programs to be connected to other programs。

Rule of Separation: Separate policy from mechanism; separate interfaces from engines。

Rule of Simplicity: Design for simplicity; add complexity only where you must。

Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do。

Rule of Transparency: Design for visibility to make inspection and debugging easier。

Rule of Robustness: Robustness is the child of transparency and simplicity。

Rule of Representation: Fold knowledge into data so program logic can be stupid and robust。

Rule of Least Surprise: In interface design, always do the least surprising thing。

Rule of Silence: When a program has nothing surprising to say, it should say nothing。

Rule of Repair: When you must fail, fail noisily and as soon as possible。

Rule of Economy: Programmer time is expensive; conserve it in preference to machine time。

Rule of Generation: Avoid hand-hacking; write programs to write programs when you can。

Rule of Optimization: Prototype before polishing。 Get it working before you optimize it。

Rule of Diversity: Distrust all claims for “one true way”。

Rule of Extensibility: Design for the future, because it will be here sooner than you think。

X Windows 的設計者 Mike Gancarz 給出了下面九條哲學思想

Small is beautiful。

Make each program do one thing well。

Build a prototype as soon as possible。

Choose portability over efficiency。

Store data in flat text files。

Use software leverage to your advantage。

Use shell scripts to increase leverage and portability。

Avoid captive user interfaces。

Make every program a filter。

在今天,這種思想依然被傳承着,在影響着世界上各個角落的每一個程序員。

12、Unix痛恨者手冊
這裏還需要值得一提的是一本叫《The Unix-Haters Handbook》,中文譯做《Unix痛恨者手冊》。可以在這裏下載:http://research.microsoft.com/~daniel/uhh-download.html。其中以調侃的語氣聲討了Unix的種種不是。雖然這是十年前的一本書了,但還是值得一讀。這本書指出了許多Unix的設計錯誤,指出了種種看起來很合理的設計走向了荒謬,還這樣調侃了C語言——“如果說C語言給足了讓你上吊的繩子,那麼,C++在給了你足夠的繩子把你的鄰居全部捆起來之後,還給了你足夠的繩子讓你爲一艘小帆船裝上帆,最後你還有足夠的繩子把自己吊死在帆船的桅杆上”。呵呵,相當的尖酸刻薄吧。裏面有一句對操作系統的評價是這樣的:“The fundamental difference between Unix and the Macintosh operating system is that Unix was designed to please programmers, whereas the Mac was designed to please users。 (Windows, on the other hand, was designed to please accountants。”(Windows設計給會計人員?!連計算機用戶都不是了,呵呵)

不過,我可以感覺得到這本書的作者在書中對Unix的感情是比較複雜的,愛恨交加,在書的最後有這樣一句話“would anyone have spent this much time and effort writing about how much they hated Unix if they didn’t secretly love it? I’ll leave that to the readers to judge, but in the end, it really doesn’t matter: If this book doesn’t kill Unix, nothing will”。是的,如果Unix能夠存活這麼長的時間,那麼,不會有什麼東西可以把他消滅了。

從《Unix痛恨者手冊》這本書,再加上Unix的歷史,我們可以感到Unix的經歷的風風雨雨,在Unix上面出現有種種教訓,近40年的歷程,Unix歷經磨難,幾近夭折,一路走來的確很不容易,讓人由衷感嘆。今天的Unix,今天的軟件工業和以前相比已是不可同日而語。很大程度上,這些都要歸功於這個充滿蒼桑的Unix。

後記
在中國,我們被微軟 (Microsoft)所創造的文化所籠罩裏。就在Unix出現革命性的轉變,在Unix影響計算機世界文化的那幾年裏,科班出生專業開發人員學習的是 MS-DOS 和微軟的文化,我們猶如一個井底之蛙一樣,對外面的番·習天覆地的變化無動於衷。微軟創造的文化在我們這裏尤其地根深蒂固,我們幾乎忘記了另外一邊的Unix(參看《Unix 40年:Unix年鑑》、《Unix 40年:昨天,今天和明天》)。

在那充滿激情的 Unix 的歲月裏,大夥爲了科研目的或個人興趣在Unix上進行各種開發,並且不計較金錢利益,將這些源碼公開,互相共享。在那裏,開發和自由成爲主題,正因爲如此,當今的世界才如此豐富多采。在40年Unix文化和技術積澱的裏面,蘊涵着比較純正的計算機文化和思想。

縱觀整個 Unix 的歷史過程中,許許多多的程序員、工程師前輩們在Unix中所摸爬滾打,他們的辛勤地、他們嘔心瀝血地跟隨Unix,努力建立一個繁榮的計算機世界的文明。Unix不是一個簡簡單單的操作系統。有人說,Unix是程序員設計給程序員的,一點沒錯。Unix的近40年曆史造就了它的博大精深,它給程序員們帶來的絕不僅僅只是技術上的知識。它的失誤,它的無奈,它的精神,它的榮耀,它從技術和思想上都啓迪着我們。對於程序員來說,學習Unix就等同於向前輩程序學習。無論你是什麼樣的程序員,你都應該瞭解Unix,這是開發人員的根,前面的開發者造就了它,而它又在引領後面的開發人員,它是前輩程序員們交給我們的一份禮物,一個接力棒,它是開發人員賴以生存的土壤,是上一輩程序員留給我們這一代程序員開啓未來的鑰匙。Unix就像一個程序員教父一樣,理當受到我們的尊敬和崇拜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章