GNU/Linux與開源文化的那些人和事

jopen 9年前發布 | 24K 次閱讀 Linux

    文/劉軍民

本文只梳理大致的脈絡,不做詳盡的敘述。

一、計算機的發明

世上本無路,走的人多了,就有了路。世上本無計算機,琢磨的人多了……沒有計算機,一切無從談起。

三個人對計算機的發明功不可沒,居功至偉。阿蘭·圖靈(Alan Mathison Turing)、阿塔那索夫(John Vincent Atanasoff)、和馮·諾依曼(John von Neumann)。

圖靈從理論上證明了計算機的可行性;阿塔那索夫實踐了圖靈的理論;馮·諾依曼奠定了現代計算機的體系結構。

圖靈說這玩意兒應該可以做,已經被證明了;阿塔那索夫二話不說動手就做了一個;馮·諾依曼說應該這么做才更好。

圖靈功勞很大,死得很慘,只因他是同性戀。他的最后時刻是吃了一個沾有氰化鉀的蘋果。有人說蘋果公司的 Logo 是為了紀念圖靈,不可證。確定紀念圖靈的是“圖靈獎”,計算機研究領域的最高獎項,由美國計算機協會于 1966 年設立。

阿塔那索夫名氣不大,享年較長。世界上第一臺計算機是阿塔那索夫領導發明的 ABC 計算機,并非我們很多書上說的 ENIAC。

馮·諾依曼長得帥,聰明,研究領域廣,故事很多。今天我們使用的計算機都被打上了一個的深深的烙印,這個烙印就叫馮·諾依曼體系結構。

關于計算機之父有很多說法,版本不一,這三個人都可以稱為計算機之父。曾有人奉馮·諾依曼為計算機之父,馮·諾依曼說不敢當,殊榮當歸圖靈。

早年全世界的計算機中心在美國普林斯頓大學,群星閃耀,璀璨奪目。馮·諾依曼曾在此工作,圖靈曾在此學習,他倆在普林斯頓的花園里聊過天。馮·諾依曼想讓圖靈給他當助手,被拒絕了。

二、最初的 Unix 和C語言

早期計算機個頭大,電子元器件多,開動一次電費都不少,使用起來也很不方便。別的不說,一次只能干一件事就讓人受不了。先煮粥,半小時之后粥煮好了再炒菜。花老多錢雇的廚師,明明煮粥的時候可以炒菜好不好?一次做一件事,就叫單任務,比較笨。

受不了就要想辦法,就有人提出了操作系統的想法。操作系統就是想讓計算機用起來更方便,能發揮更大的作用。

1965 年,MIT、貝爾實驗室和美國通用電氣公司合作準備搞個超級操作系統,取了個霸氣的名字:Multics (Multiplexed Information and Computing System),多路復用信息和計算機系統。能讓多個人可以同時干很多事,也叫多用戶多任務操作系統。

Multics 名字挺好,事沒干成,目標過于龐大,結果壯志未酬。

1969 年,Multics 項目進展緩慢,被迫停止,參與項目的兩個人 Ken Thompson 和 Dennis Ritchie 也閑了下來。他們都是貝爾實驗室的人。沒活干了,就打游戲。他們倆找了一臺破電腦準備玩以前開發的一個游戲。

把游戲移植到一臺閑置機器(PDP-7)的過程中,實現了一個簡單的操作系統。到了 1970 年,這個簡單的系統已經可以使用,但只能同時兩個人使用。有人調侃他們,說你們這個破玩意離 Multics 差遠了,就叫 Unics(UNiplexed Information and Computing Service)吧。Unics 是 Multics 的反義,與其說調侃他倆,不如說在調侃 Multics。Ken Thompson 稍微把名字修改了一下,Unix。

自此,Unix 紀元開始。1970 年是為 Unix 元年,今年已經是 Unix45 年。Unix 時間戳從 1970 年 1 月 1 日開始計算和 Unix 誕生的時間有莫大關系。

早年的操作系統最早是用匯編語言寫的,匯編語言低級落后,寫起來很痛苦。開發 Unix 過程中,Thompson 發明了B語言,Ritchie 在B語言基礎做了改進,稱之為C語言。

C 語言發明后,Ritchie 和貝爾實驗室的同事 Brian W. Kernighan 合著一本C語言的書,后來被稱為K&R。Kernighan 名氣沒 Ritchie 大,但并非凡人,Unix 命令 Awk 中的K就是 Kernighan。

接下來 Thompson 和 Ritchie 用C語言重新編寫了 Unix 系統。結果相當滿意,Unix 可以見人了。1974 年,Dennis M. Ritchie 和 Ken Thompson 發表了第一篇關于 UNIX 的論文《The UNIX Time Sharing System》,從此 Unix 廣為人知。

這幾年世界計算機的中心到了貝爾實驗室,Thompson、Ritchie、Kernighan 還有好多。Thompson 和 Ritchie 后來都獲得了圖靈獎。

有心栽花花不活,無心插柳柳成蔭。Multics 目標宏偉,沒干成,Unix 和C語言剛開始并沒想那么多,而且還是業余時間的作品,終成偉業!

Unix 和C語言是計算機領域的常青樹,歷久彌新。從發明至今一直保持著旺盛的生命力,從發明至今都基本保持原貌,足見偉大!

三、混亂的 Unix 發展過程

Unix 一經出現,引起了眾人的關注,很多人找 Thompson 和 Ritchie 要 Unix 的源代碼。那是個開放的時代,那是個相互學習研究的時代,把程序的源碼分享給別人是很平常的事。一份份的 Unix 源碼被流傳到各個實驗室、學校、公司。

加州大學伯克利分校有一幫熱衷于 Unix 的人,他們拿到源碼后不斷研究,不斷改進,大大推進了 Unix 的發展。

這個階段 Unix 發展有兩條主線,一條在貝爾實驗室內部,另一條就在伯克利分校。伯克利分校的成果很輝煌,著名的 TCP/IP 協議在 Unix 上的實現就是他們搞出來的。后來把他們搞的這套 Unix 稱為 BSD(Berkeley Software Distribution)。

伯克利分校一時風光無兩,最杰出的一位是 Bill Joy。Bill Joy,Vi、Csh 等等一系列軟件的作者,Sun 公司的創始人。沒有 Sun 公司,就沒有今天的 Java 語言。

Unix 剛誕生的時候,貝爾實驗室受反壟斷法所限,不能從事計算機業務。其實也并沒想到 Unix 發展勢頭如此之好。

GNU/Linux與開源文化的那些人和事

Unix 發展過程圖

等到 1983 年,貝爾實驗室的母公司 AT&T已經被強制拆分為幾個小公司,不再受反壟斷法的限制。這時,AT&T發布了 Unix 最新版 System V,宣布從此 Unix 只能商業使用,不再開放源代碼。AT&T想用 Unix 賺大錢。

BSD 那邊受到了很大影響,他們不想急著賺錢,他們想開放源碼。沒辦法,伯克利分校決心把 BSD 當中受到影響的源碼重新寫過。從伯克利分校出來的幾位同學成立了一家公司,專門開發 BSD 項目。直到有一天,他們宣布 BSD 當中再沒有最初來自貝爾實驗室的源碼。AT&T不買賬,告你,起訴,打官司。

這是一場漫長的官司,官司尚未打完,Unix 版權就被倒賣了好幾次。買版權的好幾家公司繼續和 BSD 打官司,幾家公司相互也打官司。

等到硝煙散盡,BSD 終究推出了完全屬于自己的 Unix,因為版權的問題,不能再叫 Unix,只能叫類 Unix 系統。

BSD 的類 Unix 系統是 FreeBSD、MacOS 的前身。今天使用的蘋果電腦,iPhone 手機上的操作系統都是從 BSD 這一支上發展而來。

漫長的官司耗盡了人們對 BSD 的熱情,也讓 BSD 錯過了最好的發展機會。后來的 FreeBSD、NetBSD、OpenBSD 都是從 BSD 分化而來,免費,開源,優秀,但再沒挽回曾經的榮光,因為已經有了 Linux。

四、斯托曼博士的 GNU 計劃

AT&T想靠 Unix 賺錢的時候,不止是 AT&T,很多商業公司都希望通過軟件賺錢。不再免費,不再開放源代碼,不再相互通過源代碼學習研究。

曾經是多么好的時代,怎么現在就變得只認錢了呢?這一切讓一個人很不滿意。他曾經看到一個系統有問題,想要一份源碼拿來幫修改一下,別人冷笑以對。

世風日下,他要向這個令人沮喪的時代挑戰,他要還一個開源、免費的系統與人世間。請記住這個人的名字,理查德·斯托曼(Richard Matthew Stallman)博士。

斯托曼是老牌黑客,Emacs 的作者。Emacs 和前面提到的 Vi 是計算機領域中兩大強悍的編輯工具,Emacs 和 Vi 哪個更強是最容易引起爭議的話題之一。為了少吵架,千萬別和寶馬車主說奔馳好。

斯托曼博士長頭發,大胡子,不修邊幅,一直單身。他一心投入自由軟件運動,他創建了自由軟件基金會(FSF)。他雄心勃勃地提出了一項偉大的計 劃,GNU(GNU's not Unix)計劃。Not Unix,不是 Unix,是自由的、免費的、開源的、像 Unix 一樣好用的系統。

GNU/Linux與開源文化的那些人和事

理查德·斯托曼博士

GNU 起初進展很順利,GLibc、GCC、GDB,這一系列的操作系統必備軟件都有條不紊地在進展。所有的“G”來自 Gnu 的首字母。為什么叫“G”,斯托曼博士說當時他覺得好玩,而且他小時候聽過一首歌,很喜歡,歌名是《The Gnu》。

完全搞個操作系統看來也并非易事,GNU 完成了一大堆軟件的時候才意識到遇到了大麻煩。GNU 系統的內核項目 Hurd 遲遲不能令人滿意。內核之于操作系統,就像發動機之于汽車,必不可缺。

五、Linux 出世記

1991 年,Linus Torvalds 尚是芬蘭赫爾辛基大學的一名學生,他在學校學操作系統的課程,他也想搞個操作系統玩玩。他當時已經在使用 Gnu 項目的 Bash、GCC 等軟件。受 GNU 的影響,把他自己開發的一個簡陋的操作系統內核放到了互聯網上。

這個內核系統就是 Linux,Linus's Unix,Linus 的 Unix。名字并非 Linux 所取,他一貫的風格是取個調侃的名字,但當時管理員說 Linux 挺好,名字就這么定了。

Linux 放到網上后引起了很多人的興趣,他們陸續通過互聯網加入到 Linux 開發過程中。1993 年,大約有 100 多名程序員參與了 Linux 內核代碼。這時已經是互聯網的時代,他們不用相識,不用謀面,通過網絡討論,通過網絡協作,推進著 Linux。

1994 年 3 月,Linux1.0 發布,Linux 已經成為一個基本可用的內核。從此 Linux 就一直沒有踩過剎車,一步步從幼苗長成參天大樹。

Linus 小時候被企鵝攻擊過,他給 Linux 定 Logo 的時候選中了企鵝,真不知道這是什么邏輯。長得像企鵝的除了 QQ,還有 Linux。

Linux 開創了一種前所未有的軟件開發模式。多人協作,代碼隨時提交,有問題及時修改,所有參與人員并非精英,而是一群狂熱的支持者。前前后后無數人參與了 Linux 項目的開發,組織不太嚴謹,有很多的爭吵和討論。Linus 經常寫代碼,偶爾扮演仲裁的角色,而非傳統意義上的領導。

后來開源運動的鼓吹手 Eric Raymond 寫了一篇文章《大教堂與集市》來分析 Linux 的開發模式。大教堂要設計好圖紙,動用優秀的工匠,有序的工程計劃才能修筑,鬧哄哄無序如菜市場的一撥人能不能修一座大教堂?答案是可以的,因為他們建成了。

Linus 后來坦言,他開發 Linux 時不了解還有 FreeBSD 等項目,如果知道了可能他就不會動手寫 Linux 了。那時各種 BSD 系統正在官司的陰影籠罩下,某種程度了也促進了 Linux 的發展。

他們一開始也沒什么圖紙,一邊修建,一邊請人參觀,出了問題隨時修復,有的地方干脆推倒重來。他們沒有嚴密的組織,只有大體的分工。隨時有人在使用教堂,給他們提出各種意見。他們建的教堂已經足夠好,他們建的教堂一直沒有竣工,會一直修建下去。

Eric Raymond 這個人不得不提,早年和斯托曼博士一起共事,還幫斯托曼博士修改過 Emacs 的代碼。他比寫程序更擅長的是演講和寫文章。《大教堂與集市》是開源文化的抗鼎之作。斯托曼博士是開源運動的精神領袖,Raymond 是開源運動的布道師和理論家。

六、Linux 各種發行版

一邊 GNU 項目為內核苦苦掙扎,一邊 Linux 內核項目橫空出世,這不天作之合么?不錯,手快的人來不及同情斯托曼博士的痛苦,把 GNU 一大堆項目和 Linux 攢在一起搞了個新系統,GNU/Linux。

好了,終于大家可以拿去用了,可以用一個完全免費、源碼開放的系統了。

今天很多人把使用的系統叫 Linux,很不公平,是對 GNU 工作的漠視。正確的叫法是 GNU/Linux。

有了 GNU/Linux 還不是一切,只能是一個基礎的操作系統,要想用得更好還缺很多軟件。就像有了 Windows 系統,沒有 Word,沒有 Excel,沒有瀏覽器,沒有游戲,可干的事并不多。

所幸的是 GNU/Linux 誕生的年代,已經有了很多優秀的開源項目,他們和 GNU 無關,有的是個人開發,有的是組織開發,都遵循免費開源的理念。這些開源項目有 Apache、Perl、Python、Vim、TeX 等等。

攢系統的人干脆一股腦攢了起來,就是所謂的 GNU/Linux 的發行版。最早攢 GNU/Linux 系統的公司是 Redhat,后來陸續一大堆 GNU/Linux 的發行版,Slackware、Mandrake、Gentoo、Debian、Ubuntu 等等。有的已經死了,有的還活得挺好。

所謂 GNU/Linux 發行版,就是攢好的一套 GNU/Linux。選用 GNU 項目中的基礎軟件,加上 Linux 內核,再找一堆開源免費,版權協議許可的軟件,最后做個安裝程序,就齊活了。更好的發行版大體就是考慮的更周全些,軟件包的更新、安裝、卸載更方便些。

能不能自己動手攢一個 GNU/Linux 的發行版?當然可以,Linux From Scratch,網上的一個項目,教你一步一步從頭打造一個屬于自己的 GNU/Linux 發行版。

2002 年,南非商人 Mark Shuttleworth 花了兩千萬美金,搭乘俄羅斯的宇宙飛船去了一趟太空。次年,他成立了 Canonical 公司,致力于開源文化的推廣,推出了 GNU/Linux 發行版 Ubuntu。有錢人辦事就是不一樣,Ubuntu 做得太好了,GNU/Linux 用戶紛紛投靠,Ubuntu 基本一統 GNU/Linux 發行版的江湖。

五、GNU/Linux 和開源文化的背后

GNU/Linux 來了雖然沒成為大多數人電腦里的系統,但每個人都離不開它。諸多互聯網公司的服務器里都跑著 GNU/Linux,名單不完全確認,Google、非死book、淘寶、百度、騰訊、小說閱讀網等等。

大多人使用的安卓手機的系統也是基于 Linux 內核。

GNU/Linux 的繁榮有宏偉的規劃,有個人的努力,也有很多無形的力量在起著作用。

沒有 Unix 就沒有 GNU/Linux,是 Unix 給予了偉大的啟示。

沒有C語言就有沒有 GNU/Linux,C語言簡單,優雅,介于高級語言和低級語言之間,開發系統軟件的首選編程語言。

沒有一系列 Unix 標準的制定就沒有 GNU/Linux 的繁榮。標準就是“車同軌、書同文、統一度量衡”,秦始皇可算最早的標準制訂者。遵循 Posix 標準為 GNU/Linux 發展鋪平了道路。

沒有互聯網就沒有 GNU/Linux,GNU/Linux 不是一個人在開發,是全球無數人協作的結果。如果沒有互聯網實在不可想象。當然,GNU/Linux 也反哺了互聯網,無數互聯網公司采用 GNU/Linux 搭建服務器,GNU/Linux 也促進了互聯網的繁榮。

沒有斯托曼博士的努力,就沒有 GNU/Linux。他的功勞不僅是創建 GNU 組織,也不僅是編寫 Emacs、GCC、GDB,他的精神感召著無數人為開源運動做貢獻。

當然還有 Raymond 的振臂高呼,搖旗吶喊。

還有 GNU/Linux 誕生之前就開發開源項目的人和組織。Larry Wall 因為懶,整天被報表搞得焦頭爛額,發布了 Perl 語言;高德納教授因為對排版工人不滿意,十年時間停止重要工作,發明了偉大的排版軟件 TeX;Guido 為了打發圣誕節的無聊,編寫了新的腳本語言 Python……

GNU/Linux 發布之后,在前輩們的感召下無數人接受了開源的思想和理念,接受了開源文化的洗禮,興起了開源文化運動。無數為開源項目做出貢獻的人和組織,他們發布了 PHP、MySQL、Ruby、Node.js、X.Org、Gnome、KDE……他們豐富了 GNU/Linux,他們進一步推動了開源文化運動,他們繼續感召著別人。

KDE(Kool Desktop Environment)的初衷是想開發一套易用的桌面系統。Windows 系統就是一種桌面,使用方便,不是像程序員整天對著黑乎乎的屏幕工作。桌面系統要有瀏覽器,他們就分了一個小組 KHTML 來開發瀏覽器。全世界能開發瀏覽器核心的也沒幾家,KDE 做到了。后來蘋果公司和微軟鬧別扭,想自己開發瀏覽器,就是在 KHMTL 的基礎之上開發了自己的瀏覽器 Safari。KHTML 的瀏覽器核心模塊叫 Webkit。Google 推出安卓手機時瀏覽器也是基于 Webkit 開發的。

今天的 iPhone 手機和安卓手機的瀏覽器都是 Webkit 內核。

各種版權許可協議的制訂也為 GNU/Linux 的發展鋪平了道路,其中就有 GNU 的 GPL、LGPL,還有 Apache License、BSD 協議。不可能每個人都有一套自己開源協議項目的版權協議,已經制訂好的版權許可協議使得軟件更好地傳播。

其實開源并非自由,有人說 GPL 是用自由抹殺自由。GPL 許可要求任何含有 GPL 許可的軟件發布時必須開放源碼。BSD 和 Apache License 相對比較寬松,算是準自由軟件。

版本管理軟件對 GNU/Linux 的發展和開源文化運動也功不可沒。Linux 內核開發起初使用的是商用版本管理軟件,某天 Linus Torvalds 先生不開心了,就自己動手搞了一個。他好取自嘲調侃的名字,命名為 Git,意為沒什么用的東西。

Git 可不是沒什么用,太好用了,Linux 內核源碼從此都用 Git 管理。Git 免費、開源,Git 成就了一家偉大的網站 github.com,偉大的源碼項目托管網站。很多開源項目紛紛把源碼托管到了 Github 上。

GNU/Linux 不朽,開源運動不朽!

六、后記

從最初安裝 Redhat Linux 起,陸續折騰過多種 GNU/Linux 發行版。后來萌生念頭,想寫一本 GNU/Linux 和開源文化的書,種種原因,一直未能如愿。

作為 GNU/Linux 和開源運動的追隨者,書不知何時能寫完,這篇文章做個紀念。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!