鳥哥的Linux私房菜2018簡(jiǎn)體化 第一章(1)、Linux是什么與如何學(xué)習(xí)

眾所周知的,Linux的核心原型是1991年由托瓦茲(Linus Torvalds)寫出來(lái)的,但是托瓦茲為何可以寫出Linux這個(gè)操作系統(tǒng)?為什么他要選擇386的電腦來(lái)開發(fā)?為什么Linux的發(fā)展可以這么迅速?又為什么Linux是免費(fèi)且可以自由學(xué)習(xí)的?以及目前為何有這么多的Linux發(fā)行版本(distribution)呢?了解這些東西后,才能夠知道為何Linux可以免除專利軟件之爭(zhēng),并且了解到Linux為何可以同時(shí)在個(gè)人電腦與大型主機(jī)上面大放異彩!所以,在實(shí)際進(jìn)入Linux的世界前,就讓我們來(lái)談一談這些有趣的歷史故事吧!^_^

1.1 Linux是什么

我們知道Linux這玩意是在電腦上運(yùn)行的,所以說(shuō)Linux就是一組軟件。問(wèn)題是這個(gè)軟件是操作系統(tǒng)還是應(yīng)用軟件?以及Linux可以在哪些種類的電腦硬件上運(yùn)行?而Linux源自哪里?為什么Linux還不要錢?這些我們都得來(lái)談一談!免得下次人家問(wèn)你,為什么復(fù)制軟件不會(huì)違法時(shí),你會(huì)答不出來(lái)?。_^


1.1.1? Linux是什么?操作系統(tǒng)/應(yīng)用程序?

我們?cè)诘诹阏隆⒂?jì)算機(jī)概論里面有提到過(guò)整個(gè)電腦系統(tǒng)的概念,電腦主機(jī)是由一堆硬件所組成的,為了有效率的控制這些硬件資源,于是乎就有操作系統(tǒng)的產(chǎn)生了。操作系統(tǒng)除了有效率的控制這些硬件資源的分配,并提供電腦運(yùn)行所需要的功能(如網(wǎng)絡(luò)功能)之外,為了要提供程序設(shè)計(jì)師更容易開放軟件的環(huán)境,所以操作系統(tǒng)也會(huì)提供一整組系統(tǒng)調(diào)用接口來(lái)給軟件設(shè)計(jì)師開發(fā)用喔!

知道為什么要講這些了嗎?嘿嘿!沒(méi)錯(cuò),因?yàn)長(zhǎng)inux就是一套操作系統(tǒng)!如同下圖所示,Linux就算核心與系統(tǒng)調(diào)用接口那兩層。至于應(yīng)用程序算不算Linux呢?當(dāng)然不算啦!這點(diǎn)要特別注意喔!


圖1.1.1、操作系統(tǒng)的角色

由上圖中我們可以看到其實(shí)核心與硬件的關(guān)系非常的緊密。早起的Linux是針對(duì)386來(lái)開發(fā)的,由于Linux只是一套操作系統(tǒng),并不含有其他的應(yīng)用程序,因此很多工程師在下載了Linux核心并且實(shí)際安裝之后,就只能看著電腦開始運(yùn)行了!接下來(lái)這些高級(jí)工程師為了自己的需求,再在Linux上面安裝他們所需要的軟件就是了。

Tips

Torvalds先生在1991年寫出Linux核心的時(shí)候,其實(shí)該核心僅能“驅(qū)動(dòng)386所有的硬件”而已,所謂的“讓386電腦開始運(yùn)行,并且等待使用者輸入命令”而已,事實(shí)上,當(dāng)時(shí)能夠在Linux上面跑的軟件還很少呢!

由于不同的硬件他的功能函數(shù)并不相同,例如IBM的Power CPU與Intel的x86架構(gòu)就是不一樣!所以同一套操作系統(tǒng)是無(wú)法在不同的硬件平臺(tái)上面運(yùn)行的!舉例來(lái)說(shuō),如果你想要讓x86上面跑的那套操作系統(tǒng)也能夠在Power CPU上運(yùn)行,就得要將該操作系統(tǒng)進(jìn)行修改才行。如果能夠參考硬件的功能函數(shù)并據(jù)此修改你的操作系統(tǒng)源代碼,那經(jīng)過(guò)改版后的操作系統(tǒng)就能夠在另一個(gè)硬件平臺(tái)上面運(yùn)行了。這個(gè)動(dòng)作我們通常就稱為“軟件移植”了!

例題:

請(qǐng)問(wèn)Windows操作系統(tǒng)能否在蘋果公司的麥金塔電腦(MAC)上面安裝與運(yùn)行?

答:

由上面的說(shuō)明中,我們知道硬件是由“核心”來(lái)控制的,而每種操作系統(tǒng)都有它自己的核心。在2006年以前的蘋果電腦公司是請(qǐng)IBM公司幫忙開發(fā)硬件的(所謂的Power CPU),而蘋果電腦公司則在該硬件架構(gòu)上面開發(fā)自家的操作系統(tǒng)(就是俗稱的麥金塔,MAC是也)。Windows則是開發(fā)在x86架構(gòu)上的操作系統(tǒng)之一,因此Windows是沒(méi)有辦法安裝到麥金塔電腦硬件上面的。

不過(guò),在2006年以后,蘋果電腦轉(zhuǎn)而請(qǐng)Intel設(shè)計(jì)其硬件架構(gòu),亦即其硬件架構(gòu)已經(jīng)轉(zhuǎn)為x86系統(tǒng),因此在2006年以后的蘋果電腦若使用x86架構(gòu)時(shí),其硬件則“可能”可以安裝Windows操作系統(tǒng)了。不過(guò),你可能需要自己想些辦法來(lái)處理該硬件的兼容性啰!

Tips

Windows操作系統(tǒng)本來(lái)就是針對(duì)個(gè)人電腦x86架構(gòu)的硬件去設(shè)計(jì)的,所以它當(dāng)然只能在x86的個(gè)人電腦上面運(yùn)行,在不同的硬件平臺(tái)當(dāng)然就無(wú)法運(yùn)行了。也就是說(shuō),每種操作系統(tǒng)都是在它專門的硬件機(jī)器上面運(yùn)行的喔!這點(diǎn)得要先了解。不過(guò),Linux由于是Open Source的操作系統(tǒng),所以它的源代碼可以被修改成適合在各種機(jī)器上面運(yùn)行的,也就是說(shuō),Linux是具有“可移植性”,這可是很重要的一個(gè)功能喔!^_^

Linux提供了一個(gè)完整的操作系統(tǒng)當(dāng)中最底層的硬件控制與資源管理的完整架構(gòu),這個(gè)架構(gòu)是沿襲Unix良好的傳統(tǒng)來(lái)的,所以相當(dāng)?shù)姆€(wěn)定且功能強(qiáng)大!此外,由于這個(gè)優(yōu)良的架構(gòu)可以在目前的個(gè)人電腦(x86系統(tǒng))上面跑,所以很多的軟件開發(fā)者漸漸的將他們的工作心血轉(zhuǎn)移到這個(gè)架構(gòu)上面,所以Linux操作系統(tǒng)也也很多的應(yīng)用軟件啦!

雖然Linux僅是其核心與核心提供的工具,不過(guò)由于核心、核心工具與這些軟件開發(fā)者提供的軟件整合,使得Linux稱為一個(gè)更完整的、功能強(qiáng)大的操作系統(tǒng)啰!大概了解Linux是何物之后,接下來(lái),我們要談一談,為什么說(shuō)Linux是很穩(wěn)定的操作系統(tǒng)呢?它是如何來(lái)的?


1.1.2? Linux之前,Unix的歷史

早在Linux出現(xiàn)之前的二十年(大約在1970年代),就有一個(gè)相當(dāng)穩(wěn)定而成熟的操作系統(tǒng)存在了!那就是Linux的老大哥“Unix”是也!怎么這么說(shuō)呢?它們這兩個(gè)家伙有什么關(guān)系呀?這里就給它說(shuō)一說(shuō)啰!

眾所皆知的,Linux的核心是由Linus Torvalds在1991年的時(shí)候給它開發(fā)出來(lái)的,并且丟到網(wǎng)絡(luò)上提供大家下載,后來(lái)大家覺(jué)得這個(gè)小東西(LinuxKernel)相當(dāng)?shù)男《?,所以慢慢的就有相?dāng)多的朋友投入這個(gè)小東西的研究領(lǐng)域里面去了!但是為什么這個(gè)小東西這么棒呢?又為什么大家都可以免費(fèi)的下載這個(gè)東西呢?嗯!等鳥哥慢慢的唬xx……喔不!聽我慢慢的道來(lái)!

[if !supportLists]l? [endif]1969年以前:一個(gè)偉大的夢(mèng)想 –Bell,MIT與 GE的“Multics”系統(tǒng)

早期的計(jì)算機(jī)并不像現(xiàn)在的個(gè)人計(jì)算機(jī)一樣普遍,它可不是一般人碰的起的呢~除非是軍事或者是高科技用途,或者是學(xué)術(shù)單位的前瞻性研究,否則真的很難接觸到。非但如此,早期的計(jì)算機(jī)架構(gòu)還很難使用,除了運(yùn)算速度并不快之外,操作界面也很麻煩的!因?yàn)槟莻€(gè)時(shí)候的輸入設(shè)備只有讀卡機(jī)、輸出設(shè)備只有打印機(jī),使用者也無(wú)法與操作系統(tǒng)互動(dòng)(批處理型操作系統(tǒng))。

在那個(gè)時(shí)候,寫程序是件很可憐的事情,因?yàn)槌绦蛟O(shè)計(jì)者,必須要將程序相關(guān)的信息在讀卡紙上面打洞,然后再將讀卡紙插入讀卡機(jī)來(lái)將信息讀入主機(jī)中運(yùn)算。光是這樣就很麻煩了,如果程序有個(gè)小地方寫錯(cuò),哈哈!光是重新打卡就很慘,加上主機(jī)少,使用者眾多,光是等待,就耗去很多的時(shí)間了!

在那之后,由于硬件與操作系統(tǒng)的改良,使得后來(lái)可以使用鍵盤來(lái)進(jìn)行信息的輸入。不過(guò),在一間學(xué)校里面,主機(jī)畢竟可能只有一部,如果多人等待使用,那怎么辦?大家還是得要等待?。『迷?960年代初期麻省理工學(xué)院(MIT)發(fā)展了所謂的“分時(shí)共用系統(tǒng)(CompatibleTime-Sharing System,CTSS)”, 它可以讓大型主機(jī)通過(guò)提供數(shù)個(gè)終端機(jī)(terminal)以連線進(jìn)入主機(jī),來(lái)利用主機(jī)的資源進(jìn)行運(yùn)算工作。 架構(gòu)有點(diǎn)像這樣:


圖1.1.2、早期主機(jī)與終端的關(guān)系圖示

Tips

這個(gè)分時(shí)共用系統(tǒng)可以說(shuō)是近代操作系統(tǒng)的始祖呢!它可以讓多個(gè)使用者在某一段時(shí)間內(nèi)分別使用CPU的資源, 感覺(jué)上你會(huì)覺(jué)得大家是同時(shí)使用該主機(jī)的資源!事實(shí)上,是CPU在每個(gè)使用者的工作之間進(jìn)行切換,在當(dāng)時(shí),這可是個(gè)劃時(shí)代的技術(shù)喔!

如此一來(lái),無(wú)論主機(jī)在哪里,只要在終端機(jī)前面進(jìn)行輸入輸出的作業(yè),就可利用主機(jī)提供的功能了。不過(guò),需要注意的是,此時(shí)終端機(jī)只具有輸入/輸出的功能,本身完全不具任何運(yùn)算或者軟件安裝的能力。而且,比較先進(jìn)的主機(jī)大概也只能提供30個(gè)不到的終端機(jī)而已。

為了更加強(qiáng)化大型主機(jī)的功能,以讓主機(jī)的資源可以提供給更多使用者來(lái)利用,所以在1965年前后,由貝爾實(shí)驗(yàn)室(Bell)、麻省理工學(xué)院(MIT)及奇異公司(GE,或稱為通用電器)共同發(fā)起了Multics的計(jì)劃(注1), Multics計(jì)劃的目的是想要讓大型主機(jī)可以達(dá)到提供300個(gè)以上的終端機(jī)連線使用的目標(biāo)。不過(guò),到了1969年前后,計(jì)劃進(jìn)度落后,資金也短缺,所以該計(jì)劃雖然繼續(xù)在研究,但貝爾實(shí)驗(yàn)室還是退出了該計(jì)劃的研究工作。(Multics有復(fù)雜、多數(shù)的意思存在。)

Tips

最終Multics還是有成功的發(fā)展出他們的系統(tǒng),完整的歷史說(shuō)明可以參考: http://www.multicians.org/網(wǎng)站內(nèi)容。Multics計(jì)劃雖然后來(lái)沒(méi)有受到很大的重視,但是它培養(yǎng)出來(lái)的人材是相當(dāng)優(yōu)秀的!^_^

[if !supportLists]l?[endif]1969年:Ken Thompson的小型file server system

在認(rèn)為Multics計(jì)劃不可能成功之后,貝爾研究室就退出該計(jì)劃。不過(guò),原本參與Multics計(jì)劃的人員,已經(jīng)從該計(jì)劃當(dāng)中獲得一些點(diǎn)子,Ken Thompson(注2)就是其中一位!

Thompson因?yàn)樽约旱男枰M_發(fā)一個(gè)小小的操作系統(tǒng)以供自己的需求。在開發(fā)時(shí),有一部DEC(Digital Equipment Corporation)公司推出的PDP-7剛好沒(méi)人使用,于是他就準(zhǔn)備針對(duì)這部主機(jī)進(jìn)行操作系統(tǒng)核心程序的撰寫。本來(lái)Thompson應(yīng)該是沒(méi)時(shí)間的(有家有小孩的宿命?),無(wú)巧不巧的是,在1969年八月份左右,剛好Thompson的妻兒去了美西探親,于是他有了額外的一個(gè)月的時(shí)間好好的待在家將一些構(gòu)想實(shí)現(xiàn)出來(lái)!

經(jīng)過(guò)四個(gè)星期的奮斗,他終于以匯編語(yǔ)言(Assembler)寫出了一組核心程序,同時(shí)包括一些核心工具程序,以及一個(gè)小小的文件系統(tǒng)。那個(gè)系統(tǒng)就是Unix的原型!當(dāng)時(shí)Thompson將Multics龐大的復(fù)雜系統(tǒng)簡(jiǎn)化了不少,于是同實(shí)驗(yàn)室的朋友都戲稱這個(gè)系統(tǒng)為:Unics。(當(dāng)時(shí)尚未有Unix的名稱)

Thompson的這個(gè)文件系統(tǒng)有兩個(gè)重要的概念,分別是:

所有的程序或系統(tǒng)設(shè)備都是文件;

不管建構(gòu)編輯器還是附屬文件,所寫的程序只有一個(gè)目的,且要有效的完成目標(biāo)。

這些概念在后來(lái)對(duì)于Linux的發(fā)展有相當(dāng)重要的影響喔!

Tips

套一句常聽到的廣告詞:“科技始終來(lái)自于人性”,當(dāng)初Thompson會(huì)寫這套Unix核心程序,卻是想要移植一套名為“太空旅游”的游戲呢!^_^

[if !supportLists]l?[endif]1973年:Unix的正式誕生,Ritchie等人以C語(yǔ)言寫出第一個(gè)正式Unix核心

由于Thompson寫的那個(gè)操作系統(tǒng)實(shí)在太好用了,所以在貝爾實(shí)驗(yàn)室內(nèi)部廣為流傳,并且數(shù)度經(jīng)過(guò)改版。但是因?yàn)閁nics本來(lái)是以匯編語(yǔ)言寫成的,而如第零章計(jì)算機(jī)概論談到的,匯編語(yǔ)言具有專用性,加上當(dāng)時(shí)的計(jì)算機(jī)機(jī)器架構(gòu)都不太相同,所以每次要安裝到不同的機(jī)器都得要重新編寫匯編語(yǔ)言,真不方便!

后來(lái)Thompson與Ritchie合作想將Unics改以高級(jí)程序語(yǔ)言來(lái)撰寫。當(dāng)時(shí)現(xiàn)成的高階程序語(yǔ)言有B語(yǔ)言。但是由B語(yǔ)言所編譯出來(lái)的核心性能不是很好。后來(lái)DennisRitchie(注3)將B語(yǔ)言重新改寫成C語(yǔ)言,再以C語(yǔ)言重新改寫與編譯Unics的核心,最后正名與發(fā)行出Unix的正式版本!

Tips

這群高級(jí)黑客實(shí)在很厲害!因?yàn)樽约旱男枨髞?lái)開發(fā)出這么多好用的工具!C程序語(yǔ)言開發(fā)成功后,甚至一直沿用至今呢!你說(shuō)厲不厲害啊!這個(gè)故事也告訴我們,不要小看自己的潛能喔!你想做的,但是現(xiàn)實(shí)生活中沒(méi)有的,就動(dòng)手自己搞一個(gè)來(lái)玩玩吧!

由于貝爾實(shí)驗(yàn)室是隸屬于美國(guó)電信大廠AT&T公司的,只是AT&T當(dāng)時(shí)忙于其他商業(yè)活動(dòng),對(duì)于Unix并不支持也不排斥。此外,Unix在這個(gè)時(shí)期的發(fā)展者都是貝爾實(shí)驗(yàn)室的工程師,這些工程師對(duì)于程序當(dāng)然相當(dāng)有研究,所以,Unix在此時(shí)當(dāng)然是不容易被一般人所接受的!不過(guò)對(duì)于學(xué)術(shù)界的學(xué)者來(lái)說(shuō),這個(gè)Unix真是學(xué)者們進(jìn)行研究的福音!因?yàn)樵创a可改寫并且可作為學(xué)術(shù)研究之用嘛!

需要特別強(qiáng)調(diào)的是,由于Unix是以較高級(jí)的C語(yǔ)言寫的,相對(duì)于匯編語(yǔ)言需要與硬件有密切的配合,高級(jí)的C語(yǔ)言與硬件的關(guān)聯(lián)性就沒(méi)有這么大了!所以,這個(gè)改變也使得Unix很容易被移植到不同的機(jī)器上面喔!

[if !supportLists]l?[endif]1977年:重要的Unix分支--BSD的誕生

雖然貝爾屬于AT&T,但是AT&T此時(shí)對(duì)于Unix是采取較開放的態(tài)度,此外,Unix是以高級(jí)的C語(yǔ)言寫成的,理論上是具有可移植性的!亦即只要取得Unix的源代碼,并且針對(duì)大型主機(jī)的特性加以修訂原有的源代碼(Source Code),就可能將Unix移植到另一部不同的主機(jī)上面了。所以在1973年以后,Unix便得以與學(xué)術(shù)界合作開發(fā)!最重要的接觸就是與加州伯克利(Berkeley)大學(xué)的合作了。

伯克利大學(xué)的Bill Joy(注4)在取得了Unix的核心源代碼后,著手修改成適合自己機(jī)器的版本,并且同時(shí)增加了很多工具軟件與編譯程序,最終將它命名為BerkeleySoftware Distribution(BSD)。這個(gè)BSD是Unix很重要的一個(gè)分支,Bill Joy也是Unix業(yè)者“Sun(升陽(yáng))”這家公司的創(chuàng)辦者!Sun公司即是以BSD發(fā)展的核心進(jìn)行自己的商業(yè)Unix版本的發(fā)展的。(后來(lái)可以安裝在x86硬件架構(gòu)上面FreeBSD即是BSD改版而來(lái)!)

[if !supportLists]l?[endif]1979年:重要的System V架構(gòu)與版權(quán)聲明

由于Unix的高度可移植性與強(qiáng)大的性能,加上當(dāng)時(shí)并沒(méi)有版權(quán)的糾紛,所以讓很多商業(yè)公司開始了Unix操作系統(tǒng)的發(fā)展,例如AT&T自家的System V、IBM的AIX以及HP與DEC等公司,都有推出自家的主機(jī)搭配自己的Unix操作系統(tǒng)。

但是,如同我們前面提到的,操作系統(tǒng)的核心(Kernel)必須要跟硬件配合,以提供及控制硬件的資源進(jìn)行良好的工作!而在早期每一家生產(chǎn)計(jì)算機(jī)硬件的公司還沒(méi)有所謂的“協(xié)議”的概念,所以每一個(gè)計(jì)算機(jī)公司出產(chǎn)的硬件自然就不相同啰!因此他們必須要為自己的計(jì)算機(jī)硬件開發(fā)合適的Unix系統(tǒng)。例如在學(xué)術(shù)機(jī)構(gòu)相當(dāng)有名的Sun、Cray與HP就是這一種情況。他們開發(fā)出來(lái)的Unix操作系統(tǒng)以及內(nèi)含的相關(guān)軟件并沒(méi)有辦法在其他的硬件架構(gòu)下工作的!另外,由于沒(méi)有廠商針對(duì)個(gè)人計(jì)算機(jī)設(shè)計(jì)Unix系統(tǒng),因此,在早期并沒(méi)有支持個(gè)人計(jì)算機(jī)的Unix操作系統(tǒng)的出現(xiàn)。

Tips

如同分時(shí)復(fù)用系統(tǒng)的功能一樣,Unix強(qiáng)調(diào)的是多用戶多任務(wù)的環(huán)境!但早期的286個(gè)人計(jì)算機(jī)架構(gòu)下的CPU是沒(méi)有能力達(dá)到多任務(wù)的操作,因此,并沒(méi)有人對(duì)移植Unix到x86的計(jì)算機(jī)上有興趣。

每一家公司自己出的Unix雖然在架構(gòu)上面大同小異,但是卻真的僅能支持自身的硬件,所以啰,早先的Unix只能與服務(wù)器(Server)或者是大型工作站(Workstation)劃上等號(hào)!但到了1979年時(shí),AT&T推出System V第七版Unix后,這個(gè)情況就有點(diǎn)改善了。這一版最重要的特色是可以支持x86架構(gòu)的個(gè)人計(jì)算機(jī)系統(tǒng),也就是說(shuō)System V可以在個(gè)人計(jì)算機(jī)上面安裝與運(yùn)行了。

不過(guò)AT&T由于商業(yè)的考慮,以及在當(dāng)時(shí)現(xiàn)實(shí)環(huán)境下的思考,于是想將Unix的版權(quán)收回去。因此,AT&T在1979年發(fā)行的第七版Unix中,特別提到了“不可對(duì)學(xué)生提供源代碼”的嚴(yán)格限制!同時(shí),也造成Unix業(yè)界之間的緊張氣氛,并且也引爆了很多的商業(yè)糾紛~

Tips

目前被稱為純種的Unix指的就是System V以及BSD這兩套啰!

[if !supportLists]l?[endif]1984年之一:x86架構(gòu)的Minix操作系統(tǒng)開始撰寫并于兩年后誕生

關(guān)于1979年的版權(quán)聲明中,影響最大的當(dāng)然就是學(xué)校教Unix核心源代碼相關(guān)學(xué)問(wèn)的教授了!想一想,如果沒(méi)有核心源代碼,那么如何教導(dǎo)學(xué)生認(rèn)識(shí)Unix呢?這問(wèn)題對(duì)于Andrew Tanenbaum(譚寧邦,(注5))教授來(lái)說(shuō),實(shí)在是很傷腦筋的!不過(guò),學(xué)校的課程還是得繼續(xù)??!那怎么辦?

既然1979年的Unix第七版可以在Intel的x86架構(gòu)上面進(jìn)行移植,那么是否意味著可以將Unix改寫并移植到x86上面了呢?在這個(gè)想法上,譚寧邦教授于是乎自己動(dòng)手寫了Minix這個(gè)Unix Like的核心程序!在撰寫的過(guò)程中,為了避免版權(quán)糾紛,譚寧邦完全不看Unix核心源代碼!并且強(qiáng)調(diào)他的Minix必須能夠與Unix兼容才行!譚寧邦在1984年開始撰寫核心程序,到了1986年終于完成,并于次年出版Minix相關(guān)書籍,同時(shí)與新聞群組(BBS及News)相結(jié)合~

Tips

之所以稱為Minix的原因,是因?yàn)樗莻€(gè)Mini(微小的)的Unix系統(tǒng)啰!^_^

這個(gè)Minix版本比較有趣的地方是,它并不是完全免費(fèi)的,無(wú)法在網(wǎng)絡(luò)上提供下載!必須要通過(guò)磁片/磁帶購(gòu)買才行!雖然真的很便宜~不過(guò),畢竟因?yàn)闆](méi)有在網(wǎng)絡(luò)上流傳,所以Minix的傳播速度并沒(méi)有很快速!此外,購(gòu)買時(shí),隨磁片還會(huì)附上Minix的源代碼!這意味著使用者可以學(xué)習(xí)Minix的核心程序設(shè)計(jì)概念喔?。ㄟ@個(gè)特色對(duì)于Linux的啟始開發(fā)階段,可是有很大的關(guān)系喔?。?/p>

此外,Minix操作系統(tǒng)的開發(fā)者僅有譚寧邦教授,因?yàn)閷W(xué)者很忙啊(鳥哥當(dāng)了老師之后,才發(fā)現(xiàn),真的忙…)!加上譚寧邦始終認(rèn)為Minix主要用在教育用途上面, 所以對(duì)于Minix是點(diǎn)到為止!沒(méi)錯(cuò),Minix是很受歡迎,不過(guò),使用者的要求/需求的聲音可能就比較沒(méi)有辦法上升到比較高的地方了!這樣說(shuō),你明白吧?^_^

[if !supportLists]l?[endif]1984年之二:GNU計(jì)劃與FSF基金會(huì)的成立

Richard Mathew Stallman(史托曼)在1984年發(fā)起的GNU計(jì)劃,對(duì)于現(xiàn)今的自由軟件風(fēng)潮,真有不可磨滅的地位!目前我們所使用的很多自由軟件或開源軟件,幾乎均直接或間接受益于GNU這個(gè)計(jì)劃呢!那么史托曼是何許人也?為何他會(huì)發(fā)起這個(gè)GNU計(jì)劃呢?

一個(gè)分享的環(huán)境:

Richard Mathew Stallman(生于1953年, 網(wǎng)絡(luò)上自稱的ID為RMS,(注6))從小就很聰明!他在1971年的時(shí)候,進(jìn)入黑客圈中相當(dāng)出名的人工智能實(shí)驗(yàn)室(AILab.),這個(gè)時(shí)候的黑客專指計(jì)算機(jī)功力很強(qiáng)的人,而非破壞計(jì)算機(jī)的怪客 (cracker)喔!

當(dāng)時(shí)的黑客圈對(duì)于軟件的著眼點(diǎn)幾乎都是在“分享”,黑客們都認(rèn)為互相學(xué)習(xí)對(duì)方的源代碼,這樣才是產(chǎn)生更優(yōu)秀的源代碼的最佳方式!所以AI實(shí)驗(yàn)室的駭客們通常會(huì)將自己的程序代碼公布出來(lái)跟大家討論喔!這個(gè)特色對(duì)于史托曼的影響很大!

不過(guò),后來(lái)由于管理層以及黑客群們自己的生涯規(guī)劃等問(wèn)題,導(dǎo)致實(shí)驗(yàn)室的優(yōu)秀黑客離開該實(shí)驗(yàn)室,并且進(jìn)入其他商業(yè)公司繼續(xù)發(fā)展優(yōu)秀的軟件。但史托曼并不服輸,仍然持續(xù)在原來(lái)的實(shí)驗(yàn)室開發(fā)新的程序與軟件。后來(lái),他發(fā)現(xiàn)到,自己一個(gè)人并無(wú)法完成所有的工作,于是想要成立一個(gè)開放的團(tuán)體來(lái)共同努力!

使用Unix開發(fā)階段:

1983年以后,因?yàn)閷?shí)驗(yàn)室硬件的更換,使得史托曼無(wú)法繼續(xù)以原有的硬件與操作系統(tǒng)繼續(xù)自由程序的撰寫~而且他進(jìn)一步發(fā)現(xiàn)到,過(guò)去他所使用的Lisp操作系統(tǒng),是麻省理工學(xué)院的專利軟件,是無(wú)法共享的,這對(duì)于想要成立一個(gè)開放團(tuán)體的

史托曼是個(gè)阻礙。于是他便放棄了Lisp這個(gè)系統(tǒng)。后來(lái),他接觸到Unix這個(gè)系統(tǒng),并且發(fā)現(xiàn),Unix在理論與實(shí)際上,都可以在不同的機(jī)器間進(jìn)行移植。雖然Unix依舊是專利軟件,但至少Unix架構(gòu)上還是比較開放的!于是他開始轉(zhuǎn)而使用Unix系統(tǒng)。

因?yàn)長(zhǎng)isp與Unix是不同的系統(tǒng),所以,他原本已經(jīng)撰寫完畢的軟件是無(wú)法在Unix上面運(yùn)行的!為此,他就開始將軟件移植到Unix上面。并且,為了讓軟件可以在不同的平臺(tái)上運(yùn)行,因此,史托曼將他發(fā)展的軟件均撰寫成可以移植的型態(tài)!也就是他都會(huì)將程序的源代碼公布出來(lái)!

GNU計(jì)劃的推展(注7):

1984年,史托曼開始GNU計(jì)劃, 這個(gè)計(jì)劃的目的是:創(chuàng)建一個(gè)自由、開放的Unix操作系統(tǒng)(FreeUnix)。但是創(chuàng)建一個(gè)操作系統(tǒng)談何容易??!而且在當(dāng)時(shí)的GNU是僅有自己一個(gè)人單打獨(dú)斗的史托曼~這實(shí)在太麻煩,但又不想放棄這個(gè)計(jì)劃,那可怎么辦???

聰明的史托曼干脆反其道而行~“既然操作系統(tǒng)太復(fù)雜,我就先寫可以在Unix上面運(yùn)行的小程序,這總可以了吧?”在這個(gè)想法上,史托曼開始參考Unix上面現(xiàn)有的軟件,并依據(jù)這些軟件的作用開發(fā)出功能相同的軟件,且開發(fā)期間史托曼絕不看 其他軟件的源代碼,以避免吃上官司。后來(lái)一堆人知道免費(fèi)的GNU軟件,并且實(shí)際使用后發(fā)現(xiàn)與原有的專利軟件也差不了太多,于是便轉(zhuǎn)而使用GNU軟件,于是GNU計(jì)劃逐漸打開知名度。

雖然GNU計(jì)劃漸漸打開知名度,但是能見度還是不夠。這時(shí)史托曼又想:不論是什么軟件,都得要進(jìn)行編譯成為二進(jìn)制文件(binaryprogram)后才能夠執(zhí)行,如果能夠?qū)懗鲆粋€(gè)不錯(cuò)的編譯器,那不就是大家都需要的軟件了嗎?因此他便開始撰寫C語(yǔ)言的編譯器,那就是現(xiàn)在相當(dāng)有名的GNU CCompiler(gcc)!這點(diǎn)相當(dāng)?shù)闹匾?!這是因?yàn)镃語(yǔ)言編譯器版本眾多,但都是專利軟件,如果他寫的C編譯器夠棒,性能夠好,那么將會(huì)大大的讓GNU計(jì)劃出現(xiàn)在眾人眼前!如果忘記啥是編譯 器,請(qǐng)回到第零章去瞧瞧編譯程序吧!

但開始撰寫GCC時(shí)并不順利,為此,他先轉(zhuǎn)而將他原先就已經(jīng)寫過(guò)的Emacs編輯器寫成可以在Unix上面跑的軟件,并公布源代碼。Emacs是一種程序編輯器,它可以在使用者撰寫程序的過(guò)程中就進(jìn)行程序語(yǔ)法的檢驗(yàn),此一功能可以減少程序設(shè)計(jì)師除錯(cuò)的時(shí)間!因?yàn)镋macs太優(yōu)秀了,因此,很多人便直接向他購(gòu)買。

此時(shí)互聯(lián)網(wǎng)尚未流行,所以,史托曼便借著Emacs以磁帶(tape)出售,賺了一點(diǎn)錢 ,進(jìn)而開始全力撰寫其他軟件。并且成立自由軟件基金會(huì)(FSF, Free SoftwareFoundation),請(qǐng)更多工程師與志愿者撰寫軟件。終于還是完成了GCC,這比Emacs還更有幫助!此外,他還撰寫了更多可以被調(diào)用的C函數(shù)庫(kù)(GNU C library),以及可以被使用來(lái)操作操作系統(tǒng)的基本接口BASH shell!這些都在1990年左右完成了!

Tips

如果純粹使用文字編輯器來(lái)編寫程序的話,那么程序語(yǔ)法如果寫錯(cuò)時(shí),只能利用編譯時(shí)發(fā)生的錯(cuò)誤訊息來(lái)修訂了,這樣實(shí)在很沒(méi)有效率。Emacs則是一個(gè)很棒的編輯器!注意!是編輯(editor)而非編譯(compiler)!它可以很快的立刻顯示出你寫入的語(yǔ)法可能有錯(cuò)誤的地方,這對(duì)于程序設(shè)計(jì)師來(lái)說(shuō),實(shí)在是一個(gè)好到不能再好的工具了!所以才會(huì)這么的受到歡迎??!

GNU的通用公共許可證:

到了1985年,為了避免GNU所開發(fā)的自由軟件被其他人所利用而成為專利軟件, 所以他與律師草擬了有名的通用公共許可證(General PublicLicense, GPL), 并且稱呼他為copyleft(相對(duì)于專利軟件的copyright!)。 關(guān)于GPL的相關(guān)內(nèi)容我們?cè)谙乱粋€(gè)小節(jié)繼續(xù)談?wù)?,在這里,必須要說(shuō)明的是,由于有GNU所開發(fā)的幾個(gè)重要軟件,如:

Emacs

GNU C(GCC)

GNU C Library(glibc)

Bash shell

造成后來(lái)很多的軟件開發(fā)者可以借由這些基礎(chǔ)的工具來(lái)進(jìn)行程序開發(fā)!進(jìn)一步壯大了自由軟件團(tuán)體!這是很重要的!不過(guò),對(duì)于GNU的最初構(gòu)想“創(chuàng)建一個(gè)自由的Unix操作系統(tǒng)”來(lái)說(shuō),有這些優(yōu)秀的程序是仍無(wú)法滿足,因?yàn)?,?dāng)下并沒(méi)有“自由的Unix核心”存在…所以這些軟件仍只能在那些有專利的Unix平臺(tái)上工作~~一直到Linux的出現(xiàn)…更多的FSF開發(fā)的軟件可以參考如下網(wǎng)頁(yè):

https://www.fsf.org/resources

Tips

事實(shí)上,GNU自己開發(fā)的核心稱為hurd, 是一個(gè)架構(gòu)相當(dāng)先進(jìn)的核心。不過(guò)由于開發(fā)者在開發(fā)的過(guò)程中對(duì)于系統(tǒng)的要求太過(guò)于嚴(yán)謹(jǐn),因此推出的日程一再延后,所以才有后來(lái)Linux的開發(fā)!

[if !supportLists]l?[endif]1988年:圖形界面XFree86計(jì)劃

有鑒于圖形用戶界面(Graphical User Interface, GUI)的需求日益加重,在1984年由MIT與其他協(xié)力廠商首次發(fā)表了X Window System,并且更在1988年成立了非營(yíng)利性質(zhì)的XFree86這個(gè)組織。所謂的XFree86其實(shí)是X Window System +Free + x86的整合名稱呢!而這個(gè)XFree86的GUI接口更在Linux的核心1.0版于1994年放出時(shí),整合于Linux操作系統(tǒng)當(dāng)中!

Tips

為什么稱圖形使用者接口為X呢?因?yàn)橛捎⑽膯巫謥?lái)看,Window的W接的就是X啦!意指Window的下一版就是了!需注意的是,X Window并不是X Windows喔!

[if !supportLists]l?[endif]1991年:芬蘭大學(xué)生Linus Torvalds的一則簡(jiǎn)訊

到了1991年,芬蘭的赫爾辛基大學(xué)的Linus Torvalds在BBS上面貼了一則消息, 宣稱他以bash, gcc等GNU的工具寫了一個(gè)小小的核心程序,該核心程序單純是個(gè)玩具,不像GNU那么專業(yè)。不過(guò)該核心程序可以在Intel的386機(jī)器上面運(yùn)行就是了。這讓很多人很感興趣!從此開始了Linux不平凡的路程!


[if !supportLists]1.1.3? [endif]關(guān)于GNU計(jì)劃、自由軟件與開放源代碼

GNU計(jì)劃對(duì)于整個(gè)自由軟件與開放源代碼軟件來(lái)說(shuō)是非常重要的角色!下面我們就來(lái)談?wù)勥@東西吧!

[if !supportLists]l?[endif]自由軟件運(yùn)動(dòng):

1984年創(chuàng)立GNU計(jì)劃與FSF基金會(huì)的Stallman先生認(rèn)為,寫程序最大的快樂(lè)就是讓自己開發(fā)的良好的軟件讓大家來(lái)使用了!另外,如果使用方撰寫程序的能力比自己強(qiáng),那么當(dāng)對(duì)方修改完自己的程序并且回傳修改后的程序碼給自己,那自己的程序撰寫功力無(wú)形中就更往上爬了!這就是最早之前AI實(shí)驗(yàn)室的黑客風(fēng)格!

而既然程序是想要分享給大家使用的,不過(guò),每個(gè)人所使用的計(jì)算機(jī)軟硬件并不相同,既然如此的話,那么該程序的源代碼(Source code)就應(yīng)該要同時(shí)放出,這樣才能方便大家修改而適用于每個(gè)人的計(jì)算機(jī)中呢!這個(gè)將源代碼連同軟件程序放出的舉動(dòng),在GNU計(jì)劃的范疇之內(nèi)就稱為自由軟件(Free Software)運(yùn)動(dòng)!

此外,史托曼同時(shí)認(rèn)為,如果你將你程序的Source code分享出來(lái)時(shí),若該程序是很優(yōu)秀的,那么將會(huì)有很多人使用,而每個(gè)人對(duì)于該程序都可以查閱sourcecode,無(wú)形之中,就會(huì)有一票人幫你除錯(cuò)啰!你的這支程序?qū)?huì)越來(lái)越壯大!越來(lái)越優(yōu)秀呢!

[if !supportLists]l?[endif]自由軟件的版權(quán)GNU GPL:

而為了避免自己的開發(fā)出來(lái)的Open source自由軟件被拿去做成專利軟件,于是Stallman同時(shí)將GNU與FSF發(fā)展出來(lái)的軟件,都掛上GPL的版權(quán)聲明~這個(gè)FSF的核心觀念是“版權(quán)制度是促進(jìn)社會(huì)進(jìn)步的手段,版權(quán)本身不是自然權(quán)力。”對(duì)于FSF有興趣或者對(duì)于GNU想要更深入的了解時(shí),請(qǐng)參考朝陽(yáng)科技大學(xué)洪朝貴教授的網(wǎng)站 http://people.ofset.org/~ckhung/a/c_83.php,或直接到GNU去:http://www.gnu.org里面有更為深入的解說(shuō)!

Tips

為什么要稱為GNU呢?其實(shí)GNU是GNU'sNot Unix的縮寫,意思是說(shuō),GNU并不是Unix?。∧敲碐NU又是什么呢?就是GNU's Not Unix嘛!……如果你寫過(guò)程序就會(huì)知道,這個(gè)GNU = GNU's Not Unix可是無(wú)窮循環(huán)??!忙碌~

另外,什么是Open Source呢?所謂的source code是程序發(fā)展者寫出的原始程序碼,Open Source就是,軟件在發(fā)布時(shí),同時(shí)將作者的源代碼一起公布的意思!

[if !supportLists]l?[endif]自由(Free)的真諦:

那么這個(gè)GPL(GNU General PublicLicense, GPL)是什么玩意兒?為什么要將自由軟件掛上GPL的“版權(quán)聲明”呢?這個(gè)版權(quán)聲明對(duì)于作者有何好處?首先,Stallman對(duì)GPL一直是強(qiáng)調(diào)Free的,這個(gè)Free的意思是這樣的:

"Free software"is a matter of liberty, not price. To understand the concept, you should thinkof "free speech", not "free beer"."Free software"refers to the users' freedom to run, copy, distribute, study, change, andimprove the software

大意是說(shuō),F(xiàn)ree Software(自由軟件)是一種自由的權(quán)力,并非是“價(jià)格”!舉例來(lái)說(shuō),你可以擁有自由呼吸的權(quán)力、你擁有自由發(fā)表言論的權(quán)力,但是,這并不代表你可以到處喝“免費(fèi)的啤酒!(free beer)”,也就是說(shuō),自由軟件的重點(diǎn)并不是指“免費(fèi)”的,而是指具有“自由度,freedom”的軟件,史托曼進(jìn)一步說(shuō)明了自由度的意義是:使用者可以自由的執(zhí)行、復(fù)制、再發(fā)行、學(xué)習(xí)、修改與強(qiáng)化自由軟件。

這無(wú)疑是個(gè)好消息!因?yàn)槿绱艘粊?lái),你所拿到的軟件可能原先只能在Unix上面跑,但是經(jīng)過(guò)源代碼的修改之后,你將可以拿他在Linux或者是Windows上面來(lái)跑!總之,一個(gè)軟件掛上了GPL版權(quán)宣告之后,它自然就成了自由軟件!這個(gè)軟件就具有下面的特色:

取得軟件與源代碼:你可以根據(jù)自己的需求來(lái)執(zhí)行這個(gè)自由軟件;

復(fù)制:你可以自由的復(fù)制該軟件;

修改:你可以將取得的源代碼進(jìn)行程序修改,使之適合你的工作;

再發(fā)行:你可以將你修改過(guò)的程序,再度的自由發(fā)行,而不會(huì)與原先的撰寫者沖突;

回饋:你應(yīng)該將你修改過(guò)的程序碼回饋于社群!

但請(qǐng)?zhí)貏e留意,你所修改的任何一個(gè)自由軟件都不應(yīng)該也不能這樣:

修改授權(quán):你不能將一個(gè)GPL授權(quán)的自由軟件,在你修改后而將它取消GPL授權(quán)~

單純販賣:你不能單純的販賣自由軟件。

也就是說(shuō),既然GPL是站在互助互利的角度上去開發(fā)的,你自然不應(yīng)該將大家的成果占為己有,對(duì)吧!因此你當(dāng)然不可以將一個(gè)GPL軟件的授權(quán)取消,即使你已經(jīng)對(duì)該軟件進(jìn)行大幅度的修改!那么自由軟件也不能販賣嗎?當(dāng)然不是!還記得上一個(gè)小節(jié)里面,我們提到史托曼借由販賣Emacs取得一些經(jīng)費(fèi),讓自己生活不至于匱乏吧?是的!自由軟件是可以販?zhǔn)鄣?,不過(guò),不可僅販?zhǔn)墼撥浖?,?yīng)同時(shí)搭配售后服務(wù)與相關(guān)手冊(cè)~這些可就需要工本費(fèi)了呢!

[if !supportLists]l?[endif]自由軟件與商業(yè)行為:

很多人還是有疑問(wèn),目前不是有很多Linux開發(fā)商嗎?為何他們可以販?zhǔn)跮inux這個(gè)GPL授權(quán)的軟件?原因很簡(jiǎn)單,因?yàn)樗麄兇蠖喽际秦準(zhǔn)邸笆酆蠓?wù)”!所以,他們所使用的自由軟件,都可以在他們的網(wǎng)站上面下載!(當(dāng)然,每個(gè)廠商他們自己開發(fā)的工具軟件就不是GPL的授權(quán)軟件了?。┑牵憧梢再?gòu)買他們的Linux光盤,如果你購(gòu)買了光盤,他們會(huì)提供相關(guān)的手冊(cè)說(shuō)明文檔,同時(shí)也會(huì)提供你數(shù)年不等的咨詢、售后服務(wù)、軟件升級(jí)與其他協(xié)力工作等等的附加價(jià)值!

所以說(shuō),目前自由軟件工作者,他們所賴以維生的,幾乎都是在“服務(wù)”這個(gè)領(lǐng)域呢!畢竟自由軟件并不是每個(gè)人都會(huì)撰寫,有人有需要你的自由軟件時(shí),他就會(huì)請(qǐng)求你的協(xié)助,此時(shí),你就可以通過(guò)服務(wù)來(lái)收費(fèi)了!這樣來(lái)說(shuō),自由軟件確實(shí)還是具有商業(yè)空間的喔!

Tips

很多人對(duì)于GPL授權(quán)一直很疑惑,對(duì)于GPL的商業(yè)行為更是無(wú)法接受!關(guān)于這一點(diǎn),鳥哥在這里還是要再次的申明,GPL是可以從事商業(yè)行為的!而很多的作者也是借由這些商業(yè)行為來(lái)得以取得生活所需,更進(jìn)一步去發(fā)展更優(yōu)秀的自由軟件!千萬(wàn)不要聽到“商業(yè)”就排斥!這對(duì)于開發(fā)優(yōu)良軟件的朋友來(lái)說(shuō),是不禮貌的!


上面提到的大多是與使用者有關(guān)的項(xiàng)目,那么GPL對(duì)于自由軟件的作者有何優(yōu)點(diǎn)呢?大致的優(yōu)點(diǎn)有這些:

?? 軟件安全性較佳;

? ?軟件執(zhí)行性能較佳;

?? 軟件除錯(cuò)時(shí)間較短;

?? 貢獻(xiàn)的源代碼永遠(yuǎn)都存在。

這是因?yàn)榧热皇翘峁┰创a的自由軟件,那么你的程序碼將會(huì)有很多人幫你查閱,

如此一來(lái),程序的漏洞與程序的優(yōu)化將會(huì)進(jìn)展的很快!所以,在安全性與性能上面,自由軟件一點(diǎn)都不輸給商業(yè)軟件喔!此外,因?yàn)镚PL授權(quán)當(dāng)中,修改者并不能修改授權(quán),因此,你如果曾經(jīng)貢獻(xiàn)過(guò)程序碼,嘿嘿!你將名留青史呢!不錯(cuò)吧!^_^

對(duì)于程序開發(fā)者來(lái)說(shuō),GPL實(shí)在是一個(gè)非常好的授權(quán),因?yàn)榇蠹铱梢曰ハ鄬W(xué)習(xí)對(duì)方的程序撰寫技巧,而且自己寫的程序也有人可以幫忙除錯(cuò)。那你會(huì)問(wèn)啊,對(duì)于我們這些廣大的終端用戶,GPL有沒(méi)有什么好處???有啊!當(dāng)然有!雖然終端用戶或許不會(huì)自己編譯程序碼或者是幫人家除錯(cuò),但是終端用戶使用的軟件絕大部分就是GPL的軟件,全世界有一大票的工程師在幫你維護(hù)你的系統(tǒng),這難道不是一件非常棒的事嗎?^_^

Tips

就跟人類社會(huì)的科技會(huì)進(jìn)步一樣,授權(quán)也會(huì)進(jìn)步喔!因應(yīng)源代碼分區(qū)與重組的問(wèn)題,與其他開源軟件的授權(quán)包容性,以及最重要的數(shù)字版權(quán)管理(Digital Rights Management, DRM)等問(wèn)題,GPL目前已經(jīng)出到第三版GPLv3。但是,目前使用最廣泛的,還是 GPLv2喔!包括Linux核心就還是使用 GPLv2的說(shuō)!

[if !supportLists]l?[endif]開放源代碼:

由于自由軟件使用的英文為free software,這個(gè)“free”在英文是有兩種以上不同的意義,除了自由之外,免費(fèi)也是這個(gè)單詞!因?yàn)橛羞@些額外的聯(lián)想,因此許多的商業(yè)公司對(duì)于投入自由軟件方面確實(shí)是有些疑慮存在的!許多人對(duì)于這個(gè)情況總是有些擔(dān)心~

為了解決這個(gè)困擾,1998年成立的“開放源代碼促進(jìn)會(huì)(OpenSource Initiative)”提出了開放源代碼(OpenSource,亦可簡(jiǎn)稱開源軟件)這一名詞!另外,并非軟件可以被讀取源代碼就可以被稱為開源軟件喔!該軟件的授權(quán)必須要符合下面的基本需求,才可以算是open source的軟件哩!(注8)

公布源代碼且用戶具有修改權(quán):用戶可以任意的修改與編譯程序碼,這點(diǎn)與自由軟件差異不大;

任意的再傳播:該程序碼全部或部份可以被販?zhǔn)?,且程序代碼可成為其他軟件的組件之一,作者不該宣稱具有擁有權(quán)或收取其他額外費(fèi);

必須允許修改或衍生的作品,且可讓再發(fā)布的軟件使用相似的授權(quán)來(lái)發(fā)表即可;

承上,用戶可使用與原本軟件不同的名稱或編號(hào)來(lái)傳播;

不可限制某些個(gè)人或團(tuán)體的使用權(quán);

不可限制某些領(lǐng)域的應(yīng)用:例如不可限制不能用于商業(yè)行為或者是學(xué)術(shù)行為等特殊領(lǐng)域等等;

不可限制在某些產(chǎn)品當(dāng)中,亦即程序碼可以應(yīng)用于多種不同產(chǎn)品中;

不可具有排他條款,例如不可限制本程序代碼不能用于教育類的研究中,諸如此類。

根據(jù)上面的定義,GPL自由軟件也可以算是開源軟件的一個(gè),只是對(duì)于商業(yè)應(yīng)用的限止稍微多一些而已。與GPL自由軟件相比,其他開源軟件的授權(quán)可能比較寬松喔!比較寬松的部份包括:再發(fā)布的授權(quán)可以跟原本的軟件不同;另外,開源軟件的全部或部份可作為其他軟件的一部分,且其他軟件無(wú)須使用與開源軟件相同的授權(quán)來(lái)發(fā)布!這跟GPL自由軟件差異就大了!自由軟件的GPL授權(quán)規(guī)定,任何軟件只要用了GPL的全部或部份程序碼,那么該軟件就得要使用GPL的授權(quán)!這對(duì)于自由軟件的保障相當(dāng)大!但對(duì)于想要保有商業(yè)公司自己的商業(yè)機(jī)密的專屬軟件來(lái)說(shuō),要使用GPL授權(quán)還是怕怕的!這也是后來(lái)商業(yè)公司擁抱其他 open source開源軟件授權(quán)的緣故!因?yàn)榭梢杂糜谏虡I(yè)行為啰!更多的差異或許可以參考一下開源促進(jìn)會(huì)的說(shuō)明。

另外,Open source這個(gè)名詞只是一個(gè)指引,而實(shí)際上并不是先有 opensource才有相關(guān)的授權(quán)。早在open source出來(lái)之前就有些開源軟件的授權(quán)存在了(例如GPL?。。?!不過(guò)有open source這個(gè)名詞之后,大家才更了解到開源軟件授權(quán)的意義就是了。那常見的開放源代碼授權(quán)有哪些呢?

ApacheLicense 2.0

BSD3-Clause "New" or "Revised" license

BSD2-Clause "Simplified" or "FreeBSD" license

GNUGeneral Public License (GPL)

GNULibrary or "Lesser" General Public License (LGPL) MIT license

MozillaPublic License 2.0

CommonDevelopment and Distribution License

鳥哥也不是軟件授權(quán)的高手!每個(gè)授權(quán)詳細(xì)的內(nèi)容也可以參考OSI協(xié)會(huì)的介紹啦(注9)。

Tips

如前所述,GPL也是合乎Open source所定義的授權(quán)之一,只是它更著重于保護(hù)自由軟件本身的學(xué)習(xí)與發(fā)展就是了!那如果你想要開發(fā)開源軟件時(shí),到底使用哪種授權(quán)比較好呢?其實(shí)跟你對(duì)這個(gè)軟件的未來(lái)走向的定義有關(guān)啦!簡(jiǎn)單的來(lái)說(shuō),如果你的軟件未來(lái)你允許它用于商業(yè)活動(dòng)中,可以考慮BSD之類的授權(quán),如果你的軟件希望少一些商業(yè)色彩,GPLv2大概是不二選擇啰!那如果你的軟件允許分支開發(fā),甚至可以考慮分成兩種版本分別授權(quán)哩!^_^

[if !supportLists]l?[endif]專屬軟件/專利軟件(close source)

相對(duì)于Open Source的軟件會(huì)放出源代碼,close source的程序則僅推出可執(zhí)行的二進(jìn)制程序(binary program)而已。這種軟件的優(yōu)點(diǎn)是有專人維護(hù),你不需要去更動(dòng)他;缺點(diǎn)則是靈活度大打折扣,使用者無(wú)法修改該程序成為自己想要的樣式!此外,若有木馬程序或者安全漏洞,將會(huì)花上相當(dāng)長(zhǎng)的一段時(shí)間來(lái)除錯(cuò)!這也是所謂專利軟件(copyright)常見的軟件出售方式。

雖然專利軟件常常代表就是需要花錢去購(gòu)買,不過(guò)有些專利軟件還是可以“免費(fèi)”提供大眾使用的!免費(fèi)的專利軟件代表的授權(quán)模式有:

Freeware:

http://en.wikipedia.org/wiki/Freeware

不同于Free software,F(xiàn)reeware為“免費(fèi)軟件”而非“自由軟件”!雖然它是免費(fèi)的軟件,但是不見得要公布其源代碼,就看發(fā)行者的意思啰!這個(gè)東西與OpenSource畢竟是不太相同的東西喔!此外,目前很多標(biāo)榜免費(fèi)軟件的程序很多都有小問(wèn)題!例如假借免費(fèi)軟件的名義,實(shí)施用戶數(shù)據(jù)竊取的目的!所以“來(lái)路不明的軟件請(qǐng)勿安裝!”

Shareware:

http://en.wikipedia.org/wiki/Shareware

共享軟件這個(gè)名詞就有趣了!與免費(fèi)軟件有點(diǎn)類似的是,Shareware在使用初期,它也是免費(fèi)的,但是,到了所謂的“試用期限”之后,你就必須要選擇“付費(fèi)后繼續(xù)使用”或者“將它移除”的宿命~通常,這些共享軟件都會(huì)自行撰寫失效程序,讓你在試用 期限之后就無(wú)法使用該軟件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容