開源歷史柴米油鹽計劃

開源軟體簡史(一)

Author: Demon --- Law & Script
開源軟體簡史(二)鏈接門
開源軟體簡史(三)鏈接門

Unix 的誕生

「軟體共享的歷史與計算機一樣長久,如同人類自烹飪依始就交換食譜一樣。」 --- Richard Stallman

實際上,在計算機出現的最初年代,由於能夠使用計算機的都是軟體開發者或研究人員,軟體提供它們的源代碼是天經地義的事。將軟體以源代碼形式提供給用戶,軟體問題可以由用戶們(同時也是軟體開發者、計算機科研人員)自己修改解決,這樣不僅能緩解計算機企業的售後服務壓力,特定硬體平台上的用戶們還可以對自己的軟體進行修改來滿足一些特定的需求。使用相同硬體的計算機科研人員或愛好者會組成特定的小團體,共享技術心得和自己編寫、修改的程序。

1969年11月,美國國防部高級研究計劃管理局( Advanced Research Projects Agency )開始建立一個命名為 ARPAnet 的網路,通過專門的介面信號處理機( IMP )和專門的通信線路,把美國的幾個軍事及研究用電腦主機聯接起來,其4個結點分布在洛杉磯的加利福尼亞州大學洛杉磯分校、加州大學聖巴巴拉分校、斯坦福大學、猶他州大學四所大學的4台大型計算機。起初是為了便於這些學校之間互相共享資源而開發的。作為 Internet 的鼻祖,雖然 ARPAnet 的設計目的是使研究人員在合作一個項目時可以共享代碼和信息,但是它也成為了對開放源代碼可行性的一個展示。

1965年時,美國電話電報公司( AT&T )下屬的貝爾實驗室加入一項由通用電氣和麻省理工學院合作的計劃,這項野心勃勃的計劃旨在建立一套多使用者、多任務、多層次的 MULTICS 操作系統,用於取代當時通用的只支持30台終端訪問主機的分時操作系統( Compatible Time-Sharing System )。但到了1969年,由於 MULTICS 計劃制定的目標太多太大,項目距離完成遙遙無期,實際拿出的產品也不能叫人滿意,該項目最終被喊停。

1969年的夏天,貝爾實驗室的研究員 Ken Thompson 和 Dennis Ritchie 吸取了之前的教訓,採取了「保持簡單」的策略,一起用彙編語言在 DEC PDP-7 機器上寫出了一個新的多任務操作系統,這就是 Unix 。說起這個名稱, MULTICS 其實是「 Multiplexed Information and Computing Service 」的縮寫,原本計劃能同時支持1000用戶的系統,最後只能支持到2位用戶,於是貝爾實驗室的人們就開玩笑地稱他們的系統其實是:「 UNiplexed Information and Computing Service ",縮寫為" UNICS ",後來,大家取其諧音,就稱其為" UNIX "了。

Unix 的第一版是完全用彙編語言編寫的,雖然運行起來效率非常高,但這也意味著它無法直接在非 PDP-7 的機器上運行,以至於次年 Ken 所在的研究小組申請到了一台性能更加強大的 PDP-11/20 時,他們不得不把整個操作系統重寫一遍以完成移植。

Unix 最初只在貝爾實驗室內部流轉,因為大家並不喜歡 DEC 機器自帶的操作系統,所以實驗室內越來越多的人換上了 Unix 。漸漸的, Ken 還收到了外部的人索要Unix的磁碟拷貝寄來的郵件,由於數量不多, Ken 也一併寄給了他們。不過,隨著越來越多的人想要在不同的機器上使用這套系統,他們意識到有必要用高級語言來重寫這套系統。最初,他們在 Unix 第二版中使用的是 B 語言,這是 Ken 以劍橋大學的 BCPL 語言為基礎設計的一種簡便易用的語言。但由於其在進行系統編程時依舊不夠強大,所以 Dennis 對其進行改造形成了一種新的語言,他取了 BCPL 的第二個字母作為這種語言的名字,這就是今日影響力巨大的 C 語言。隨著1973年 C 語言的完成,兩人迫不及待地投入到用 C 語言重寫 Unix 的工作中,不久第三版的 Unix 便誕生了。用 C 語言編寫的 Unix 代碼簡潔緊湊、易讀、易修改、可移植,從此 Unix 操作系統的修改、移植變得相當便利,為 Unix 日後的普及打下了堅實的基礎。而在當時那個為了實現最高運算效率而完全用彙編語言編寫操作系統的時代, Ken 和 Dennis 此舉是極具創新和革命意義的,他們清楚地意識到需要在效率和效用之間取得平衡。用彙編寫的 Unix 會更快和更小,但用 C 語言寫的系統變得如此的易於修改、理解和移植,所以他們認為犧牲速度和內存是值得的。

1974年, Ken 和 Dennis 在7月的《 The Communications of the ACM 》上發表了一篇「T he UNIX Time Sharing System 」的文章向外界介紹 Unix ,引起了學術界的廣泛關注,向其索取源碼的請求更是源源不斷。於是乎,Unix 第五版就以「僅用於教育目的」的協議提供給各大學作為教學之用,費用也只是象徵性地收取了製作磁碟和手冊的成本。由於其近乎免費和可獲得的源碼, Unix 很快成為當時操作系統課程中的範例,各大學和公司也開始對 Unix 進行了各種各樣的改進和擴展, Unix 逐漸風行大街小巷。

致電腦愛好者的公開信

Ken 和 Dennis 的研究小組仍在積極地投入 Unix 的開發當中,他們的小組被稱為「 Research 」(內部稱為「1127」),與此同時,他們避免對外作出提供支持的承諾。這是因為 AT&T 受制於《反托拉斯法》的規定,無法進入電話、電報以外的行業,這也是它允許人們免費獲得 Unix 源代碼的重要原因。相應的,它不向用戶提供軟體技術支持和售後服務。於是人們便有了相互支持和共享錯誤信息的動機。但當時並沒有互聯網,這種共享往往通過學者間的遊學和研究人員的交流會的形式完成,人們通過磁碟/軟盤等形式分享改進過的源代碼,這便是早期以物理形式存在的社區。

70年代,隨著軟體規模與複雜程度的提高,以及「福特主義」的興起,商業軟體開始了分工化的進程,軟體工程內部分成了負責設計軟體的功能與結構的設計員以及負責具體實現軟體功能的編碼員。這種由一個人或少數人負責總體設計和監督完成項目的模式由於和中世紀的大教堂建造非常相似,因而被稱為大教堂模式。與此同時,計算機用戶的平民化,和出於保護自家技術、確保公司盈利能力的目的,軟體產品開始走向閉源,即只提供可運行的軟體程序而不包括其源代碼。對於兩者的理解, Eric Raymond 用了一個有趣的比喻:「源代碼就像菜譜,而可運行軟體則是依照菜譜烹調出來的菜品,擁有菜譜的人可以輕易地烹調出同樣的美味,而吃過菜品的人卻不能夠反推出其菜譜。」也就是說,閉源將使得用戶無法知道軟體實現的原理,通過修改代碼以滿足自己特別需求的願望也無法實現。在這方面,微軟稱得上是一個先鋒。

1975年,微軟公司成立,他們推出的第一個產品 Basic 編程軟體深受人們的喜愛,幾乎成為每台電腦上必備的軟體。由一群計算機愛好者和發燒友組成的「家用計算機俱樂部」是當時最著名的社區之一,俱樂部有一個不成文的規定,會員可以從俱樂部帶走軟體的磁碟,只要下次會議時帶回兩份拷貝給其他會員就行了。這是當時人們習以為常的軟體傳播方式,微軟的 Basic 程序就這樣被安裝在了許多俱樂部成員的電腦上,而實際上只有原始的拷貝是從微軟那裡付了錢買來的。不久,蓋茨便寫了一封「致電腦愛好者的公開信」,其措辭簡單明了,直接指責這種行為稱「你們大多數人都是在剽竊軟體」,接著他從觸犯知識產權和抑制創新的角度闡述「誰能夠承擔得起沒有收入的工作?什麼樣的愛好者可以讓3個人長年累月無償地投入編程工作中,找出所有的錯誤,編製產品手冊並進行發布呢?」 私有軟體和開源軟體從此成了勢不兩立的仇家。

BSD ( Berkeley Software Distribution )

同年, Ken Thompson 獲得了帶薪休假一年的機會,他選擇到加州大學伯克利分校訪學,與他一起的,是他隨身攜帶的最新的 Unix 第六版的源碼磁碟。伯克利的 Computer & Science Research Group ( CSRG,就是在大學裡對計算機有興趣的同學、教授,一起搗鼓計算機的一群人)成員對於 Ken 的到來歡欣鼓舞,早在 Unix 發布之時 Bob Fabry 教授便為伯克利爭取到了一份拷貝並在校園內招募到了一批有興趣研究和改進這一系統的人,其中一名學生 Bill Joy 的表現尤為突出,他可以算是小組的領導人之一。 Ken 到了伯克利之後也沒有閑著,他當時在開發一個可以工作在 Unix 上的 Pascal 解釋器, CSRG 的人們加入其中,他們共同改進 Unix 的代碼,添加新的功能。

1977年,其他大學的人們也開始對伯克利的軟體感興趣, Bill Joy 便開始著手編譯他們自己的操作系統,正如早期的 Unix 一樣,期間他們陸續有收到一些外界的代碼改進和反饋,這些也一併被包含其中,待到下一個版本中一起發布。到了1978年3月完工時他們將捆綁了自家軟體的改進過的第六版 Unix 以 1BSD ( 1st Berkeley Software Distribution )的名稱對外發布。 1BSD 中包含了他們改進過的 Pascal 解釋器,還包括了一些新的設備驅動程序,對核心的修改, ex 文字編輯器,和一個比 V6 的 Shell 更好用的 Pascal Shell ,適配的平台為 PDP-11 。 1BSD 一共分發出了30份左右的拷貝。

2BSD 於1979年5月時發布,適配平台依然是 PDP-11 ,這個版本除了一些軟體的更新之外,最大的變化應該是 vi 編輯器的加入,這一編輯器是今日依舊非常流行的 vim 編輯器的前身。同年,伯克利購置了一台 DEC 最新款 VAX 機器,為了充分發揮這台機器的性能,小組成員們繼續埋頭工作,於年底前發布了 3BSD ,這一版本提供了 VAX 機器的介面以及虛擬內存的功能,從這一版本開始 BSD 一直使用 VAX 介面。 4BSD 於1980年底發布,添加了 Job-Control 功能,允許用戶掛起進程。次年發布了 4.1BSD ,這一版本原本應該是稱為 5BSD 的,但 AT&T 擔心會與自家的 Unix System V 產生混淆,所以改稱。 4.1BSD 沒有大的軟體升級,不過其面對的是 VAX 機器自帶的系統 VMS 在性能上表現出的優勢,於是這一版本可以說花費了很大的力氣進行系統層面的性能校正。 4.2BSD 帶來了較大的功能更新,這也使這一版本的開發周期延長到了2年,到1983年8月才正式發布。新版本添加了完全由伯克利開發的 TCP/IP 協議棧,快速文件系統(將磁碟的扇區由 512B 增加到 4KB ),以及對 NFS 文件系統的支持。BSD最大的貢獻大概要數 TCP/IP 了,在 Windows NT 中也依靠 BSD 的代碼來實現。

1982年 CSRG 小組迎來變故,小組的核心成員 Bill Joy 選擇離開伯克利並創立了 Sun 微系統公司,他將之前自己領導開發的 BSD 繼續發展成為 SunOS 操作系統(後來的 Solaris ),與德州儀器合作設計了 Sparc 微處理器,在90年代依靠出售其高性能、平價的 Sparc 系列工作站狠狠賺了一筆, Sun 的股價也一度超過 IBM 。

1984年美國司法部依據《反托拉斯法》起訴美國電話電報公司構成壟斷,聯邦法院判決將其分拆成一個專營長途電話業務的新 AT&T 公司和7個本地電話公司,之前對其進入計算機行業的限制也因此同時被取消。正如大家所預見到的, AT&T 沒有放過 Unix 這塊大肥肉的商業價值,不久之後 Unix 便不再提供源代碼,轉而收取高達2~20萬美元的授權費。

再說說這幾年間 Unix 的發展。1979年的 Unix 7 是最後一個廣泛發布的研究型 Unix 版本,之後 Unix 的許可證開始禁止大學使用 Unix 的源碼,包括在授課中學習,80年代相繼發布的 8、9、10 版本只授權給了很少的幾家大學。1981年, AT&T 基於版本7開發了 Unix System Ⅲ 的第一個版本,這是一個僅供出售的商業版本,不過其依然提供源代碼。同時,為了解決市場上混亂的 Unix 版本情況, AT&T 綜合其他大學和公司的各種 Unix 和軟體,開發了商業版 Unix System V Release 1 並於1983年發布,這一版本開始不再提供源代碼。以 System V 命名的 Unix 在80年代陸續又發布了幾個版本的更新,在當時具有強大的影響力, IBM 的 AIX 和 HP 的 HP-UX 等 Unix 變種皆是基於 System V 開發。

回到伯克利, 4.3BSD 於1986年6月發布,常規更新。由於此時各個版本的 BSD 都含有 Unix 代碼,雖然 BSD 可以免費獲取到,但作為衍生的產品,要使用 BSD 卻不得不向 AT&T 支付高昂的授權費。於是一個分支項目便應運而生,項目利用 BSD 自行開發、公布在網路上的那部分代碼開發了一個新的版本,於1989年6月公布,取名 Networking Release 1 ( Net/1 )。由於 Net/1 去掉了私有部分的 Unix 代碼,它並不是一個完整的操作系統而更像是一個軟體包。當然,人們並不會輕易放棄, Net/2 的計劃很快被提上日程,這次的目標是把所有私有 Unix 代碼重寫以形成一個完整的操作系統。時間一晃就是兩年,1991年6月 Net/2 發布,儘管完全重寫的目標是基本上實現了,不過這次依然不完整,由於 Unix 內核部分的6個文件編寫難度太大,小組的成員最後決定將缺少這6個文件的版本公布,希望外界能有大神級的開發者幫助他們補齊為一個完整的系統。

過了半年多時間, Bill Jolitz 夫婦合作完成了缺失的6個文件,並將其源碼公佈於網上給人下載,取名為 386BSD 。 Jolitz 曾參與過 BSD 早期版本的開發,而他們的代碼也正如其名字一樣,是為兼容當時流行的 Intel 80386 機器開發的。後來 Jolitz 作為聯合創始人加入了 BSDi ( Berkeley Software Design Inc ),繼續改進這部分的代碼, BSDi 是由原 CSRG 的幾名成員成立的一家公司,他們把補齊文件之後以 BSD/386 (後改稱 BSD/OS )命名的系統以市場可以接受的價格( $995 )出售,取得了不錯的銷售成績。

BSDi 以大幅低於 System V 的價格銷售,甚至在廣告中使用了「 1-800-ITS-Unix 」這樣帶挑釁意味的客服電話,這對 Unix 的銷量來說是一個很大的威脅,看不過眼的 AT&T 不久便將對方告上了法庭,時間是1992年,理由是其銷售的系統中含有私有的 Unix 代碼,隨後伯克利的師生也被捲入這場訴訟當中。依據原告的申請,法院簽署了禁止令, Net/2 及其派生的版本都被禁止在市面上傳播,期間由於法院的調查, BSD 的大部分開發工作也被擱置。這場官司曠日持久,鬧得人心惶惶,學生和教師以及校委員會被要求出庭作證, Net/2 的全部代碼作為證據必須接受原告和法庭的仔細審核以確保其中如伯克利所說的已不包含有 Unix 的私有代碼。期間, AT&T 將 Unix 版權出售給了 Novell ,接手的 Novell 不打算繼續扯皮,遂與伯克利達成了和解。這樁官司最終在1994年1月結案,根據調解協議, Net/2 的18000個文件中有3個文件需要刪除,另有68個文件需要添加 Unix 的版權聲明,協議中還要求,原告不得針對使用或開發 4.4BSD 的任何人及組織提起進一步的訴訟。

既然官司打完了,大家又可以回去各干各的活兒了。6月份, 4.4BSD 發布,這次分為完全包含伯克利代碼並可自由分發使用的 4.4BSD-Lite (不完整),和包含 Unix 代碼並需要取得授權才可使用的 4.4BSD-Encumbered 兩個版本。1995年的 4.4BSD-Lite Release 2 是最後一個由伯克利開發的BSD版本,隨著 CSRG 小組的解散, BSD 的開發也開始走出這座校園,到更廣闊的天地里去。

在這之後,基於 386BSD 逐漸形成了三個「主流」的 BSD 分支: FreeBSD 是最受歡迎的 BSD ,針對高性能和易用性,它為 x86和 x64 架構的處理器提供了最好的支持。 NetBSD 被設計成可以運行在幾乎任何計算架構上,具備高度的可移植性。 OpenBSD 則是為最大化安全性設計的,這不僅僅體現在它宣稱的功能,在實踐中也確實如此,它是為銀行、金融等重要機構的關鍵系統設計的。由於使用 4.4BSD-Lite 可以避免法律糾紛,這些分支版本後來也將他們的代碼更新到了 4.4BSD-Lite 。

至此, BSD 的故事暫告一段落。

Minix

因為 AT&T 的政策改變,在 Unix 7 推出之後,新的使用條款不再允許在大學中使用 Unix 源代碼。阿姆斯特丹自由大學計算機科學系的 Andrew S. Tanenbaum 教授為了能在課堂上教授學生操作系統運作的實務細節,決定在不查看任何 AT&T 的源代碼情況下,自行開發與 Unix 兼容的操作系統,他取 Mini-Unix 之意,將之命名為 Minix 。 Minix 1.0 的全部代碼一共約12,000行,隨他的《操作系統:設計與實現》一書一起發佈於1987年,置於附錄中作為範例,隨後也發行了一些包含源碼的磁碟。彼時的 Minix 憑藉低廉的價格和簡易的操作在大學中大行其道。

Minix 的系統要求在當時來說非常簡單,只要三片磁碟就可以啟動。系統在設計之初是為了在 IBM PC 和 IBM PC/AT 兼容電腦上執行的,1.5版也有移植到 Motorola 68000 系列 CPU 、 ARM 和 Sparc 機器上,2.0版則以 x86 架構為主。早期版本皆以教學為目的,需要收取很少的費用,2000年換用 BSD 授權後可以免費獲取。

最新的版本為 Minix 3 ,發佈於2005年的 ACM 操作系統大會上,依舊作為《操作系統:設計與實現》第三版的範例,只不過其設計目標發生了改變,摘自其官網:「 Minix 3 是一個免費、開源的,旨在實現高可靠性、靈活性及安全性的操作系統。」 但是由於其開放源代碼的特性,它依然非常適合用於課堂教學中讓學生們了解操作系統是如何運作的。

POSIX

POSIX 是 Richard Stallman 應 IEEE 的要求而提議的一個易於記憶的名稱,全稱是 Portable Operating System Interface (可移植操作系統介面),而 X 表明其是 Unix API 的傳承。 POSIX 標準定義了操作系統應該為應用程序提供的介面標準,是 IEEE 為要在各種 Unix 操作系統上運行的軟體而定義的一系列 API 標準的總稱,其正式稱呼為 IEEE 1003 ,而國際標準名稱為 ISO/IEC 9945 。 POSIX 的標準化工作始於1985年左右。

POSIX 標準意在獲得源代碼級別的軟體可移植性。換句話說,為一個 POSIX 兼容的操作系統編寫的代碼,應該可以在任何其它的 POSIX 兼容操作系統(即使是來自另一個廠商)上編譯執行。 POSIX 並不局限於 Unix ,許多其它的操作系統也支持,例如 Linux 、 FreeBSD 、 DEC OpenVMS 等, Windows NT 不支持。


本文是LinuxStory柴米油鹽計劃的投稿文章,由 LinuxStory 整理髮布。原作者署名為:Demon --- Law & Script 。轉載請註明出處,否則必究相關責任。
本文鏈接:https://linuxstory.org/simple-history-about-opensource-1

對這篇文章感覺如何?

太棒了
2
不錯
0
愛死了
0
不太好
0
感覺很糟
0
這裡是柴米油鹽計劃投稿的發布賬號。

    You may also like

    2 Comments

    1. […] Demon — Law & Script 開源軟體簡史(一)鏈接門 […]

    2. […] Demon — Law & Script 開源軟體簡史(一)鏈接門 […]

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:開源歷史

    開源歷史

    開源軟體簡史(三)

    開源運動簡史之第三部分。微軟與開源的攻守戰,到微軟擁抱開源。微軟和開源社區的恩怨由來已久,最早可以追溯到家用計算機俱樂部的公開信那時,之後雙方陸陸續續發生過幾次擦槍走火的事件。
    開源歷史

    開源軟體簡史(二)

    開源運動簡史之第二部分。從 GNU 到開源運動。1985 年10月 Stallman 又創立了自由軟體基金會( Free Software Foundation )來為 GNU 計劃提供技術、法律以及資金支持。初期由於人手不足,FSF獲得的捐款等主要被用來僱傭職業程序員幫助編寫自由軟體,目前由於基金會擁有大多數 GNU 項目的版權,其主要工作已經轉移到處理自由軟體的法律問題上。
    開源歷史

    處理器微結構史話 第二章

    本文講述了UNIVAC系列的沒落,Control Data Corporation公司的創立與發展,其驚世之作CDC 1604,CDC 6600的誕生,及其與IBM的競爭,還有在這個過程中CPU性能及架構螺旋上升式的發展。