App下載

Linux的發(fā)展史:Stallman的GNU計(jì)劃

猿友 2020-08-04 11:41:48 瀏覽數(shù) (3579)
反饋

本文要說(shuō)的是一個(gè)傳奇人物————Richard Matthew Stallman,就是下圖里這位不愛(ài)刮胡子的大叔。

Richard Matthew Stallman

Richard Matthew Stallman,1953年出生在美國(guó)紐約曼哈頓地區(qū)。在他生命的前十幾年中,他并沒(méi)有表現(xiàn)出什么過(guò)人的地方,但那是因?yàn)樗麤](méi)遇到一個(gè)叫做電腦的東西。

1 快樂(lè)的自由

高中的一個(gè)暑假,他去給IBM打工,花了兩周的時(shí)間用Fortran語(yǔ)言編了一個(gè)數(shù)據(jù)處理的程序。這是他第一次接觸計(jì)算機(jī),或許就是這次相遇,確定了他未來(lái)行走的方向。1971年,他考上了哈佛大學(xué),上學(xué)的同時(shí),他還受聘于麻省理工學(xué)院的人工智能實(shí)驗(yàn)室,成為了一名職業(yè)黑客(黑客這個(gè)詞沒(méi)有貶義)。在人工智能實(shí)驗(yàn)室期間,他可沒(méi)少干活,開(kāi)發(fā)了很多有用的軟件,其中最著名的就是Emacs編輯器。Emacs是一個(gè)可與Vi相抗衡的強(qiáng)大的編輯器。兩者的操作方式完全不同,但同樣強(qiáng)大,各自用自己獨(dú)有的方式,提高著人們的編輯效率。直到今天,仍然有人爭(zhēng)論到底Emacs好還是Vi好,信奉Emacs的人和信奉Vi的人形成了兩個(gè)幫派,這兩個(gè)幫派經(jīng)常在互聯(lián)網(wǎng)上用鼠標(biāo)鍵盤(pán)相互灌水拍磚,拼個(gè)你死我活。哦,扯遠(yuǎn)了,咱還回來(lái)說(shuō)Stallman。

那時(shí)候的Stallman在人工智能實(shí)驗(yàn)室里工作得非常愉快,大家有BUG同當(dāng),有代碼共享。那時(shí)候的軟件工程師的世界,是一個(gè)“人人為我,我為人人”的理想世界。因?yàn)樽畛醯挠?jì)算機(jī)軟件沒(méi)有什么開(kāi)源不開(kāi)源的概念,那時(shí)候的軟件天生就是自由的!賣(mài)計(jì)算機(jī)的同時(shí)會(huì)附帶軟件,包括軟件的源代碼和文檔。計(jì)算機(jī)廠(chǎng)商賣(mài)的主要是計(jì)算機(jī)的硬件,軟件只是附屬品而已。用戶(hù)可以根據(jù)自己的需要去修改軟件,與別人分享軟件。總之,軟件是用戶(hù)花錢(qián)買(mǎi)硬件時(shí)附帶著買(mǎi)來(lái)的,用戶(hù)想怎么玩就怎么玩。軟件開(kāi)發(fā)者的目的,也不是靠軟件賺錢(qián),而是靠軟件支撐起硬件的功能,然后靠賣(mài)硬件賺錢(qián)。

2 自由逐漸遠(yuǎn)去

然而隨著技術(shù)的發(fā)展,軟件逐漸脫離硬件成為一個(gè)獨(dú)立的產(chǎn)業(yè),很多軟件慢慢地只提供二進(jìn)制代碼而不提供源代碼了,這就意味著你不能修改它,并且多數(shù)軟件還規(guī)定最終用戶(hù)沒(méi)有二次分發(fā)的權(quán)利。也就是說(shuō),這東西你買(mǎi)了,只能你用,你再給別人就不行!這就好像我買(mǎi)了把菜刀,然后賣(mài)菜刀的告訴我“你這把菜刀不許借給你的鄰居用,也不許私自給菜刀換刀把,否則我就告你!”

Stallman當(dāng)時(shí)就遇到了類(lèi)似這樣的菜刀問(wèn)題。那時(shí)候,他們實(shí)驗(yàn)室買(mǎi)的第一臺(tái)打印機(jī)附帶有驅(qū)動(dòng)程序的源代碼。他們那的黑客們可以隨意修改這個(gè)驅(qū)動(dòng),根據(jù)自己的需要添加些小功能,改改BUG之類(lèi)的,這為他們的工作帶來(lái)了很大的方便。后來(lái),實(shí)驗(yàn)室又買(mǎi)了一臺(tái)激光打印機(jī),這次廠(chǎng)商只提供了二進(jìn)制的打印機(jī)驅(qū)動(dòng)程序,它是實(shí)驗(yàn)室里僅有的一個(gè)沒(méi)有源代碼的軟件。Stallman很不喜歡這樣的產(chǎn)品,然而他沒(méi)有選擇,只能沉默。

后來(lái)出于工作的需要,Stallman想修改一下這個(gè)驅(qū)動(dòng)程序,但是不行,沒(méi)源代碼啊。Stallman聽(tīng)說(shuō)卡內(nèi)基·梅隆大學(xué)有這個(gè)打印機(jī)的驅(qū)動(dòng)程序源代碼,他就去了那里,跟他們套近乎:“那啥,大家都是道上混的,誰(shuí)還沒(méi)個(gè)"馬高蹬短"的時(shí)候?是兄弟的拉哥們兒一把,我也沒(méi)啥事兒,就是我們那打印機(jī)老丟字,老把一些關(guān)鍵的字打成口口,我估計(jì)是驅(qū)動(dòng)的問(wèn)題,聽(tīng)說(shuō)你們這有這驅(qū)動(dòng)的源代碼,能不能給我拷一份?”對(duì)方辦事效率還是挺高的,很干脆地拒絕了他。因?yàn)樗麄兒蛷S(chǎng)商簽署了一份保密協(xié)議,協(xié)議要求他們不能向別人拷貝源代碼。Stallman頓時(shí)感到他們背叛了自由的計(jì)算機(jī)社團(tuán),他非常生氣,但是他沒(méi)有辦法改變什么,只好又選擇了沉默。

這只是一件小事,只是一個(gè)時(shí)代的縮影。那個(gè)時(shí)代,正處在軟件向私有化轉(zhuǎn)變的過(guò)程中,也是軟件逐漸商業(yè)化的過(guò)程。越來(lái)越多的軟件選擇了不開(kāi)放源代碼,不允許二次分發(fā)的發(fā)布方式。Stallman身邊的同事,一個(gè)一個(gè)地跑到開(kāi)發(fā)私有軟件的公司去打工了,他們不再相互分享,不再相互交流。Stallman問(wèn):“你們那軟件的查找算法做得不錯(cuò)啊,怎么實(shí)現(xiàn)的?”“對(duì)不起,無(wú)可奉告?!薄澳銈兊奈臋n工具效率挺高啊?!薄皩?duì)不起,商業(yè)機(jī)密?!薄鎸?duì)這一切,Stallman又能說(shuō)什么呢?他還是只有沉默。

3 不在沉默中爆發(fā),就在沉默中滅亡

Stallman爆發(fā)了!他不能容忍軟件世界里清新自由的空氣被私有軟件污染;他不能容忍被剝奪按照自己的需求修改軟件的權(quán)利和樂(lè)趣;他不能容忍自己買(mǎi)條皮帶尺寸不夠時(shí),自己竟然連在上面多打個(gè)洞的權(quán)利都沒(méi)有!于是,他就爆發(fā)了。

他要重現(xiàn)當(dāng)年那“人人為我,我為人人”的合作互助的軟件世界;他要把使用、復(fù)制、研究、修改、分發(fā)軟件的權(quán)利還給軟件世界的每一個(gè)人民;他要用自己的行動(dòng)告訴人們,軟件天生就該是自由的!

他要開(kāi)辟一個(gè)新的世界,哪怕是一個(gè)人在戰(zhàn)斗!于是,一個(gè)宏偉的計(jì)劃——GNU計(jì)劃在他心中產(chǎn)生了。它的目標(biāo)是創(chuàng)建一套完全自由的操作系統(tǒng)。因?yàn)椴僮飨到y(tǒng)是電腦中最重要、最基礎(chǔ)的軟件,要?jiǎng)?chuàng)造自由的軟件世界,自然先要有一套自由的操作系統(tǒng),然后再以此系統(tǒng)為中心,開(kāi)發(fā)各種各樣自由的軟件。1983年,Stallmannet.unix-wizards新聞組上公布了GNU計(jì)劃,這個(gè)計(jì)劃的標(biāo)志是一頭角馬(也就是非洲牛羚),就是下圖所示的這個(gè)。

GNU計(jì)劃的圖標(biāo)

提示:*GNU 是 “GNU is Not UNIX”的遞歸縮寫(xiě),Stallman表示這個(gè)詞應(yīng)該讀作/'gnu:/(發(fā)音類(lèi)似“革奴”),以區(qū)別于表示非洲牛羚的單詞gnu(發(fā)音與“new”相同)。

這個(gè)計(jì)劃要?jiǎng)?chuàng)造一套自由的類(lèi)UNIX操作系統(tǒng)。系統(tǒng)本身及系統(tǒng)上的軟件都是自由軟件,它們可以被免費(fèi)獲取,隨意使用、修改和再分發(fā)。并且每個(gè)人都可以獲得這個(gè)系統(tǒng)全部的源代碼,每個(gè)人都可以為完善這個(gè)系統(tǒng)作出自己的貢獻(xiàn)。這個(gè)系統(tǒng)要使用與UNIX相同的接口標(biāo)準(zhǔn),這樣,就可以由不同的人,分期分批地創(chuàng)作操作系統(tǒng)的不同部分而不必?fù)?dān)心相互之間協(xié)同工作的問(wèn)題。

4 實(shí)現(xiàn)GNU夢(mèng)想

為了實(shí)施GNU計(jì)劃,1985年,Stallman又創(chuàng)建了自由軟件基金會(huì)。基金會(huì)的主要工作就是執(zhí)行GNU計(jì)劃,開(kāi)發(fā)更多的自由軟件。1989年,Stallman與基金會(huì)的一群律師們起草了廣為使用的《GNU通用公共協(xié)議證書(shū)》也就是GPL協(xié)議,以此協(xié)議來(lái)保證GNU計(jì)劃中所有軟件的自由性。到了1990年,GNU計(jì)劃中的這個(gè)系統(tǒng)已經(jīng)初具規(guī)模,有了很多優(yōu)秀的軟件。其中有很多是世界各地的黑客們無(wú)償提供的,也有一部分是利用自由軟件基金會(huì)的基金雇用程序員來(lái)開(kāi)發(fā)的,當(dāng)然,Stallman自己也身先士卒,開(kāi)發(fā)了Emacs、GCCGDB等重要軟件。當(dāng)他看著這些豐富的自由軟件的時(shí)候,感覺(jué)到那清新自由的空氣,終于又回來(lái)了,以后,人們就可以擁有一個(gè)可以自由使用、自由修改、自由分發(fā)的、自由的操作系統(tǒng)了!不過(guò)等一下,好像還差點(diǎn)什么,哦,還……差個(gè)內(nèi)核吧。

作為一個(gè)系統(tǒng),沒(méi)有內(nèi)核是不行的,這么重要的部件Stallman當(dāng)然不會(huì)忘記,所以才會(huì)有Hurd內(nèi)核。這個(gè)內(nèi)核被設(shè)計(jì)為一個(gè)遵守POSIX標(biāo)準(zhǔn)的微內(nèi)核。所謂微內(nèi)核,是相對(duì)于宏內(nèi)核來(lái)說(shuō)的。宏內(nèi)核就像我們現(xiàn)在的Linux內(nèi)核,是一個(gè)獨(dú)立的程序,里面包含了進(jìn)程管理、內(nèi)存管理、文件管理等功能。而微內(nèi)核則將一個(gè)內(nèi)核需要的功能盡量地簡(jiǎn)化并且拆分,運(yùn)行起來(lái)是幾個(gè)獨(dú)立的程序,有的專(zhuān)門(mén)負(fù)責(zé)進(jìn)程管理,有的專(zhuān)門(mén)負(fù)責(zé)內(nèi)存分配。內(nèi)核是一個(gè)系統(tǒng)的核心,所以至關(guān)重要,Stallman對(duì)Hurd的開(kāi)發(fā)也是精益求精,非常謹(jǐn)慎,以至于內(nèi)核的進(jìn)度有些落后于其他的系統(tǒng)軟件,當(dāng)其他軟件都已經(jīng)有比較優(yōu)秀的版本的時(shí)候,Hurd內(nèi)核依然不能夠走出實(shí)驗(yàn)室投入真正的使用。這種情況一直持續(xù)到1991年,另一位英雄的出現(xiàn)——不過(guò),這里先賣(mài)個(gè)關(guān)子,暫且不去說(shuō)他。

無(wú)論怎樣,到今天,Stallman理想中的自由世界,終于拉開(kāi)了那沉重的幕布,展現(xiàn)出了自由的光彩。而Stallman并不滿(mǎn)足,也確實(shí)沒(méi)有滿(mǎn)足的理由,這個(gè)自由的世界還需要成長(zhǎng),還需要更加豐富多彩,還需要有更多的人走進(jìn)這個(gè)世界中來(lái)。于是Stallman奔走于世界各地,告訴人們有這么一個(gè)自由的世界,號(hào)召人們加入這個(gè)世界,鼓勵(lì)人們?yōu)槭惯@個(gè)世界更加自由而付出自己的力量。他是一個(gè)執(zhí)著的苦行僧,為了他的夢(mèng)想,為了他的自由世界,他會(huì)一直走下去……

以上就是Linux的發(fā)展史,Stallman和他的GNU計(jì)劃。希望能擴(kuò)展大家的知識(shí)面,然后對(duì)Linux有興趣的同學(xué)可以看一下教程:

Linux教程:http://www.o2fo.com/linux/

Linux微課:http://www.o2fo.com/minicourse/play/linuxcourse

Linux就該這么學(xué):http://www.o2fo.com/linuxprobe/

0 人點(diǎn)贊