歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux、開源軟件發展史

Linux、開源軟件發展史

日期:2017/3/1 12:00:48   编辑:關於Linux

今天,Linux以及開源軟件已經占據了大部分企業的服務器。但是,和我一批差不多剛剛進入軟件行業幾年的程序員來說,我們現在只能被動的接受和使用這些東西,如果不認真廣泛的搜索一大堆資料,我們真的很難了解它們的過去……

試問,你不了解它的過去,你怎麼參與到它的未來呢?

概述

我們真的離美國、離硅谷、離那些不算遙遠“激情燃燒的歲月”太遠了!
今天,我要嘗試去發掘那些過去,認真了解我們眼前的自由軟件是如何走到今天的。


一切就緒,從哪裡開始呢?
如果按照時間線顯然會太雜亂了,我想,按照幾個關鍵詞會是比較好的方式。

1. UNIX

接上篇C語言、編程語言發展史 所述,在貝爾實驗室 中由於近似好奇或興趣的驅動,UNIX被創建了出來。

1.1 UNIX版本歷史

1. 發展壯大:
此後的10年,UNIX在學術機構和大型企業中得到了廣泛的應用,當時的UNIX擁有者at&t公司以低廉甚至免費的許可將UNIX源碼授權給學術機構做研究或教學之用,許多機構在此源碼基礎上加以擴充和改進,形成了所謂的“UNIX變種”,這些變種反過來也促進了UNIX的發展,其中最著名的變種之一是由加州大學伯克利分校開發的伯克利軟件套件(Berkeley Software Distribution,BSD)產品。

2. 版權之爭:
後來at&t 意識到了UNIX的商業價值,不再將UNIX源碼授權給學術機構,並對之前的UNIX及其變種聲明了版權權利。BSD在UNIX的歷史發展中具有相當大的影響力,被很多商業廠家采用,成為很多商用UNIX的基礎。其不斷增大的影響力終於引起了at&t 的關注,於是開始了一場持久的版權官司,這場官司一直打到at&t 將自己的UNIX系統實驗室賣掉,新接手的Novell采取了一種比較開明的做法,允許柏克萊分校自由發布自己的UNIX變種,但是前提是必須將來自於AT&T的代碼完全刪除,於是誕生了4.4 BSD Lite版,由於這個版本不存在法律問題,4.4 BSD Lite成為了現代柏克萊軟件包的基礎版本。盡管後來,非商業版的UNIX系統又經過了很多演變,但其中有不少最終都是創建在BSD版本上(Linux、Minix等系統除外)。所以從這個角度上,4.4 BSD 又是所有自由版本UNIX的基礎,它們和System V及Linux等共同構成UNIX操作系統這片璀璨的星空。

3. 以上總結
也就是說:現在的UNIX或者類UNIX分為3類

正統UNIX - System V,商業、收費的;

BSD衍生版本,非商業,大部分免費;

類UNIX,如Linux;

附上Wikipedia上的UNIX發展歷史:
這裡寫圖片描述
到2007年的UNIX/類UNIX發展圖

1.2 POSIX、正統UNIX

1. POSIX:

Portable Operating System Interface of UNIX,POSIX(UNIX的可移植操作系統接口)。見名知意,POSIX是一種統一UNIX操作系統接口的規范。

當前的POSIX主要分為四個部分:Base Definitions、System Interfaces、Shell and Utilities和Rationale。

Linux基本逐步實現了POSIX兼容,但沒有參與正式認證。微軟的Windows NT聲稱部分實現了POSIX標准。

2. 正統UNIX:

單一UNIX規范 是一套UNIX系統的統一規格書,它擴充了POSIX,定義了標准UNIX操作系統

只有符合單一UNIX規范 的UNIX系統才能稱為:UNIX系統,否則只能稱:為類UNIX(UNIX-like)

單一UNIX規范 的歷史:

1980年代中,開始有人提出計劃,想要統一不同UNIX 操作系統的接口。 1988年,這些標准被匯整為IEEE 1003(ISO/IEC 9945),也就是POSIX。 1990年代,發布共通應用程序界面規格(Common API Specification),又稱為Spec 1170。 1997年,單一UNIX規范第二版(Single UNIX Specification version 2)。 2001年: POSIX:2001, 單一UNIX規范第三版。 2004年:POSIX:2004。 2008年:POSIX:2008。

符合規范的UNIX有:

AIX HP/UX OS X ( 原 Mac OS X ) Reliant UNIX SCO Solaris Tru64 UNIX z/OS K-UX

2. Stallman - 自由軟件運動

2.1 自由軟件運動 - free software

這個運動是什麼?為什麼會產生這種運行呢?

二十世紀六十年代,IBM 等公司所開發的軟件都是自由分發的。那個時候的商業模式都是以硬件為中心,軟件只是被看作使硬件工作的東西。他們提供軟件的同時也提供源代碼,軟件可以被修改並因此得到改進,這便是現在開源軟件的早期情況。

但是,隨著硬件價格的不斷下跌,銷售硬件的利潤也逐漸減小,制造商開始期望軟件能夠帶來額外的收入。越來越多的廠商開始單獨銷售軟件,也不再提供軟件的源代碼。

1983年春天,Richard Matthew Stallman,這位曾經在 MIT 人工智能實驗室工作的程序員,發起了 GNU 項目,旨在開發一個自由的類 UNIX 的操作系統。他為專有軟件的增長和隨之而來的用戶不再能夠修改他們電腦上的程序而憂心忡忡。軟件開發者被束縛,有悖自由精神的現象隨之普遍發生。GNU 項目的創立,標志了自由軟件運動的開始,隨後的 1985年10月,Stallman 又創立了自由軟件基金會(Free Software Foundation, FSF)。

需要明白的是(以下是Stallman原話的中譯):

“自由軟件”是權利問題,不是價格問題。要理解這個概念,自由應該是“言論自由”中的“自由”,而不是“免費啤酒”中的“免費”。
自由軟件關乎使用者運行、復制、發布、研究、修改和改進該軟件的自由!

2.1 Stallman其人

理查德·馬修·斯托曼(Richard Matthew Stallman RMS,1953-今)是自由軟件運動的精神領袖,GNU計劃以及自由軟件基金會(Free Software Foundation)的創立者、著名黑客。

他的主要成就包括Emacs及後來的GNU Emacs,GNU C 編譯器及GNU 除錯器。 他所寫作的GNU通用公共許可證(GNUGPL)是世上最廣為采用的自由軟件許可證,為copyleft觀念開拓出一條嶄新的道路。他最大的影響是為自由軟件運動豎立了道德、政治以及法律框架。他被許多人譽為當今自由軟件的斗士、偉大的理想主義者,但同時也有人批評他過於固執、觀點落伍。

這裡寫圖片描述

1953年斯托曼出生於美國紐約曼哈頓地區;

1971年進入哈佛大學學習,同年受聘於麻省理工學院人工智能實驗室(AI LaboratZ喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcnmjqaOss8nOqtK7w/vWsNK1utq/zaGjINTaQUnKtdHpytK5pNf3xtq85KOsy7nN0ML8v6q3osHLtuDW1r3xuvPTsM/sye7UtrXEyO28/qOsxuTW0Nfu1vjD+7XEvs3Kx0VtYWNzoaPLuc3QwvzU2kFJysfSu8P7teTQzbXEutq/zaOsysfV+7j2utq/zc7Eu6+1xNK7t93X06GjPC9wPgo8cD4xOTgwxOq686Osutq/zcnnyLrU2sjtvP65pNK1yczStbuvtcTHv7Tz0bnBps/CyNW9pc3BscDN373io6zJ9dbBwaxBScq10enK0rXE0O224Lrav83Sstfps8nBy1N5bWJvbGljuavLvqOsytTNvNLU16jA+8jtvP7AtMihtPrKtdHpytLW0Lrav83OxLuvtcSy+s7vIC0gw+K30b/J19TTycH3zai1xMjtvP6ho8u5zdDC/LbUtMu40LW9xvi339Przt7EzqGjPC9wPgo8cD4xOTg1xOqjrNTattRTeW1ib2xpY7340NDBy9K7ts7KsbzktcS/udX5uvOjrMv71+7W1beise3By9b4w/u1xEdOVdD70dQoR05VIE1hbmlmZXN0bymjrNX9yr3Q+7K80qq/qsq8vfjQ0NK7z+666s6wtcS8xruuo7q0tNTs0rvM183qyKvX1NPJw+K30aOsvObI3dPaVU5JWLXEstnX98+1zbNHTlWjqEdOVaGvcyBOb3QgVU5JWCGjqaGjPC9wPgo8cD4xOTg1xOoxMNTCo6zL+9PWvajBosHL19TTycjtvP67+b3wu+GjqEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbqOpwLTQrdb6R05VvMa7rqGjPC9wPgo8cD4xOTg5xOqjrMv70+vSu8i6wsnKpsbwst3By7njzqrKudPDtcRHTlXNqNPDuau5stCt0unWpMrpo6hHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgR05VIEdQTKOpo6y0tNTs0NS12Mzhs/bBy6Gwt7Sw5sioIC0gY29weWxlZnShsLXEuMXE7qGjIM2syrGjrEdOVbzGu67W0LP9wcvX7rnYvPy1xEh1cmSy2df3z7XNs8TausvWrs3io6zG5Mv7vvi087bgyv3I7bz+0tG+rc3qs8mhozwvcD4KPHA+MTk5McTqo6y30sC8tPPRp8n6PHN0cm9uZz5MaW51cyBUb3J2YWxkczwvc3Ryb25nPtTaR1BMzPXA/c/Ct6KyvMv719S8urS01/e1xExpbnV4stnX98+1zbPE2rrLo6zWwbTLR05VvMa7rtX9yr3N6rPJo6yy2df3z7XNs7G7w/zD+86qR05VL0xpbnV4o6i78rzys8ZMaW51eKOpoaM8L3A+Cgo8cD7Luc3QwvzKx9K7w/u84baotcTX1NPJyO28/tTLtq+zq7W81d/T68bky/vM4bOrv6q3xdS0tPrC67XEyMuyu82so6zLuc3QwvyyorK7yse008jtvP7WysG/tcS9x7bItvjKx7TTPHN0cm9uZz61wLXCtcS9x7bIPC9zdHJvbmc+wLS/tLT919TTycjtvP6ho8v7yM/Oqsq508PXqMD7yO28/srHt8ezo7K7tcC1wrXEysKjrNa709C4vbT4wcvUtLT6wuu1xLPM0PKyxcrHt/u6z8bktcC1wrHq17y1xKGjttS0y9DttuDIy7Htyr7S7NLpo6yyotKy0vK0y9PQwcs8c3Ryb25nPtfU08nI7bz+1Mu2rzwvc3Ryb25nPtPrPHN0cm9uZz6/qtS0yO28/tTLtq88L3N0cm9uZz7WrrfWoaM8L3A+CgoKCgo8aDIgaWQ9"22-gnu和gpl">2.2 GNU和GPL

GNU計劃是由Richard Stallman在1983年9月27日公開發起的。它的目標是創建一套完全自由的操作系統。Richard Stallman最早是在net.unix-wizards新聞組上公布該消息,並附帶《GNU宣言》等解釋為何發起該計劃的文章,其中一個理由就是要“重現當年軟件界合作互助的團結精神”。

可以理解GNU計劃是:開發出一個兼容UNIX接口的全新的自由的操作系統。

也就是說:此OS應該是類似UNIX的,但完全不是UNIX。

GPL
為保證GNU軟件可以自由地“使用、復制、修改和發布”,所有GNU軟件都有一份在禁止其他人添加任何限制的情況下授權所有權利給任何人的協議條款,GNU通用公共許可證(GNU General Public License,GPL)。即反版權 - Copyleft 概念。

但是GPL過於自由(嚴格),只要用到了GPL的軟件,那麼自身也必須遵守GPL,這讓很多人不能接受。

承接上文所說“對此許多人表示異議,並也因此有了自由軟件運動與開源軟件運動之分”,後文會說開源軟件運動。

GNU是“GNU is Not UNIX”的遞歸縮寫。Stallman宣布GNU應當發音為Guh-NOO(革奴)以避免與new這個單詞混淆(注:Gnu在英文中原意為非洲牛羚,發音與new相同)。

這裡寫圖片描述

在當時,UNIX是一種廣泛使用的商業操作系統的名稱。由於GNU將要實現UNIX系統的接口標准,因此GNU計劃:分別開發不同的操作系統部件。GNU計劃采用了部分當時已經可自由使用的軟件,例如TeX排版系統和X Window視窗系統等。不過GNU計劃也開發了大批其他的自由軟件。這包括了:

Emacs:一個功能強大的文字編輯器; GCC:GNU Compiler Collection,GNU編譯器集合; 大部分UNIX系統程序庫和工具; 但是,唯一沒有完成的重要組件就是操作系統的內核(稱為:HURD)

3. Linus - Linux

上文說到,萬事俱備只欠一個OS內核了(正在開發),此事暫時放下不表。

3.1 Linus - 林納斯

1991年,大洋彼岸的歐洲,芬蘭赫爾辛基,21歲的赫爾辛基大學大學生,林納斯·托瓦茨(Linus Torvalds)開始在一台386sx兼容微機上學習minix (也是UNIX-like)操作系統。不久之後,林納斯覺得minix 並不好用,隨後他開始著手自己開發一個類UNIX系統。

這裡寫圖片描述
(題外話,git也是這guy開發的)

1991年4月13日在comp.os.minix 上發布說自己已經成功地將bash 移植到了minix 上,而且已經愛不釋手、不能離開這個shell 軟件了。

1991年7月3日,第一個與Linux有關的消息是在comp.os.minix上發布的(當然此時還不存在Linux這個名稱,當時林納斯·托瓦茲的腦子裡想的可能是FREAX,FREAX的英文含義是怪誕的、怪物、異想天開等)。

1991年的10月5日,林納斯·托瓦茲在comp.os.minix新聞組上發布消息,正式向外宣布Linux內核的誕生(Freeminix-like kernel sources for 386-AT)

1993年,大約有100余名程序員參與了Linux內核代碼編寫/修改工作,其中核心組由5人組成,此時Linux 0.99的代碼大約有十萬行,用戶大約有10萬左右。

1994年3月,Linux1.0發布,代碼量17萬行,當時是按照完全自由免費的協議發布,隨後正式采用GPL協議。

在自由軟件之父斯托曼 的某些精神感召下,Linus很快將這個操作系統內核加入到了GUN 計劃中,並通過GPL授權。越來越多的全球范圍的程序員加入到開發和維護Linux的工作中來了。

需要明白的點:

從技術上說Linux只是一個內核。內核 指的是一個提供硬件抽象層、磁盤及文件系統控制、多任務等功能的系統軟件。

一個內核並不是一套完整的操作系統。有一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux(在該系統中包含了很多GNU計劃的系統組件)。

3.2 Linux

准確來說,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和數據庫的操作系統。

在Linux加入GNU伊始,原UNIX內核的開發計劃並沒有改變,但是隨著Linux越來越多流行,在事實上GNU + Linux 已經成為了GNU計劃的最終產物。

命名:
隨後在90年代中期,斯托曼 要求Linux更名為“GNU/Linux”但鑒於當時Linux已經流行,且Linux朗朗上口簡短好記,Linux社區沒有采納這個名稱。雖然Linux內核只占此系統的3%,而GUN 的代碼占據了28%。當然,也有部分人認為操作系統 一次就是指的內核(Kernel),而那些其他程序只能稱為應用軟件

這裡寫圖片描述

3.3 Linux distribution - 發行版

上文說到,Linux只是內核,而Linux + GNU 可以組成一個不算完全的操作系統。雖然這些都是自由軟件,但是用戶自己去組合和拼裝還是有一定難度。所以出現了Linux 發行版

Linux 發行版(Linux distribution,也被叫做GNU/Linux 發行版),為一般用戶預先集成好的Linux操作系統及各種應用軟件。一般用戶不需要重新編譯,在直接安裝之後,只需要小幅度更改設置就可以使用,通常以軟件包管理系統來進行應用軟件的管理。

Linux發行版通常包含了包括桌面環境、辦公包、媒體播放器、數據庫等應用軟件。這些操作系統通常由Linux內核、以及來自GNU計劃的大量的函數庫,和基於X Window的圖形界面。有些發行版考慮到容量大小而沒有預裝 X Window,而使用更加輕量級的軟件,如:busybox, uclibc 或 dietlibc。現在有超過300個Linux發行版。大部分都正處於活躍的開發中,不斷地改進。

1995年1月,Bob Young創辦了RedHat(小紅帽),以GNU/Linux為核心,集成了400多個源代碼開放的程序模塊,搞出了一種冠以品牌的Linux,即RedHat Linux,稱為Linux Distribution - 發行版,在市場上出售。這在經營模式上是一種創舉。

發行版可以分為商業、社區、和非商非社版。我們聽說和使用最多的有:Red Hat、Debian、Ubuntu、CentOS等


4. 開源軟件運動

1998年2月,以Eric Raymond為首的一批年輕的”老牛羚骨干分子”終於認識到GNU/Linux體系的產業化道路的本質,並非是什麼自由哲學,而是市場競爭的驅動,創辦了Open Source Intiative(開放源代碼促進會)“復興”的大旗,在互聯網世界裡展開了一場歷史性的Linux產業化運動。

開源軟件(open source software),是說源代碼可以任意獲取的計算機軟件,這種軟件的版權持有人在軟件協議的規定之下保留一部分權利並允許用戶學習、修改、增進提高這款軟件的質量。

開源協議通常匹配開放源代碼的定義 的要求,如果人為設置一些源碼開放條件限制,則稱之為:公開源代碼的免費軟件(Freeware)。

一些開源軟件被發布到公有領域。開源軟件常被公開和合作地開發。開源軟件是開放源代碼開發的最常見的例子,也經常與用戶生成內容做比較。 開源軟件的英文“open-source software”一詞出自自由軟件的營銷活動中。
這裡寫圖片描述

4.1 與自由軟件區別

許多人將開放源代碼與自由軟件(free Software)視為相同,但若以定義條件而言,自由軟件僅是開放源代碼的一種,也就是自由軟件的定義較開放源代碼更為嚴格。

4.2 BSD License

BSD license(Berkeley Software Distribution License),是自由軟件中使用最廣泛的許可證之一。BSD軟件就是遵照這個許可證來發布,該許可證也因此而得名。
BSD包最初所有者是加州大學的董事會,這是由於BSD源自加州大學伯克利分校。BSD開始後,BSD許可證得以修正,使得以後許多BSD變種,都采用類似風格的許可證。

其實BSD許可證條款很少,不妨列出如下:


許可證文本被認為遵循公有領域,所以可以不受限制地修改。為了滿足個人或團體的需要,用戶可以隨意地將’Regents of the University of California’(加州大學董事會), ‘University of California, Berkeley’(加州大學伯克利分校),以及’Regents’(董事會)替換成自己的名稱。

* Copyright (c) 1998, Regents of the University of California
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
*     * Redistributions of source code must retain the above copyright
*       notice, this list of conditions and the following disclaimer.
*     * Redistributions in binary form must reproduce the above copyright
*       notice, this list of conditions and the following disclaimer in the
*       documentation and/or other materials provided with the distribution.
*     * Neither the name of the University of California, Berkeley nor the
*       names of its contributors may be used to endorse or promote products
*       derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* Copyright (c) 1998 著作權由加州大學董事會所有。著作權人保留一切權利。
* 
* 這份授權條款,在使用者符合以下三條件的情形下,授予使用者使用及再散播本
* 軟件包裝原始碼及二進位可執行形式的權利,無論此包裝是否經改作皆然:
* 
* * 對於本軟件源代碼的再散播,必須保留上述的版權宣告、此三條件表列,以
*   及下述的免責聲明。
* * 對於本套件二進位可執行形式的再散播,必須連帶以文件以及/或者其他附
*   於散播包裝中的媒介方式,重制上述之版權宣告、此三條件表列,以及下述
*   的免責聲明。
* * 未獲事前取得書面許可,不得使用柏克萊加州大學或本軟件貢獻者之名稱,
*   來為本軟件之衍生物做任何表示支持、認可或推廣、促銷之行為。
* 
* 免責聲明:本軟件是由加州大學董事會及本軟件之貢獻者以現狀提供,
* 本軟件包裝不負任何明示或默示之擔保責任,包括但不限於就適售性以及特定目
* 的的適用性為默示性擔保。加州大學董事會及本軟件之貢獻者,無論任何條件、
* 無論成因或任何責任主義、無論此責任為因合約關系、無過失責任主義或因非違
* 約之侵權(包括過失或其他原因等)而起,對於任何因使用本軟件包裝所產生的
* 任何直接性、間接性、偶發性、特殊性、懲罰性或任何結果的損害(包括但不限
* 於替代商品或勞務之購用、使用損失、資料損失、利益損失、業務中斷等等),
* 不負任何責任,即在該種使用已獲事前告知可能會造成此類損害的情形下亦然。

總結

如上所述,軟件行業的版權發展思路就是如下三種:

Copyright - 完全限制
要遵守限制重重的著作權 - Copyright。

Copyleft - 完全自由
帶有基於政治(是類似言論自由這種)以及哲學思想的理想主義方式。如GPL,必須完全自由,只要跟GPL有關系就必須也是GPL。

Copycenter - 開放
如BSD License,BSD的後續版本可以選擇要繼續是BSD或其他自由軟件條款或封閉軟件等等。

這三種思路現在都各有各的發展,都有其適用情況。

對商業公司來說Copyright 是商業必須!

對自由軟件運動斗士和生來就有自由基因的軟件來說Copyleft 是一種信仰!

對開源擁護者,但也想獲得商業利益的人來說Copycenter 是最好的選擇!

Copyright © Linux教程網 All Rights Reserved