Linux的創造者Linus Torvalds說,他的父母之所以會爲他選擇“Linus”這個名字,是因爲他們景仰和欽慕諾貝爾獎獲得者Linus Pauling。Pauling是罕見的人中豪傑,他摘取了不只一次而是兩次諾貝爾獎的桂冠。正是Pauling的基礎性工作使得發現DNA結構成爲可能,我們覺得這段故事中的曲折對於開源軟件團體來講具有一定的警示作用。

實際上,DNA結構是由Francis Crick和James Watson發現的,並且Watson在他所著的《雙螺旋》(The Double Helix)一書中按照編年史的體例記載了這一過程。Watson的書對科研實際遵循的方式做了非常直率的說明。他不僅敘述了才氣和洞察力,而且還敘述了政治、競爭和運氣。當時,對DNA奧祕的探索在Watson、位於Cambridge的Crick的實驗室、位於Cal Tech的Pauling的實驗室等衆人之間形成了激烈競爭。

Watson明顯不安地寫道,當Pauling瞭解到Watson和Crick已經撥開DNA的神祕面紗,並創建DNA的螺旋結構模型時的情形。這個故事集中在Max Delbruk身上,他往返於Cambridge和Cal Tech之間,而且是這兩個實驗室人員的共同朋友。雖然他贊成Watson和Crick的意願,即直到結果被證實以前一直爲他們保持祕密,然而最終Delbruk對科學本身的忠誠佔了上風。在下面這段文字中,Watson描述了他如何知道Pauling已經聽說了這個消息的:

Linus Pauling最初從Max Delbruk那裏瞭解到雙螺旋結構。在信件底部的補充性附言中,我要求他不要告訴Linus。我們仍然擔心一些事情可能會搞錯,所以不想讓Pauling在我們再多花幾天的時間來整理我們的研究工作之前,不會去考慮Hydrogen-bonded base pairs。但是,他忽略了我的請求。Delbruk想告訴他實驗室的每一個人,而且他也知道不用幾個小時,傳言就會從他的生物實驗室流傳到那些爲Linus工作的朋友耳中。而且,Pauling要Delbruk保證讓他知道什麼時刻Delbruk收到我的信。更爲重要的因素是,Delbruk討厭對科學問題任何形式的保密,並且不想讓此懸念史長時間地掛在Pauling心上。

保密的需要顯然使Watson覺得不安。貫穿此書的一個尖銳主題是Watson認識到:競爭使得各當事人避免公開所知的一切東西,科學的進步將因保密阻礙,即便這種保密程度是很輕微的。

科學畢竟是一種開源事業。科學方法依賴於發現和證實的過程。對於要證明的科學結果而言,它們必須是可以重複的。除非共享資料(假設、測試環境、結果),否則重複是不可能的。發現的過程可以遵循許多路線,有時科學發明的確可以獨立完成。但是發明過程最終必須成爲共享信息:使得其他科學家可以從一個人無法做到地方沿着既定道路和方向前進;汲取他人的思想以產生一些新事物。如果這一點得不到保證的話,新思想將不會產生。

什麼是自由軟件?它與開源軟件是什麼關係?

1984年,麻省理工學院(MIT)人工智能實驗室的研究員Richard Stallman啓動了GNU工程。簡單地講,GNU工程的目標就是讓人不必爲軟件付錢。Stallman發起GNU工程實質上是因爲他覺得構成運行程序的知識(計算機產業稱之爲source code,即“源代碼”)應該是自由的。如果不是自由的話,按照Stallman的推理,則會出現由極少數強力人物統治計算工業的局面。

“專有商業軟件”(proprietary commercial software,或者簡稱“專有軟件”,即proprietary software)的賣主看到的是工業界必須對商業祕密守口如瓶,而Stallman看到的則是必須被共享和發佈的科學知識。GNU工程(GNU Project)和自由軟件基金會(Free Software Foundation,FSF啓動GNU工程的組織)的根本原則是:源代碼是計算機科學進一步深入發展的基礎,而且對於持續的革新而言,可以自由地得到的源代碼確實是必要的。

Stallman擔心的是社會將對自由軟件作出何種不同的反應。科學知識經常處在公共領域,學術出版的一個作用就是把它置於公共領域。然而對於軟件而言,單單讓源代碼進入公共領域,將會很明顯地誘使商業公司爲了它們自己的利益而選擇代碼去牟利。對於這種威脅,Stallman的解決方案利用GNU通用公共許可證,即GPL(參閱本書的附錄二)。

GPL的基本意思是說,你可以隨意拷貝和散發根據GPL許可證授權的軟件,並且要求你不阻止其他人做同樣的事情。你既不能向他人就軟件本身收費,也不能通過進一步的授權來限制他們這樣做。另外,GPL還要求從GPL作品衍生出來的作品也必須同樣遵循GPL條款的約束。

在這本書中,當Stallman和其他人談論自由軟件時,他們真正談論的東西是自由言論。英語在處理這裏的文字區別時的確顯得蒼白乏力,但是在“免費”(gratis)和“自由”(liberty)之間的確存在天壤之別,如同“言論是free(自由的)”與“啤酒是free(免費的)”之間兩個“free”的區別。這條基本原則(言論中的自由部分,不是指啤酒的免費)導致許多軟件公司公然抵制自由軟件。他們目的畢竟是要在市場上賺錢,而不是爲了給我們增加知識。對於Stallman來說,計算機工業和計算機科學的不和是可以接受的,甚至可能是他所期望的。

什麼是開源軟件?

1997春天,自由軟件社團的一些領導者聚集到加利福尼亞。這個社團包括Eric Raymod,Tim O’Reilly,VA Research的總裁Larry Augustin等人。他們所關心的是尋找一種方式,來向以前躲避自由軟件思想的人們推廣這種思想。他們擔心,自由軟件基金會的反商業信條會讓人們對自由軟件敬而遠之。

在Eric Raymond的堅持下,這羣人同意他們所缺乏的是市場營銷活動,這個活動的目的是贏得思想,而不僅僅是市場份額。最後討論的結果產生了一個新的術語來描述他們所推進的軟件:Open Source(開源軟件)。他們制定了一系列的指導原則,用來描述哪些軟件可以有資格被稱爲開源軟件。

Bruce Perens爲制訂開源軟件的定義做了很多基礎性的工作。GNU工程的正式目標之一就是創造一個自由可用的操作系統,以作爲平臺來運行GNU軟件。從軟件引導(software bootstrapping)的傳統觀點來看,Linux已經成爲那個平臺,Linux是在GNU工具的幫助下創造出來的。Perens曾經是Debian工程的領導者,它所管理的Linux發行版本,只包括那些符合GNU精神的軟件。Perens已經在“Debian社會契約”(Debian Social Contract)中明確地闡明瞭這一立場。開源軟件的定義是“Debian社會契約”的直接產物,因此開源軟件是與GNU的精神一脈相承的。

與GPL相比,開源軟件的定義允許更大授權自由。特別是當軟件中混合了專有軟件和開源軟件時,開源軟件的定義允許在它們的基礎上生成更大的混合。

結果是,開源軟件許可證能令人信服地允許使用和再分發開源軟件,而不必考慮補償或者信用的問題。舉例來講,你可以得到偉大的Netscape瀏覽器的源代碼,並且把它作爲連同另一個軟件(可能是專有軟件)一起發佈出去,而用不着去通知網景(Netscape)公司。網景爲什麼會希望如此呢?原因很多,最引人注目的是,這樣做可以爲他們的客戶端代碼贏得更大的市場份額。這些代碼與他們的商業軟件一起工作得的非常好。從這個角度來說,奉送源代碼是建立平臺的一個很好的方式。這也是網景的人不使用GPL的原因之一。

這在社團中可不是小事一樁。1998年下半年,曾經有一場重要的爭論對Linux威脅極大,幾乎使Linux社團破裂。裂痕是因出現了兩個軟件系統GNOME和KDE而引發的,它們兩者都試圖建立一個面向對象的桌面界面。一方面,KDE利用了Troll Technology公司的Qt庫,其中的一部分屬於專有代碼,但是很穩定、很成熟。另一方面,GNOME決定使用GTK+庫。儘管它不如Qt成熟,但是它是完全自由的庫。

過去,Troll Technology不得不在使用GPL和維持他們的專有軟件立場之間進行選擇。GNOME和KDE的裂痕本來會持續下去。然而,在開源軟件的出現後,雖然Troll仍然控制他們想耍的技術,但是Troll可以爲希望Qt符合開源軟件定義的人改變他們的許可證。Linux社團兩個被要部分的裂痕看來要彌合了。

力量的黑暗面

儘管Watson當時可能沒有意識到,他處於一個生物科學新時代的開端。當雙螺旋結構被發現時,生物和化學科學本來是一個工藝,一種實踐工藝。它是由在一些小團體內工作的人來開展的,最初是由學術研究資助的。然而變化的種子已經撒播。隨着許多醫學突破的出現,尤其是脊髓灰質炎疫苗和盤尼西林(即青黴素)的發明,生物科學將變成一個產業。

今天的有機化學、分子化學,以及基礎醫學研究都不是由一小部分參與者作爲一種工藝來實施的,而是作爲一個產業來運作的。學術研究的繼續,絕大多數的研究者和極大量的研究經費都是屬於醫藥產業的。科學和產業的聯合是最不穩定的。醫藥公司可以以一種意想不到的標準來資助學術研究,他們也可以爲了既得利益來資助研究。請你想一想:醫藥公司寧願將主要的資金投入到基於治療的研究中,還是寧願將資金投入到基於藥物的疾病治療研究中呢?

計算機科學同樣必須存在於與產業的不穩定聯合中。以前新的思想最初從學院派的計算機科學家中產生,而現在計算機產業推動着創新的發展。雖然開源軟件程序員仍然是遍佈世界的許多計算機科學界尚未畢業和已經畢業的學生,但是越來越多的開源軟件程序員是工作在業界中而不是在學術機構裏了。

業界已經產生了許多非凡的創新:以太網、鼠標和圖形用戶界面(GUI)——全部來自於施樂公司的PARC(帕羅·阿爾託研究中心)。但是計算機產業也有一個不好的預兆。讓微軟來操縱桌面計算機工業,讓它看起來像什麼就是什麼——除了位於Redmond的人以外,沒有人會真的認爲那是一個好主意。

業界會對創新施加負面的影響。圖形圖像操作程序(GIMP)beta測試版0.9版本不到一年就夭折了。它的發明者,伯克利的兩個學生,離開學校到業界工作,而把他們的創新丟在了一邊。

使用源代碼,老兄!

開源軟件不是從天而降的思想。開源軟件運動是一場真正根本的革命。雖然像Eric Raymond和Bruce Perens這樣的傳道者已經在改變自由軟件方面的術語方面取得了巨大的成功,但是如果沒有合適的條件,這個變化將是不可能出現的。我們已經達到了這樣一個層次,整個在GNU的影響下學習計算機科學的這代學生正在業界工作,並且多年來暗地裏給向業界引進自由軟件。他們這樣做不是出於私心,而是爲了給他們的作品帶來更好的代碼。

這些革命者身逢其時。他們是網絡工程師、系統管理員以及程序員,開源軟件貫穿他們的接受教育培養過程的始終,而且他們也想使開源軟件朝着專業化的方向的發展。自由軟件已經變成了許多公司的關鍵部分,這經常是無意的,但有時候也是有意的。開源軟件已經成年了:它已經有了類似開源軟件商業模式的東西。

Bob Young的Red Hat軟件有限公司因奉送它的核心代碼Red Hat Linux而得到繁榮。將詳細手冊的附加在全套產品中並打包銷售是發佈自由軟件的好辦法。Young主要是在出售了“方便”,因爲多數人不想費力去從Internet下載構成全套Linux系統的所有部件。

但是並不僅僅只有他這麼做。爲什麼Red Hat在美國市場上佔據了支配地位呢?爲什麼SuSE Linux支配了歐洲市場呢?開源軟件構成了一個商品市場。在任何商品市場裏,消費者會估計一個他們可以信任的品牌。Red Hat的實力來自於他們對品牌的管理:一貫堅持的市場營銷並且招攬社團,這樣使得當社團的朋友被問及使用何種產品時,他們會推薦Red Hat。對於SuSE 也是一樣的道理,這兩個公司擁有他們各自的市場的最大原因在於:他們最初都認真對待品牌管理。

對社團的支持是根本。Red Hat、SuSE以及其它Linux世界裏的公司明白,僅僅通過Linux掙錢而不做任何回報會導致兩個問題。首先,人們會認爲這樣的公司是揩油者,而推薦其它的競爭者來取代它們。其次,一個公司必須能夠區分於其他競爭者。其他公司比如CheapBytes和Linux Central僅僅提供了低價的分發品,以一美元的價格來賣光盤。因爲Red Hat提供比發行預算多出很多的價值,因此市場將會察覺到並認可他們,所以Red Hat一定會得到回報。對於開源軟件模式而言,極具有諷刺意味的是,Red Hat能夠爲他們的發行品負擔49.95美元的費用,僅僅是因爲支持了新代碼的開發,並像開源軟件一樣將代碼返還給整個開源軟件社團。

這種品牌管理對於開源軟件而言是全新的概念,但是長期以來僅僅提供優質服務的老模式也已經成爲開源軟件商業模式的一部分。Michael Tiemann幫助建立起了Cygnus思想,他認爲,儘管世界最好的編譯器GCC是可以免費使用的,但是公司仍然希望爲編譯器的技術支持和加強版本而付費。Cygnus的創始人之一John Gilmore將此描述爲“讓自由軟件可以負擔得起”。

事實上,現在這種奉送產品而出售技術支持的模式正在開源軟件世界裏迅速地擴散開來。VA Research研究從1993年後期就開始生產和支持高性能的Linux系統。Penguin Computing提供了簡單的產品和服務。LinuxCare爲Linux提供了全面的技術支持。現在Sendmail的創建者Eric Allman建立了Sendmail Inc.公司來爲電子郵件服務器軟件提供服務和增強版本,你也許知道,世界上80%的電子郵件是靠sendmail程序來投遞的,也就是說,他們佔領了80%的電子郵件服務器的市場份額。Sendmail是個比較有趣的例子,因爲他們擁有兩條途徑來擴展市場。它擁有專有軟件Sendmail Pro的所有權,以及自由軟件的Sendmail,Sendmail的開發週期比Sendmail Pro要遲後一年的時間。

Vixie Enterprises的總裁,同時也是本書作者的Paul Vixie採用了同樣的路線。通過BIND程序,他得到了對市場實際的壟斷。當你發送電子郵件或者到一個Web站點上通過FTP下載文件的時候你都會用到它。BIND程序完成從諸如“www.dibona.com”的域名到實際IP地址之間的轉換(這時IP地址爲209.81.8.245)。由於這一程序應用普遍,Vixie正從他興隆的諮鬧服務中獲益。

科學方法的創新

今天,開源軟件運動發展最迷人的不是諸如Red Hat以及Sendmail之類公司的成功。令人着迷的是看到像IBM和Oracle這樣計算機產業的大公司將注意力轉到開源軟件上來,並視之爲一個商業機會。他們在開源軟件中尋找什麼呢?

創新

科學本質上而言是一種開源事業。科學方法依賴於發現和證實的過程。對幹要證明的科學結果而言,它們必須是可以重複的。除非資料(假設、測試環境、結果等)能被共事,否則重複是不可能的。發現的過程可以遭循許多路線,有時科學發明的確可以獨自完成。但是發明過程最終必須藉助共享信息:使得其它科學家可以沿着一個人不能做到的道路前進;吸取他人的思想以產生一些新事物,否則將不會產生。

科學家討論重複或者複製(replication),開源軟件程序員則討論調試(debugging)。科學家討論發明(discovering),開源軟件程序員談論創造(creating)。最終,開源軟件運動是科學方法的延伸,因爲計算機產業的核心在於計算機科學。想想編譯器發明者Grace Hopper在60年代初期說過的話:

對我來講,編程不僅僅是一個重要的實踐藝術。它還是承擔巨量知識的基礎。

不過,計算機科學和所有其他科學有根本的不同。計算機科學僅有一種方式使得人們能夠複製結果:共享源代碼。爲了讓一些人論證程序的有效性,你必須提供給他們編譯和運行程序的方法。

複製使得科學結果變得具有健壯性。科學家不能期望說明所有的測試條件,也沒有必要具有測試環境來完全測試一個假設的每一方面。通過社團內共享假設和結果,科學家使得多雙眼睛可以看到一雙眼睛所可能錯過的東西。對於開源軟件開發模式,同樣的原則被表示爲“有足夠的眼睛,所有的錯誤都可以查得水落石出”。通過共享源代碼,開源軟件開發者使得軟件更具有健壯性。與一個程序員可以達到的範國相比,程序可以在更爲廣泛和不同範圍來使用和測試,在程序中的錯誤可以被發現,或者程序根本就沒有錯誤。因爲提供了源代碼,錯誤通常可以被開發過程之外的人刪除掉,而不是僅僅發現它而已。

科學結果的開放共享推動了發明。科學方法減少了重複的努力,因爲如果同樣的人在做同樣的項目,那麼他將瞭解到這一點。進步不會僅僅因爲一個科學家停止做一個項目而停止。如果結果有價值,其他科學家將會繼續。同樣,在開源軟件開發模式下,共享源代碼推動了創新。爲某個開源軟件項目工作的程序員可以對於其他人的工作起到槓桿作用,或者開源資源被合併成爲一個工程。一個開源工程可以給另一個開源工程提供創造靈感,如果沒有原來的開源工程,新的開源工程就不會產生。而且真正有價值的工程在一個程序員離開後也不會夭折。因爲有了可用的源代碼,其他人可以繼續並接管這個工程。GIMP雖然被閒置了一年,但是最終開發工作還是繼續了下去,而且當今天開源軟件開發者考慮在一個新領域內可以做些什麼的時候,GIMP總是被自豪地提及。

位於Fortune前500名的公司想爲創新而採用這個有力模式。IBM願意花費相當數目的資金將Apache集成到MIS系統中。對於IBM而言,這是純粹的勝利;他們可以安裝一個格外穩定的平臺,這將降低支持平臺的花費,並且真正地通過提供服務來幫助他們的客戶解決問題。重要的是,IBM工程師可從Apache的開發隊伍中以及其他獨立開發人員的思想中獲益。

這是Netscape決定讓它的瀏覽器成爲開源軟件的準確原因。其部分目的是爲了穩定和增加市場份額。但是更重要的,Netscape期望由獨立開發者的社團來推動創新,並幫助他們建立一個優秀產品。

IBM很快發現緊湊地集成軟件的技術,比如集成Apache到服務器平臺AS400以及RS600,可以幫助他們贏得合同,並賣出更多的IBM硬件。IBM將此作爲下個步驟,並且正在將他們流行的DB2數據庫加到Linux操作系統上。許多人把這當成是對Oracle在Linux上移植Oracle 8的反應,IBM認真承擔它在社團中的任務,並且爲了開源軟件貢獻資源。通過將Apache加到AS400平臺,IBM將它作爲最流行的主機,並且以IBM獨特的方式使開放技術合法化。

看看Coleman(屬於Thermo-electron)、SAIC、BDM和IBM這樣的公司在競爭試圖獲得聯邦政府和企業招標時將會發生什麼事情將會是有趣的。你可以比較一下安裝1000個NT或者是Solaris的軟件花費並且同安裝1000個Linux的代價。當你的競標價格降到到25萬美元時,你仍然可以爲這種投標進行有效的競爭。像CSC公司,它可以爲了獲得更多的合同而放棄一到兩個百分點的利益差額,它可能僅會努力考慮怎樣像Linux一樣來完善技術。

雖然像IBM、Oracle和Netscape這些公司已經開始用開源軟件來集成他們的商業模式,但是許多傳統的軟件公司繼續採用純粹的專有方案。他們這樣做是在冒險。

在Web服務器市場中,微軟完全拒絕開源軟件的現象有些有趣。在寫作本文時,根據Netcraft的調查(http://www.netcraft.com/survey),Apache已經擁有Web服務器市場的50%以上的份額。而在Microsoft網絡信息服務器(IIS)的產品廣告中,你卻看到他們吹捧擁有超過一半的Web服務市場——即超過一半的商業服務器市場。當同其他競爭者,諸如Netscape和Lotus相比較時,他們在市場份額上確有優勢,但是那種優勢在整個服務器市場中就顯得微不足道了,微軟20%的市場相對於Apache的53%簡直是相形見絀。

然而更加具有諷刺意味的是,根據QUESO和WTF的調查,事實上29%的Web現在運行的是基於Linux的服務器。QUESO是一個工具,它可以通過發送TCP/IP分組包到一個機器來判斷它運行的是何種操作系統,並分析響應這些分組包的服務器。通過與類似於Netcraft查詢引擎之類的東西(它可以分析服務器響應的鑑別標誌)連接運行,就可以通過操作系統和服務器類型得到關於Web的生動描述。

事實上,專有軟件賣主已經承受了大量的損失。Linux和FreeBSD確實使他們損失了很多機會來成功地出售一個用於PC硬件的專有Unix。這樣的公司之一Coherent,已經破產了。獨領風騷許多年後,Santa Cruz Operation(SCO)公司已由第一位的Unix賣主變成了人們追憶的風景。SCO公司可能會找到一種生存方式,但它的旗艦產品SCO Unix也會成爲開源軟件的另一個犧牲品嗎?

多年來Sun公司爲開源軟件開發提供多方面的支持,或者通過捐獻硬件和資料來幫助Linux移植到SPARC平臺上,或者通過支持John Ousterhout的腳本語言(Tel)的開發。具有諷刺意味的是,Kirk McKusick描述的那些從伯克利自由軟件中成長起來的公司,在理解開源軟件現象的重要性上卻很吃力。

讓我們花一些時間來在SCO和Sun之間做一些比較和對照。

Sun的主要收入是來自於對他們操作系統和硬件的支持和服務。Sun的產品系列分佈於從相對PC具有競爭性價格的桌面工作站,到競爭主機市場的大型企業級服務器羣組。他們在硬件領域的收益不是來自於他們的低端Ultra系列,那不如他們對他們專門設計和定製的E和A系列服務器的服務、出售和技術支持賺得多。據估計Sun的50%收益來自於支持、培訓和諮詢服務。

另一方面,SCO通過出售SCO Unix操作系統、出售諸如編譯器和服務器之類的程序以及對使用SCO產品的培訓和教育來賺錢。所以雖然SCO有精密的組織,但是它同樣有危險,因爲僅有一種作物的農場很容易會因一種場枯萎病而顆粒無收。

Sun看到了Linux的發展,可能因爲更關心他們所提供產品中的低端產品。Sun的策略是確保Linux可以在Sun硬件上運行,以便人們可以選擇在Sun硬件去運行Linux。這很有趣,因爲Sun可以繼續爲他們的機器提供硬件支持。將來,我們不必因爲看到Sun爲運行在他們低端機器上的Linux提供軟件支持而感到吃驚。

某些方面上,這對Sun而言是一個小步驟。事實上,如果你現在打電話給一個Sun的系統管理員問他(或她):當他收到一個新Sun產品包裝箱時要做的第一件事情是什麼,他會告訴你“下載GNU工具和編譯器,並安裝我想要的Shell”。Sun可能最終從客戶中得到這個信息,並且僅作爲招攬顧客的方法來爲人們做這些事情。然而,如果Sun通過吸取基於發行源代碼思想的創新,那麼Sun就會看到他們的用戶羣,並可以爲他們提供服務。從而克服服務上的缺點。

另一方面,SCO的模式彈性較小。SCO的定價模式是首先賣操作系統,工具(比如編譯器和文本處理語言)需要額外收費,而Linux用戶則認爲這些東西理應與操作系統一起提供。在健壯的自由操作系統的競爭面前,SCO的這種模式簡直難以爲繼。Sun可在多種硬件系列裏加入價值,與Sun不同,SCO沒有可以捆綁收益的硬件。他們所擁有的一切本來就只有操作系統,對於SCO而言那是不夠的。SCO將做些什麼呢?

他們的反應迄今仍不夠開明。1998年初,SCO給它的龐大用戶羣體發了一封信來抨擊諸如Linux和FreeBSD,說這些Unix不穩定並且不專業,同時提供了降低價格的基本SCO操作系統。他們的這個行動受到了廣泛的譴責,不得不進行很大的修正。這封信對Linux可信度的無恥謊言侮辱了很多人。SCO不相信它的用戶足夠聰明,可以識破FUD。最終SCO在他們的Web站點上發佈了撤回公開信的公告。

1998年後期,SCO發佈了一個印刷發行品,說什麼SCO Unix現在有了Linux兼容層,這樣你的Linux程序就可以在SCO Unix上運行了。幹嗎要在一個反應相當冷淡的操作系統上花錢呢,僅僅是爲了要使之與免費競爭產品兼容?

在從開源軟件獲益的運動中,SCO處於特殊的位置上。SCO有一些非常有價值的優秀特性,他們可以在開源軟件的未來中處於真正有力的位置。然而,他們必須做到信念的飛躍。不是將開源軟件視爲損害SCO的優秀特性的威脅,而是他們必須意識到開源軟件可以爲那種優秀特性帶來創新的機會。

就開源軟件而言,相比微軟的行爲,SCO甚至Sun這樣的公司的機動性顯得蒼白無力。這今爲止,微軟仍然固守它的專有模式,而且看起來至少在Windows 2000的發行過程中將固守那個模式。

我們猜想Windows 2000將會在2000年晚期或是2001年早期上市大放光彩。畢竟這合併了Windows NT和Windows 98。合併的某個時候,或者六個月之前,將會發佈一個新的微軟Windows操作系統。微軟總是垂誕於“有利可圖的企業市場”,在此機器上運行着與公司的性命攸關的服務。然而迄今爲止,沒有證據表明微軟能夠發佈一個具有市場所需極高穩定性的Windows NT系統或是Windows 2000系統。所以這個新系統將作爲有前途的解決方法來發布。

讓我們把這個象徵平臺改變的產品叫做“Windows Enterprise”或者是Went。本來微軟會查看NT,並說我們怎樣能使得它變得更可靠和穩定。就像Linus Torvalds所指出的,操作系統理論在最近二十年裏面真的改變甚多,所以微軟工程師將反駁並說,一個完美的、在執行級別沒有污染的緊湊內核是完成可靠性和速度的最好途徑。這樣修改Windows NT內核的主要錯誤,即包括錯誤檢測和錯誤選擇的第三驅動層,並且將GUI作爲內核的一部分,微軟將不得不寫一個異常緩慢的模擬層,或者削弱許多老的應用。微軟確實可以做任何一個。但是開源程序將會很成熟,那時那些買軟件的公司會問自己,他們是否信任微軟能夠給他們提供叫做穩定內核的東西,像在Linux下可以一樣的好。

到時答案當然會自現。沒有人真的知道微軟是否能夠在這一級別上寫出可靠穩定的軟件。Eric Raymond提到的“萬聖節前文檔”暗示,即使在微軟對此也有嚴重懷疑。

開源的危險

就像大部分科技企業一樣,大部分軟件要冒失敗的危險。正如Bob Young所說的。編製成功的開源軟件與編製成功的專有軟件沒有什麼不同。在兩種情況下,成功的例子是罕見的,而最好的創新者是那些能從錯誤中吸取教訓的人。在科學和軟件中,導致創新的創造都會需要一些代價。保持對現行的開源軟件工程的控制是很困難的。對失去控制的擔心將會讓一些個人或企業失去積極參加的興趣。特別要關注的是,當決定加入一個開源軟件項目時,有較大的競爭者或一組人也會加入,並在代碼中加入分支。如同道路上的分叉,一段代碼有時也會分成兩段獨立的互不兼容的分支。這個問題是不容忽視的,比如說,在BSD爲基礎的操作系統上,又分出NetBSD,OpenNBSD,FreeBSD等其他操作系統,如何使這種情況不在Linux中出現呢?

防止這種現象發生的一種方法是,採用Linux內核開發時使用的開放方法。Linux Torvalds,Alan Cox以及其他人有權存取內核並向其添加內容。Linux工程被稱爲良性專政,Linus是它的專政者,目前爲止,該模型產生了一個較爲緊湊的內核,沒有太多的冗餘代碼。

具有諷刺意味的是,Linux只經歷過很少的實際上的分支,而有很多大的補丁程序將Linux內核轉化爲一個實時內核,以適用於關鍵的設備控制,同時也存在在非常怪異的結構下運行的Linux的版本。這些補丁程序可以被看作分支,因爲它們基於一個內核並從中擴展出去,但是因爲它們是爲特殊情況而編制的,所以它們對Linux的整體發展並未造成分裂性的影響。

作爲對比,可以想一想用於特殊情況的科學理論。在多數情況下,牛頓的運動定律是適用於這個世界的。只有在特殊情況下,如超大質量或超高速時,我們必須使用愛因斯坦的相對論。愛因斯坦理論的成長並擴展而不會影響牛頓的理論體系的在實際中的應用。

但是競爭中的軟件就像相互競爭的科學理論一樣會發生衝突。我們可以參考Lucid的歷史。Lucid是一個開發了廣受程序員歡迎的Emacs編輯器改進版本的公司,並將該產品賣給其它開發機構以替代早年由Richard Stallman編寫的GNU Emacs。Lucid版本被稱做Lucid Emacs之後,又被叫做Xemacs。當Lucid把Xemacs的解決方案定位到不同的公司時,他們發現無法把Xemacs與Emacs的結果做出足夠的區分。再加上當時計算機市場的不景氣,Lucis很快就銷聲匿跡了。

有趣的是,在Lucid退出市場時,他們對Xemacs的代碼簽發了GPL許可證。這家失敗的企業仍然生產了一個長壽命的開源軟件。只要人們覺得軟件還有用處,他們就會想辦法讓它在新的系統中工作。直到現在,Xemacs仍爲極多的人所喜愛,而且當你向那些Emacs黑客問他們喜愛哪種版本的Emacs時,通常會引起很有趣的爭執。仍有一些人在使用的Xemacs仍然是很重要的先進產品,並不斷得到改進,使得它可以適應新的時代和硬件結構。

鼓勵開源軟件黑客

Lucid的經歷表明程序員對工程的忠誠度常常超過工程本身給他們的補償。爲什麼有人編寫自由軟件?爲什麼他們會把可以每小時收費幾百美元的軟件無償贈送他人?他們從中可以得到什麼好處呢?

其動機不單純是利他主義。這些人也許沒有微軟的股票,但每個人都是有足夠能力養活家人的。在外人看來這似乎是個矛盾;你畢竟不能靠自由軟件生存。其答案部分在於要超越傳統的對工作和報酬的理解的侷限性。我們正經歷一個新經濟模式的塑造,而不是新的文化。

Eric Raymond已成爲開源軟件社會一個自封的人類學家。在他的文章中,他談及到了人們僅僅爲了奉送而開發自由軟件的原因。

記住,那些編程人員大部已工作多年,而且不會視編程爲負擔或工作。像Apache或Linux這樣的複雜工程會給人帶來智力活動所能帶來的最高滿足感。這有點像短跑運動員衝刺時的感覺,一個真正的程序員在寫出一段完美或緊湊的代碼後也會有同樣的快感。那種工作了好幾天纔將一個複雜的代碼完成或調試成功的喜悅心情是無法用語言來表達的。

事實上許多程序員編寫代碼是因爲他們喜歡做,這也是他們才能的體現。一個程序員不編寫代碼就會感覺不自在,這就像運動員被剝奪了競賽的權利。要程序員遵守紀律就象讓運動員遵守紀律一樣難;許多程序員確實不喜歡在掌握了一段代碼後還要繼續維護它。

而且許多程序員對他們的代碼並不採取這種“男子氣”的觀點,而是一種更爲學究氣的觀點。許多程序員認爲,他們應該被看作是一個科學家。科學家不會用他們的創造來牟利,他們應該公開他們的發明,以使公衆都可以獲益。一個科學家不能爲了獲利而放棄對知識的追求。

對編程的共同認識就是強調名聲。編程是一種天賦:程序員工作的價值在於與他人分享。當他的工作成果被越多的人分享時,其價值也就越高;假如公開源代碼,而不是預編譯的二進制文件,那麼價值更大。

編程也是一種獲得一種權力的過程,這被Eric Raymond稱做“搔癢”(scratching an itch)。大部分開源軟件工程以各種挫折開始:或者是想尋找合適的工作工具卻找不到,或者是找到一個工具,但是又破又無法維護。Eric Raymond就是這樣開始編寫fetchmail的;Larry Wall是這樣設計Perl的;Linus Torvalds是這樣創造Linux的。從很多方面來看,Stallman發起GNU工程的潛在動機的最重要觀念就是權力感。

Linux未來的風險和投資

一個黑客的動機也許是純智力的,但結果不必是犧牲自身利益。越來越多的人和企業正以一種全新的實用和機會主義精神加入到開源軟件的陣營中來。

在我們生活和工作的硅谷中,有用風險投資剌激區域經濟發展的歷史。這可以追溯到晶體管第一次被用於商業目的,用芯片和晶體管代替複雜的邏輯電路板,微處理器變成一種工業動力。

在任何特定時期,都會有吸引風險投資的熱門技術。雖然他們不會忽視其他的公司或商業機會,但是他們深知要使他們的商業成績達到他們的標準,他們不僅需要成功的企業,還需要那些在投資後的三年之內可以IPO的公司,或者是那些可以用上億元成交的公司,如Oracle或Cisco。

1998年,互聯網的熱潮開始消退;那些以Netscape的壯觀登場爲開始的IPO衝動開始減退。一個具有象徵意義的行動就是美國在線(AOL)收購了Netscape,這標誌了一個時代的結束。投資界對互聯網股票更加小心了,普通互聯網公司與一般公司也被一視同仁,他們必須有較爲可信的盈利可能。因此,投資去向如何?我們預測Linux及與開源軟件相關的公司將成爲下一個投資熱點。在1999年已經由Red Hat軟件引發了Linux及開源軟件IPO的熱潮。所投資金已經非常驚人了,而且像Scriptics、Sendmail和Vix.com這樣的公司已經開始藉助適宜的市場環境來構建他們的夢想。

問題的關鍵不在於風險投資是否流向開源軟件業,而是爲什麼僅向那個方向發展。要知道自由軟件並不是新事物;Richard Stallman在1984年就創建了FSF,爲什麼這麼多年之後纔開始變熱呢?

在計算機行業,大公司控制了商業市場的大部分份額。在硅谷,那些希望天使降臨和尋找風險資本投資的有成功希望的應用軟件公司很快就發現,如果和微軟這樣的大公司對抗是不可能獲得資金的。每個起步要麼按微軟的遊戲規則進行,要麼徹底退出不玩。

這種具有創造性的壓力環境就是自由軟件生根的條件。任何一個爲微軟視窗編寫程序的程序員都會告訴你,那些令人畏縮的笨重的接口集合就是爲了使程序徹底依賴於視窗系統庫而設計的。微軟爲程序員提供的接口使得原始程序很難移植到其它操作系統上去。

而在微軟尚未佔領的最大論壇——Internet——上則沒有這樣的限制。如同Scott Brandnet所描述的那樣,Internet是建立在一組強大的開放標準之上的,它是由個人參與維護的,而不是由公司控制的。Internet從許多方面講是開源軟件的肇端。Internet穩定的、基於開放標準使得它適合各種程序員在Internet上開發程序。Internet的顯著增長是這個開放標準的產物。

從Internet的成功中所繼承下來的結構在開源軟件運動中也得到了體現。Linux經銷商。如Red Hat;f日SuSE血在競爭,但他們的競爭是基於開放標準和共享代碼的。他們都用Red Hat Package Manager(RPM)作爲他們的包管理工具,而不是讓開發人員侷限於只能使用特殊的包管理工具系統。Debian使用另一種包管理工具,但由於Debian和Red Hat都是基於源代碼開放的軟件,兩者的兼容性已經實現。

因此,使得Internet技術成爲風險資本金的誘人樂園的基礎在於開源軟件,這個基礎將使得開源軟件技術同樣誘人。

最爲重要的是Internet創造了一種開源軟件技術可以發揮槓桿作用的基礎。我們正從Tim O’Reilly所描述的從軟件(software)時代向訊件(infoware)時代過渡。要使這種過渡成爲可能,發佈信息的障礙和成本必須大規模地降低。Internet已經降低了這種障礙。

科學和新的復興

現今的開源軟件發展模式在多年以前就在學院計算機界產生了。然而,今天開源軟件技術得以獲得巨大成功的原因是Internet使信息的快速傳播成爲可能。當Watson和Cricket發現雙螺旋結構時,他們很希望其結果可以在幾天之內從Cambridge傳到Cal Tech。現在這樣的傳送幾乎是在瞬間完成的。就像現代科學由於印刷術的發明而進入文藝復興時代一樣,藉助Internet技術,開源軟件技術進入了數字復興時代。

中世紀時,由於缺少廉價的信息載體。書面作品不得不用手抄來實現,代價高昂,因此信息必須有即時利益才行。交易記錄、銀行交易、外交通信等,這些信息比較簡潔,而且有即時利益,纔會被傳播。而化學家、牧師及哲學家——之後被稱做科學家的投機性作品的優先權比較低,因此信息傳播也比較慢。通過極大的降低通向信息基礎門檻的阻礙,印刷術極大的改變了這一切。從前只能獨自工作的學者,第一次可以實現與其他所有的歐洲學者進行交流。但是這樣的活動是建立在完全的信息共享基礎之上的。

從這樣的社團所繼承的思想就是學術自由,以及我們現在稱之爲科學方法的步驟。沒有形成團體的需要,那麼什麼都是不可能的,幾個世紀以來信息共享是使科學團體團結一敢的核心力量。

想像一下,如果牛頓保留自己的運動定律,而是在以後的三十年裏去做一個軍火承包商:“我不能告訴你我是怎樣知道彈道的拋物線的。但我可以爲你的火炮測量數據,但要收費。”這聽起來太荒唐了。這樣做,不僅科學得不到發展,而且它也不能這樣發展。如果那成爲科研的趨勢,那麼這種保密性將阻礙科學的任何發展。

Internet是數字時代的印刷術。進入信息基礎門檻的障礙再一次戲劇性地降低了。不用再像早年的DOS,或者把UNIX源代碼打印到紙帶上,或軟盤上,甚至CD-ROM上。任何FTP或Web服務器現在都可以作爲一個廉價迅捷有效的發佈點。

在這種復興帶來希望的同時,我們不能忘記幾個世紀以來的科學遺產,那就是開源軟件發展模式的基礎所在。現在的計算機科學和計算機產業是一種不穩定的聯姻。來自微軟這樣的產業巨頭的壓力想讓新的發展保持專有以獲取短期的商業利益。但因爲越來越多的計算機科學的發展工作源於計算機產業而非學術機構,業界必須小心使計算機科學通過共享思想——即開源軟件——保證繁榮。工業界如此做不是出於利他主義,而是爲了現實原因:擴大自身利益。

首先,如果計算機業界認爲金錢回報是開源軟件程序員的首要目的,那麼他們的目光是短淺的。要使這些人加入進來必須尊重他們的優先權。這些人在參與一場聲譽遊戲,而且歷史證明,科學的成功比商業的成功更爲持久。過去幾百年,我們能記住最大的工業家只有卡耐基、洛克菲勒等幾個。但是我們卻能記住更多的科學家和發明家:愛因斯坦、愛迪生、Pauling等。當百年之後,歷史記錄現在的情況時,人們也許會記住Bill Gates或其他少數幾個計算機工業家。他們可能更會記住Richard Stallman和Linus Torvalds。

其次,更爲重要的是,產業需要科學提供的創新。開源軟件可以用科學的創造性和速度來開發和調試新的程序。計算機產業需要從開源軟件的發展中得到新一代的思想。

再來考慮一下Linux這個例子。Linux是一項在微軟決定發展Windows NT的五年之後纔開始的工程。微軟在Windows NT的開發上花費了幾萬人小時和數百萬美元。而今天,Linux被看作是NT的可替代者,它被作爲基於PC的服務器系統,並作爲Oracle、IBM和其他主要企業軟件提供商移植主要中間件和後臺軟件的選擇。開源軟件的發展模式創造了只有像微軟這樣有足夠財力和資源的公司才能製造出的軟件。

爲了保持數字復興,我們需要開源軟件的發展。開源軟件的發展不僅會促進計算機科學的發展,同樣也會促進計算機產業的發展。

作者簡介

Chris DiBona

Chris DiBona自從1995年開始使用Linux。他在Linux社團中非常活躍。他志願做過Linux International的Webmaster並作爲Linux國際授權開發基金會的協調人。作爲VA研究Linux系統(http://www.varesearch.com)的市場主管,Chris深感自豪。同時他也是Silicaon Valley Linux Users Group(全球最大的Linux用戶組,網址是http://www.svlug.org)的副總裁。

除了參加Linux活動外,他的文章和書路也被刊登在The Vienna Times、Linux Journal、Tech Week、Boot Magazine(現在稱之爲Maximum PC)和一些網絡出版物上。另外,他還在Terrorist Profile Weekly做過兩年的編輯,這是一份有20000訂戶的地理政治週刊。

他的個人網頁見http://www.dibona.com,電子郵件地址是[email protected]

Sam Ockman

Sam Ockman是Penguin Computing的總裁,該公司致力於配置和建立Linux系統。他也是LINC、International Linux Conference and Exposition的主席,後者合併到Linux World。Sam是Linux安裝和配置方面的專家,同時也精通Perl,並在California大學Berkeley分校任校。他也是Silicon Valley和Bay Area Linux User groups的合作發言人。Sam已經編輯過有關Unix和Perl方面的書籍,併爲一些月刊撰寫有關Linux方面的文章。他畢業於Stanford大學,獲得過計算機系統工程和政治科學(Political Science)的學位。Sam爲之驕傲的是在Standford期間曾因在話劇中的成功演出而獲得過Ram's Head Dorthea大獎中最佳演員稱號。

Mark Stone

Mark Stone自Linux內核1.0.8版發佈後,就將其作爲主要的操作系統使用。他在20世紀70年代末開始寫他的第一個大規模的程序:一個用於PDP-1170的Algo1編譯器。目前他更願意使用腳本語言編程。他最喜歡的腳本語言是Tcl。

現在,Mark是O'Reilly開源軟件叢書的編輯。在加入出版界之前,他是一名哲學教授,並且從Rochester大學獲得了博士學位。在學院工作期間,他研究混沌理論和科學哲學。所以在很多方面,他的工作沒有什麼大的變化。


《開源軟件文集:開源革命之聲》緒論

i4CN(工業4.0中國-簡稱),是中國最系統化、最全面的工業4.0、工業互聯網、智能製造、無人工廠領域的第三方諮詢公司。公司整合華爲、博世、騰訊、美的等專家,首家提供工業4.0整合方案,包括i4技術項目、i4四大管理體系、十大思想變革的三層金字塔式諮詢架構;能夠指導企業實施專業化的工業4.0變革和無人工廠規劃建設與運營管理。助力國家實現中國製造2025的宏偉藍圖。

《開源軟件文集:開源革命之聲》緒論

樑卓業 i4CN首席諮詢顧問中國工業4.0、智能製造、無人工廠、工業互聯網專家,華爲ISC、IPD體系專家華爲ISC+項目組成員,智能製造標杆車間項目經理工業4.0十大思想變革、無人工廠建設體系首創人中山大學麻省理工學院雙MBA,廣東工業大學機電學院本科歡迎需要導入華爲ISC、IPD體系,實施工業4.0無人工廠的企業與i4CN合作。

(請搜索i4CN樑卓業老師相關課程視頻並進一步瞭解)

相关文章