Cygnus成立於1989年,根據Forbes雜誌1998年8月的調查,它是第一家而且是當時最大的一家開源商業公司。Cygnus已經完成了它的主要產品——GNUPro Developers Kit,這既是一流的編譯器產品,也是嵌入式軟件工具市場上一流的調試器產品。Cygnus的客戶有世界上最大的微處理器公司,也有一流的消費類電器公司、Internet公司、電信公司、辦公自動化公司、聯網公司、航空公司和汽車公司。公司的總部設在加州的Sunnyvale,在佐治亞州的亞特蘭大、麻省的波士頓、英國的劍橋、日本的東京、加拿大的多倫多設有辦公室,從澳大利亞到俄勒岡都有遠程工作的僱員。Cygnus是在嵌入式軟件工業領域最大的私人公司,它比兩家相應的上市公司都大,佔領了市場的三分之一的份額。自從1992年以來,CAGR超過了65%,Cygnus已經連續三年被San Jose Business Journal列爲前十家成長最快的公司。現在公司已經進入軟件業前500強(按照公司全球的軟件業務營業額排名)。

在這篇文章中,我將描述開源模式,這一模式爲我們的業務提供了藍圖。我還要說明我們將怎樣修訂和加強這一模式。

在1989年11月13日前,我們的公司沒有業務,但是在那一天,我們終於收到了來自加州工商管理局的信件,通知說我們的應用程序得到了批准。我們可以存入6000美元作爲啓動資本,並且以“Cygnus Support”的名義開展公司的業務。這是我們期盼了兩年的最終結果,而且它啓動了後來發展到今天的航程,一晃就是近十年。

這一觀點開始時是夠無辜的。我的爸爸曾經告訴我:“如果你要讀一本書,一定要從頭讀到尾。”與大多數父親般的忠告一樣,我只是到了事情落到我身上後纔開始聽進去。在1987年,我對原來的工作開始感到厭煩,並且對GNU軟件發生了興趣。我決定從頭到尾地閱讀由Richard Stallman自己出版的著作GNU Emacs Manual。(這一本書之所以由他自己出版,原因在於當時沒有一家自認爲體面的出版商願意出版一本書,來鼓勵人們自由地合法拷貝這本著作的內容。實際上,即使在今天,仍然很難讓一些出版商接受這-觀點。)

Emacs是一個奇妙的程序。它不僅僅是一個文本編輯器,它已經被很多人定製用來閱讀和回覆電子郵件,閱讀和發送新聞組的信件,啓動UNIX的外殼,運行編譯過程,排除結果程序中的錯誤,它甚至還容許你與驅動它工作的LISP解釋器進行交互。具有創造精神的用戶(或者具有類似精神而沒有耐心的黑客)已經爲它增加了數量衆多的特性,例如“doctor”模式(一種Rogerian心理分析程序,是受到John McCarthy創作的ELIZA程序的啓發而編寫的);“dissociated-press”,它能將難以閱讀的東西拼湊出你想要的文字來;還有一個程序可以在文本屏幕上模仿“河內塔”的方案。這一切太博大精深了,它驅使我想閱讀GNU Emacs Manual和GNU Emacs的源代碼,以便學到更多的東西。

這本書的最後一章是“GNU宣言”,作者的觀念在我閱讀整本書後一直浮現在我的腦海中,而且我不斷對自己嘮叨的問題:爲什麼這樣優秀的程序成了自由可重發行的軟件(也就是,開源軟件)?Stallman回答了這一大家都關心的問題:

爲什麼我必須編寫GNU?

我認爲金科玉律應該是:如果我喜歡一個程序,我必須與其他喜歡它的人一起共享它。軟件銷售商想分割用戶並統治他們,讓每一個用戶同意不與其他人共享軟件。我拒絕以這樣的方式破壞與其他用戶的團結。

Stallman的宣言中還有多得多的內容,它的篇幅較長,我在這裏就不引述了。你可以對此持有異議,說這份宣言像是社會主義者的戰鬥檄文,但是我看到了一些與衆不同的東西。我在它的字裏行間看出一種事業的計劃。這一想法的出發點很簡單:開源軟件將聯合全世界程序員的努力,而且根據這些軟件提供商業服務的公司(定製、增強、清除bug、支持)可以根據大的經營規模,使這一種新的軟件形成名牌來聚積資本。

自由軟件基金會的令人耳目一新的軟件不只Emacs一種。當時有名的軟件還有GDB。Stallman之所以要編寫這種軟件,是因爲DEC(Digital Equipment Corporation,現在已經成了Compaq的一部分)和Sun Microsystems的調試器的功能還達不到Emacs所要求的除錯功能的複雜度。GDB不僅能處理大的任務,而且處理方式優美,程序員可以利用命令和擴展的包恰到好處地完成他們想做的事情。由於GDB是開源軟件,程序員開始給它增加了更多的擴展包,使得GDB功能更加強大。這是在商業的軟件產品中不存在的一種可擴充性。

真正的突破出現在1987年6月,Stallman當時推出了GNU C編譯器(1.0版本)。我立即從網絡上下載了它,並且利用我從Emacs和GDB中學到的所有技巧迅速地學會了它的110000行代碼。在第一版中,Stallman的編譯器支持兩個平臺:VAX和新的Sun3工作站。在這兩個平臺上,GCC生成的代碼比相應平臺供貨商提供的編譯器產生的代碼更好。兩個星期後,我將GCC移植到了一個新的微處理器上,也就是國家半導體公司(National Semiconductor)的32032芯片,結果是編譯效率比National Semiconductor提供的專有編譯器要快20%。又花了兩個星期的時間,將這一差距擴大到了40%。

以前經常有人說,National Semiconductor的芯片在市場上站不住腳而敗出的原因是,它將生產戰略定位在1MIPS的芯片上,並且拿它與Motorola的68020競爭。但是當它推出時,它的處理速度在應用程序測試時速度標定在0.75MIPS,所以對於National Semiconductor芯片的運算速度可以通過軟件進行大幅度提高:140%*0.75MIPS=1.05MIPS。真不知道National Semiconductor蹩腳的編譯器價值體現在何處?

編譯器、調試器和編輯器這三樣東西是程序員每天在編程工作中都必須打交道的。在這種級別上,GCC、GDB和Emacs比專有版權的競爭者好出這樣一大截,我簡直不能想象,如果用這三種東西去替代相應的專有版權軟件,不知能節省多少錢,這三樣東西不僅僅是貨真價實,而且的確是性能超羣。

現在,再從GNU宣言中摘錄部分內容:

想爲工作付錢並沒有什麼錯,有人想尋求最大限度地增加自己的收入,這本身也無可指責。但是如果這些行爲是具有破壞性的話,那就是錯的。但是今天軟件市場上的通行做法卻就是建立在這些破壞性的行爲上。

通過限制一個程序的使用,並從用戶身上來斂財富就是破壞性的,因爲這些限制降低了程序自身的價值。降低了程序的用途。當對選擇的自由實施限制時,其有害的結果就是破壞性的。

一個好的公民不需要利用這樣的破壞而變得交加富有,如果按照這一道理,人人都這樣做的話,那麼我們每一個人都會因爲相互之間搞破壞而變得更加貧窮。

雖然表面上好像是危言聳聽,但是GNU宣言是一份極具理性的文件。它解剖了軟件的本質、編程的本質、學術研究的偉大傳統,並且總結了無論金錢的影響力如何大,但是在讓你自由地共享信息時,倫理觀念和道德價值仍然可以凌駕於其上。我得到了一個不同的結論,Stallman和我經常就此爭論,即使用、發行、修改軟件的自由將任伺試圖限制該自由的模式。它將不會因爲倫理的原因而盛行,而是因爲競爭、市場驅動的原因。

首先,我試圖讓我的爭論使Stallman接受並改變他的觀點:從好的方面說,我將解釋共享自由會以更低的成本、通過更加開放的標準等達到更大的經營規模,以誘發更加偉大的革新。而人們異口同聲地說:“這是一個偉大的主意,但是它實現不了,因爲沒有人願意爲自由軟件付錢。”在兩年的時間裏,我潤色了我的修辭,提煉了我的爭論要點,並且將我的觀點散播給願意付錢給我全球滿天飛的人,我並沒有聽到有人說“這是一個偉大的主意,但是......”因此我得出了我的第二個:如果每一個人都認爲這是一個好的主意,那它可能真的是一個好的主意,而且如果沒有人認爲它能可行的話,那麼我將沒有任何競爭對手!

-F=-MA

——艾撒克·牛頓

你永遠不可能在物理學教材中看到這樣一來解釋牛頓的力學定律,但是單從數學的角度看,它與“F=ma"是等價的。這一觀察告訴我,如果你從上面向下觀察假設的話,即使你的結果是令人吃驚的,你仍然可以保持等價關係的存在。我相信爲開源軟件提供商業支持就是一種看起來不可能的事業,因爲人們看到了負號時感到很吃驚,但是他們忘記了平衡左右兩邊並且消除它們。

機不可失,時不我待。

——維克多·雨果

在我放棄在斯坦福大學攻讀博士學位開始經商之前,我要回答最後一個(而且非常之富於假設性的)問題。假設我突然間成了暴發戶,有足夠的錢去購買任何專有版權的技術並且圍繞那種技術創建自己的事業。我考慮了Sun的技術、Digital的技術,還有其他一些我所知道的技術。在有其他人想圍繞GNU建立他們的事業將我排除在外之前,我需要花多長時間才能讓我的技術獲得成功呢?我能否收回我的初始投資呢?當我意識到那些專有版權的技術與開源軟件相比處在一個非常不利的位置時,我感到實現這一創意的機會成熟了。

理論與實踐的區別在理論上很小,但是實際上,實踐離理論的確非常遠。

——無名氏

在這一節中,我將詳細地描述在開源軟件生意模式之後的理論,和我們怎樣使這一理論可行,並轉化爲實踐。

讓我們從一些著名的觀察結果開始吧:

自由市場是自組織的,它容許最有效率地使用資源而最大限度地創造價值。

——亞當·斯密

信息,無論創造它多麼昂貴,都可以被複制和共享,而且成本極低,或者根本不用花錢。

——托馬斯·傑弗遜

自由市場經濟的概念是非常廣泛的,每年頒發諾貝爾經濟學獎時,我總是開玩笑說,得獎的經濟學家是最會解釋亞當·史密斯的理論的。但是這一玩笑的背後隱藏着真理的實質:市場上存在着人們沒有接觸的無限經濟潛力,等待着人們利用一個更加真正的自由市場系統去開發軟件。

在亞當·史密斯的年代,自由市場經濟非常盛行,你可以將它應用到旅行中,或者與人的交往中,但是更大尺度上的買賣,特別同家與國家之間的貿易還是受到嚴格管制的。當大量的商人不再迷於流行的基於版稅的系統時,他們會起來反抗並創造出一個新的政府,這種新的政府比以往的任何政府對他們的事務干涉更少。事實上,美國政府的憲法就是建立在基於這種觀點和體系所提供的自由之上的,而自由似乎再一次在今天的全球經濟化和政治領域中成爲一切重要事務和行動的出發點。什麼東西使自由具有如此強大的力量呢?是什麼使自由對經濟發展起這樣大的作用呢?我們將簡要地回答這些問題。

當你利用一個數字理解一件事情時錯得越多,那麼那個數字的價值就越大。

——開爾文勳爵

顯然,當我們討論1999年程序員用到的工具時,專有版權的軟件就是處在這樣一種淒涼的狀態中。首先,那些工具的特性出廠時是怎樣就是怎樣,你沒有辦法改變它。其次,每當一種特性出現時,經常伴隨着內置的種種限制,一旦你想從事的工作開始變得複雜時,這一些限制就開始暴露出來了。第三,專有軟件供貨商的技術支持簡直糟糕透頂,除非你向他們購買了大量的軟件,或者更新成爲一個非常大的站點軟件使用許可證,你根本享受不到技術支持的權利。在遇到這些內在的限制時,你是很不幸的。最後,每一個專有軟件供貨商都開發了他們自己的專有軟件的擴充軟件包,所以,你在使用他們的某個平臺時,需要購買數不清的特性。這一點你在剛開始時是覺察不到的,但是到後來卻非常明顯,你被牢牢地綁在了他們的平臺上,根無法解脫。總而言之,有一點是明白無誤的,無論自由市場經濟有多麼多的優點,但是這些優點卻在軟件市場上根本體現不出來。你對專有軟件模式形成的市場研究越多,你就會發現你對自由市場的研究越有價值。

今天與以前一樣,自由市場經濟生活在專有軟件公司砌成的高牆內(這些公司利用了高水平的工程師和生產小組高效率地碼起了這一層層的高牆)。在他們的專有高牆之外,使用和發行這些軟件受到了許可證合同、專利和商業機密的嚴格約束。人們甚至只能這樣想,在微觀的水平上(更不用說在宏觀的水平上),實施自由可能會丟失效率。如果你想創建一個公司準備在源代碼水平上爲用戶提供技術支持,那簡直是異想天開。

發明是1%的靈感加上99%的勤奮。

——托馬斯·愛迪生

某家軟件公司的過分簡單的觀點是:一旦你創造一種人們想購買的軟件,那麼印製這些軟件的拷貝而且把它當作商品發行銷售的行爲就與印製鈔票毫無二致。貨物本身的成本是可以忽略不計的,而利潤之高是幾乎是令人無限滿意的。我想,在八十年代軟件業之所以落到如此山窮水盡的地步,一個原因是由於當時的人們太專注去完善印製鈔票的抽象模式了,而根本沒有關心一旦人們開始使用這些鈔票時會發生什麼後果。對軟件提供技術支持被看作是在軟件產品製造過程中,產品本身出現了-些缺陷。當時流行的觀點是,對軟件技術支持投資額度減低得越小,那麼就可以使利潤最大化。

這不僅僅讓用戶感到沮喪,而且對於軟件本身也是很壞的一件事。一些很容易開發的特性,經常由於“不符合我們的戰略部署”而被忘卻。有些特性本來是可以由用戶自己動手開發完成的,但是由於用戶沒有源代碼,所以無從下手,往往只能將自己的希望束之高閣而憤憤不平。最後,只是由供貨商(和他們的市場營銷部門)——而不是用戶——來定義競爭領域,並塞給用戶種種無用但是“容易表現”(easy-to-express)的特性。自由市場經濟已經被從上到下被翻了個兒,給顛覆了。

沒有人能夠壟斷真理。

——無名氏

普通法是合法的代碼,是對所有人都是平等地公開的。

——Michael Tiemann

有了好的理論去解釋怎樣將世界改造得更好當然是很好的。但是將這些理論付諸實踐,並且在實踐中證明這些理論能夠自圓其說則完全是另一回事情。雖然在軟件產品的世界裏,基於服務的公司很少見,但是我們可以考察其他領域的許多情形。

首先讓我們來看美國法律(或者是英國的法律)的實際情況。普通能對於所有想使用它的人都是公開得到的。某個人在爭論中不需要什麼許可證就可以利用普通法對Roe與Wade之間的是非進行裁定。實際情況也的確如此,一旦作出了某個裁定,無論裁定的開銷多大,所有的人都可以沿用這一裁定。正是因爲有了所有這種自由,律師這個高度昂貴的職業才得以建立起來。有沒有一部實踐法在沒有最初的專有代碼的前提下,具有這樣(大)的價值呢?

人們不只是認爲檢查法的價值那麼高。人們還認爲那種檢查積累的價值也是非常高的。如果你僱傭了一位好的律師,而且在檢查的過程中,他作出了一個對你有利的裁定,那麼這一判例將成爲新的法律的一部分。正義不是瞎子,它是歷史的全部。

當我們再來考慮用開源軟件來創建和維護標準時,我們可以找到某種程度的可比性。創建一種標準並且讓它正常工作是非常昂貴的。但是沒有標準時,或者一個標準是假的並且要去維護它時,那個花費將會高昂得多。如果能讓優秀的人才設計的軟件,而且這種軟件能成爲明天的標準的先例,那將是一項具有巨大價值的事業。我們一開始就相信人們會理解這一價值命題,而且他們會衡量這一機會的價值,並且付錢給我們去創造高質量的、開源的程序,而且這些程序將會成爲軟件世界裏“實際上”的標準。

Cygnus的起步期

找到了理論之後,接下來就是將理論轉化爲現實了。如果你瞭解生意的所有細節的話,那麼創造一種基於服務的生意是相當容易的。遺憾的是,在我們Cygnus的三個創始人當中,沒有任何一個人以前有過經商的經驗。

敢於犯新的錯誤。

——EstherDyson

我們找來了一本Nolo Press出版的書,-邊參考它,一邊擬定了公司發起書、制定了公司章程、確定了我們的宗旨,並填寫了其他各種申請表格。

Cygnus——我們讓你能負擔得起自由軟件。

——John Gilmore

爲了與混亂作鬥爭,我們努力使基本的生意假設儘可能地簡單:我們將提供爲接受過檢驗的軟件提供接受過檢驗的技術支持,我們將適度經營以便贏利。按照我們的估計,如果我們公司內部的員工能夠提供2到4倍的支持質量和開發能力,那麼我們就可以向市場在現有價格的1/2到1/4向市場提供這些服務。我們沒有重視其他開源軟件,因爲那些東西的市場銷售前景還很模糊。我們集中精力向市場以更低的價格提供更好的工具,隨着合同一個接着一個而來,我們學會了怎樣做好這件事。

我們在1990年2月與客戶簽署了第一份合同,到當年4月底時,我們已經得到了價值150000美元的合同。在當年5月時,我們向50家我們認爲會對我們的技術支持感興趣的客戶發去了說明書。6月份,又向其他100家客戶寄去了說明書。突然間,生意來了。第一年底,我們得到了價值725000美元的技術支持合同和開發合同,而且無論我們朝哪裏看,到處都是機會。

雖然這一切都不錯,但是也給我們帶來了一些嚴重的問題。如果我們利用公司內部的資源,以1/2到1/4的價格銷售我們的服務,那麼我們將要簽定總額爲一百五十萬到三百萬美元的合同,並且提供我們的服務。但是我們整個公司當時只有五位成員:一位銷售人員、一個兼職的研究生,以及我們三個公司發起人,我們這幾個人當時什麼都做,連接以太網線、打印公司信函擡頭、爲信封貼標籤......在公司的規模沒有達到一定的程度時,我們還哪裏有精力去幹別的?按照當時的增長速度,我們還能找到多少可以夜以繼日的工作狂呢?天曉得,因爲我們沒有任何財務模式和操作模式。

GNUPro

我們決定,在我們精疲力盡這一事實成爲真正的問題之前,我們需要達到一定的經營規模。並且我們按照工程師的思考習慣決定,最快達到這些經營規模的辦法是不留情面地將精力集中在最小的開源技術上,以便我們能夠合理地將它們作爲一個有用的方案銷售出去。我們斷定,焦點越小,形成一些概念上的規模就越容易。

首先建立堅固的根據地。

——《孫子兵法》

我們忍痛割愛拋棄了許多計劃,包括支持外殼工具、文件工具、擁代碼控制軟件的計劃,甚至爲Intel386編寫一個自由的內核的計劃。我們最終決定銷售GNU編譯器和調試器,將它們精簡後作爲一個整體打包成一個產品。當時已經有成打的公司銷售第三方的32位編譯器,而且在一些公司內部(例如Sun,HP,IBM等)還有成打的編譯器開發小組。當我們統計這些競爭對手之後,我們感到,如果我們要在32位的編譯器市場上有所作爲的話,我們必須足夠地大,以便我們一開始就能做出其他預想的漂亮工具,一個無所不能的開源軟件選手,類似於那種可以爲IBM系統Outsourcing(外包)EDS的模式。

GNU編譯器已經支持成打的主機環境和成打的目標體系(我自己也寫了其中的六種移植版本),當時GNU編譯器是具有最好移植性的編譯器。GNU調試器可以運行在五種原始平臺上,有些人還利用它來支持嵌入式系統。當時,我們天真地認爲,將它們精簡後作爲一個整體打包成一個產品的工作非常簡單,只要將代碼放到一個發行版本中,編寫自述文件,增添一個安裝腳本,提供一些附加的產品,做一些測試,然後發運出去即可。但是現實情況比這個遠具挑戰性。

首先,GCC當時正在從1.42版升級到2.0版。在像m68k和VAX這樣的CISC機器上,GCC Version 1的性能已經相當地好,可以與大多數編譯器相抗衡。但在RISC平臺上,它要與其他編譯器相抗衡則需要進行一些優化工作。1988年,當我第一次將GCC移植到SPARC上時,GCC的編譯速度比Sun的編譯器要“慢”20%。I989年,我編寫了一個指令調度器(instruction scheduler),將速度差距減少了10%。同年,我對分支調度器(branch scheduler)進行了改造,有了指令調度器,GCC與Sun的編譯器差別的速度降到了5%。由於世界的發展趨勢是從CISC過渡到RISC,我們從開始時追求在每一個平臺上都成爲最好的編譯器,轉變到一種更加複雜以客戶認可爲代價的集合,具體如何要看顧客怎樣來看待它。銷售已經不再是一個簡單、直接的行爲。

第二,GNU C++的開發進度比較滯後。我在1987年秋天編寫GNU C++,使它成爲世界上第一個原始代碼的C++編譯器。C++是一種比C要複雜得多的語言,當我們成立Cygnus時,它還在不斷的進化過程中。1990年,幾個複雜得多的新特性變成了“標準”,由於Cygnus的事情讓我的精神根本無法集中起來,我無法使GNU C++得到升級。

第三,GDB。GCC和G++是相當連貫的,幾個規則的版本都是從一箇中央的地方發佈的,但是GDB卻飽受分裂之苦。開源軟件的對手們將爭論說,專有軟件的好處是軟件只有一種“真正”的版本,但是開源軟件卻可以分裂成爲成千上萬的不同步的版本,而其中的任何一種版本都不能成爲合法“標準”。由於當時GDB沒有強有力的維護人員,所以它分裂了,世界上有幾百位人員根據他們自己的需要搞出了他們自己的版本。

第四,我們實際上沒有一條完整的工具鏈:我們有一個彙編器,連結器和其他用於二進制代碼的工具(也就是binutils),這些可以在一些(但是不是大多數)GCC和GDB支持的平臺工作。當時,如果你選擇了GCC支持的平臺,GAS、GLD等等,那麼在這些工具都可以支持的平臺上找出通用代碼基的交集將是不可能的。

第五,我們沒有C Library,這對於像Sun和HP這樣的原來平臺將不是一個問題,但是對於嵌入式系統開發人員來說則是一個大問題,因爲他們在他們單獨的應用程序中需要C Library提供的功能。

第六,儘管我們的競爭對手不具備我們在任何時候都能即使向用戶提供工程支持的技能,但是他們每家都已經具備完整的產品,而且在他們各自的狹小市場上銷售得都不錯。而我們如果要銷售打包產品,那麼我們實際上就要改變我們的進攻計劃。進攻的路線將從側面進攻改成正面對抗那些銷售額是我們的10倍到100倍的公司。

最後一點是關於我們自己的信心。對於許多快速演變工具的投資者來說,如果你的服務在市場上的確存在明顯的需要則是一件非常好的事情。一旦我們生產的產品質量一般,市場上不需要我們的服務,那麼本來對打包的開源軟件產品就將信將疑的投資者將改變他們的觀點,那麼我們在市場上半年後就會被淘汰出局。這一直是我在後面的四年中聽到的聲音,而且對我們的業務一直是一種挑戰。

世界上充滿了不可逾越的機會。

——Yogi Berra

對於這一點,我們無能爲力,只有聽之任之。在剛開始預計的六個月內。我們都加班加點地幹“雙份”的工作,全力以赴以求實現目標。我的任務是在白天領導全局,在晚上則是幫助完成GCC 2.0和G++。David Henkel-Wallace(也叫Gumby)是Cygnus的第二個創始人,他的工作除了扮演財務總管(CFO)和技術支持部的領導之外,還負責改進binutils工具和庫(Library)。John Gilmore是Cygnus的第三位創始人,負責GDB。我們還聘用了一些新人負責:

1. 將所有的東西放進CVS(一種開源的源代碼控制系統);

2. 編寫可以在幾百種可能的平臺上安裝和配置我們的打包產品的腳本;

3. 使我們的測試流程自動化;

4. 在我們加速度工作,不能再超負荷運轉時接替我們完成新的開發合同。

六個月後,工作難以解釋地增加了,我們其中有些人對我們的嚴厲(有些人說是限制性地)產品焦點變得厭煩起來。儘管GNU產品是我的銷售和工程努力的大部分東西,但是我們還是爲其他的技術賣掉了一些合同,例如Kerkeros(一種網絡安全性軟件),Emacs,甚至我們的bug跟蹤和測試框架的軟件(當時還在開發中)。

John向網上發了一份郵件,大意是說“我將成爲新的GDB維護者。如果你想在GDB未來的版本中要我來維護含有你完成的特性,那麼請將你的所有的GDB源代碼發給我,我將試圖將它們集成到新的版本中。”六個星期後,他收集了137個GDB版本(絕大多數是在Version 3.5上搞出來的),所有這些版本都有一種或者幾種特性需要集成到新的版本中去。John開始設計GDB4.0的結構來支持所有這些特性。我能和誰爭論這完成不了呢?

Gumby決定所有的二進制文件工具都要使用一種普通的Library,這種Library描述了所有已知的對象文件,並且可以對格式進行除錯。這樣做的理由是,當你考察了編譯器後面各種不同類型的工具的功能之後,情況就變得非常清楚了:

工具

讀出

寫入

編譯器

ASCII

ASCII

彙編器

ASCII

Binary

歸檔器

Binary

Binary

連接器

Binary

Binary

Size

Binary

Binary

Strip

Binary

Binary

Binary

Binary

Binary

Nm

Binary

Binary

調試器

Binary

每一個工具在讀或者寫、讀和寫二進制文件格式時都有自己的實現方式,而且這些實現方式中的每一種對於每一種二進制格式都有不同的支持級別:a.out,b.out,coff,ecoff,elf,ieee695,等等。而且,當每一個工具配置好之後,它就只能支持一種二進制文仲格式。對於m68k-a.out彙編器的改進,還需要對所有其他的特定a.out工具的改進,而且動一發系全身!

如果建立單一的Library支持單一源代碼基的所有功能,那麼更快地達到經營的規模效益就是可能的,因爲任何事情都可以以一種連續的方式轉化成爲因子,並且得到維護。另外,可以呈現出一種整潔性,將a.out目標代碼連接成爲coff庫,並生成可執行的ieee695代碼。

於是,Gumby開始設計這一library,並且開始與Stallman討論設計方案。Stallman說這一工作太難了——因爲這需要完全改寫所有的工具,而且維護起來也很困難。Gumby告訴他這不是一個“Big F*cking Deal”,並且將這一新的創造命名爲BFD Library。(我們對客戶說,BFD代表“二進制文件描述符庫”,binary file descriptor library。)

但是當John和Gumby工作時,我還得賣出一些東西以得到一些收入。每一個季度我都有一個新的最重要的目標需要更多的資源來完成更多的合同,而所有的最好的工程師都已經栓在現有的工作上,我不能指望他們能騰出時間來幫助我。在銷售和工程之間的張力在開源軟件模式中似乎是以一種相反的方式上升:我們在GNU軟件上開發工作做得越多,那麼在我們完成了所有GNU工具鏈開發的50%以上時,我們從網絡得到的回報越小。

這兩方面的問題都不是臨時性的。當第一個“進步版本”(Progressive Release)最終完成之前要花一年半的時間!在那重要的一天內,我第一次確信開發完整的C和C++開發工具包可以從一個單一的代碼基上進行構造,而我們將支持兩個平臺:Sun3和Sun4。我愣了。我已經編寫了6種GCC的移植版本,一個原始代碼C++編譯器和調試器,而我花的時間比一組黑客在同一源代碼基上搞出兩個基本點工具鏈(tool chains)的時間還要少!?

這裏有兩個原因降低了開發速度:

1. 我們的黑客搞出的這些工具比它們原來工作得要好,並且增加了許多新的有用特性;

2. 我們的工作中含有對所有基礎結果的改進工作(不僅是改寫工具,還有完成配置腳本和使測試框架自動化等工作),我們原來期望將來支持更多的主機/目標機的組合形態,包括一組虛擬的無限制的嵌入系統平臺。

我們對這一框架進行測試,通過的時間表如下:

日期

版本名稱

原始平臺

嵌入系統

平臺總數

1992.3

p1

2

0

2

1992.6

p2

5

0

5

1992.9

p3

5

10

15

1992.12

p4

5

20

25

1993.3

q1

5

30

35

1993.6

q2

5

45

50

1993.9

q3

7

53

60

1993.12

q4

8

67

75

1994.3

r1

10

75

85

1994.9

r2

10

80

90

1994.12

r4

10

90

100

當我們的工程師在進行創造GNUPro產品的偉大工作時,我的銷售小組開始了他們的銷售行動。1991年,我們僱傭了一個年輕的學生,當時她剛剛被Applied Materials解僱,她想學習怎樣銷售軟件。雖然她的母語不是英語,但是她進步很快。無論從哪個角度看,她都不是一個黑客(雖然她在Cygnus時花了幾個週末的時間自學過C語言編程),但是她成了一位真正的強有力的開源軟件哲學鼓吹者。在她進行了六個月的非常成功的銷售之後,她邀請我觀看她的一份爲顧客製作的演示片。我驚呆了!我以前一直以黑客銷售軟件的方式銷售開源軟件:主要集中強調我們開源軟件的技術優點。而她的解釋既有我們工作的內在複雜性,又有我們交付使用的軟件的商業價值,這爲客戶解釋清楚了爲什麼他們應該購買我們的產品和服務,而不是試圖靠他們自己的工程師來完成這些工作。我以前的賣點是強調我們的工程師比客戶的工程師強一些(這根本引不起公司老闆的興趣),而她則解釋如果有我們的幫助進行基礎性的移植、支持和維護的話,客戶公司的工程師會得到什麼好處。最後,我們的技術威力和商業上的利益結合起來就等於巨大的銷售成績:

訂購量(千美元)

利潤(%)

積累的CAGR

1990:725

epsilon

1991:1500

1

106%

1992:2800

2

96%

1993:4800

3

87%

1994:5700

4

67%

華生!過來!

——亞歷山大·格拉漢姆·貝爾(電話發明人)

這一努力產生了一些重要的技術,回報了網絡界,而且變成了他們自己版權的標準:GNU配置(一種普通的配置腳本,可能根據三個獨立的變量來配置軟件:一個構建平臺、一個主機平臺和一個目標平臺),autoconf(一種高級的用於創建配置腳本的腳本),automake(一種爲autoconf驅動環境的makefile生成器),DejaGNU(一種迴歸測試框架),GNAT(一種問題報告管理系統)等等。

今天,GNUPro工具包支持175種以上的的主機/目標機的組合,這一數量現在只會受到市場上實際的多樣性限制,而不是受我們的版本或者配置技術的限制。

實際上,GNUPro開始在市場上佔據瞭如此領導性的地位,我們的幾個競爭對手宣佈他們打算爲GNU軟件銷售商業性的支持,來與我們競爭。幸運的是,開源模式再一次來幫我們的忙。除非(或者直到)某家競爭對手有100位能夠與我們競爭的工程師(注意我們的工程師人員大多數是我們支持的軟件的原創人或者維護人員),他們是不能替代我們作爲“真正的GNU”源代碼來源的位置的。(我們提供了GCC、GDB和相關工具的80%以上的改進代碼)。他們的最高期望只不過是在客戶願意爲他們付錢的情況下,爲他們增加一些特性。但是由於軟件是開源的,所以無論他們增加了什麼代碼,這些代碼會回到Cygnus而成爲開源軟件,如果這些增加的代碼好的話,我們會將它們集成到我們的產品中,如果增加的代碼不怎麼樣的話,我們會忽略掉它。專有軟件的競爭者不得不在贏利和虧損這兩端的競賽之間掙扎,開源軟件與此不同,開源軟件廠家更像是在莫比烏斯圈上競爭,而且每一樣東西都是朝原創者或者維護人員期待的方向發展。所以,儘管我們的競爭對手會在“我們也提供GNU服務”的空間裏得到了一些戰術上的長處,但是Cygnus將從戰略上長遠地收益。我們的公司成立於1989年,我們的先手優勢領先於其他的競爭者十年的時間。

挑戰

在前面的章節中,我們已經看到,儘管我們的增長率保持着令入印象深刻的上升,但是隨着我們的成長,增長的勢頭在減緩。儘管我們嘗試了銷售開源軟件的優點和價值,但是持懷疑態度的人和我們的潛在的客戶會在下面的幾個方面向我們提出挑戰:

健全性:爲什麼客戶會爲競爭對手的優勢付錢?

伸縮性:基於服務的生意怎樣伸縮其規模?

持續性:當客戶需要時,Cygnus能出現在客戶的身旁嗎?

贏利性:開源軟件怎樣贏利?

可管理性:怎樣管理開源軟件,以保持質量的一致性?

可投資性:沒有軟件IP的公司怎樣才能吸引投資者的注意?

在基於它的商業模式的基礎上,無論Cygnus是否上市,你能想象向一位具有五位嵌入系統程序員的經理銷售一萬美元的技術支持合同嗎?對於所有那些將開源軟件當作是打開通向最好和最具有生機的軟件之門的開發小組而言,向主流的商業市場銷售開源軟件的確是一個主要的絆腳石。我們應該首先讀一讀Geoffrey Moore的著作Crossing the Chasm(《跨越深淵》),看看他的觀點是什麼。

當我訪問一組開發無線通信系統的開發小組時,這一點變得再清楚不過了。作爲他們的質量控制的一部分,他們不僅要評估他們自己的產品質量,而且還有按照一組標準衡量他們的供貨商的產品質量。所有經商的公司,無論他們提供什麼東西,口頭上都會“王婆賣瓜,自賣自誇”,說他們的產品無論從主要的標準(或者從所有的標準)來看都“非常好”、“極其優秀”。但是他們的嵌入工具的供貨商可能在每三年的質量控制過程中每一個年頭按照所有的標準來衡量卻是“差”的,或者“不可接收”的。然而他們還是不會購買我們的產品,因爲儘管我們有證明書(至少是從我們的客戶那裏發出的!)、超級技術特性、較低的價格,但是管理人員不願意採用一種未知的方案。我至今還是感到奇怪,爲什麼他們從來不用這些數據,卻仍然要費神去收集數據呢?我想這是一個錯誤的問題。我不應該這樣看待事情,而是應該把它視爲一種典型的主流行爲,將這些問題絞在一起不是客戶的錯誤,我們應該改進我們的市場營銷方式和宣傳方式。

但是,我們的問題不只是存在於外部。許多客戶不相信我們在現有狀態的基礎上,能聘用足夠的人員適應我們的技術支持服務業務。他們可能是相當錯誤的,也可能是相當正確的。如果談的是聘用工程師的話,他們的看法是相當錯誤的。Cygnus是由工程師創建的,我們的企業文化、開源軟件商業模式,以及將全球卓越的開源軟件工程隊集中到一起的機會,使得Cygnus在聘用開發人員時,總是對開發人員具有非常的吸引力。我們的人員更新率,與全美的平均水平(特別是與硅谷的平均水平)相比,只有其他公司的1/4到1/10。

但是如果談的是管理人員的話,那將完全可能是另一種情況。由於他們與我們的主流客戶一樣表現出同樣的擔心和偏見,我們聯繫過的大多數管理人員沒有興趣爲Cygnus工作。有這些擔心和偏見的人,Cygnus對他們沒有任何吸引力;那些沒有擔心和偏見的人、而且Cygnus對他們有吸引力的人可能頭腦裏存有錯誤的理由。過去我們的工程部有兩名管理人員時,我們有50多名工程師。溝通、流程處理、管理控制和僱員的滿意程度都與管理人員努力的目標有差距,而且經常不成功。這些問題是管理一個開源軟件公司必須正視的問題,而且是關鍵的必須解決的問題。

相當具有諷刺意味的是,我們還取消了一些管理人員的管理資格,因爲他們不能接受爲我們的公司創造一個“閉源的元件”(closed-source component)。開源軟件是一種商業戰略,不是一種哲學,而我們不想聘用那些爲了公司的總體目標在管理開源的或者閉源的產品方面不太靈活的管理人員。

我們必須接受這樣一個事實:你不能指望在聘用一個管理人員時,他會立即明白開源軟件的所有含意。相反,你應該容許他們犯一些錯誤(這意味着你必須爲這些錯誤引起的成本留下一筆預算開支),他們應該能夠從這些錯誤中學會一些經驗。大多數管理人員會將他們的經驗帶來並試圖改變事情以適合他們的經驗——這對Cygnus是一份失敗的處方。要找到一些既能夠很快從經驗中管理,又能很快從經驗中學習的管理人員是非常困難的、這樣的人有多少,我們要多少。

開源模式和它面臨的所有挑戰證明它是相當有彈性的。雖然我們曾經偶然地因爲我們糟糕地設置了期望值或者糟糕的運作失去過一些客戶,但是我們的年度更新率以美元價值來衡量從1993年以來一直保持在大約90%左右,而且我們的失去顧客的頭號原因是“退休”:客戶的工程項目結束了。當其他公司相繼跨掉的時候,有兩個原因使我們括了下來:

1. 每一個人,無論他的職位高低、資歷長短,都意識到滿足客戶委託的重要性。沒有人在對客戶支持之外做其他事情;

2. 當其他一切都失靈的時候,客戶可以自己幫助自己解決問題,因爲我們所有的客戶都擁有程序的源代碼。

所以。儘管在那段時間Cygnus的問題成堆,結果還是極少有客戶因爲我們不能交付軟件而離開我們。據我們所知,這同使用與我們競爭的專有軟件的用戶的情況,以及和使用沒有技術支持的開源軟件的用戶的情況形成了極好的對比.

在開源之外得資助——eCos

嵌入式系統世界的現實是,製造芯片的公司數量相對較少,而且在嵌入系統產品中購買幾家主要芯片的外部設備製造商(OEM,Outside Equipment Manufacturer)的數量也相對較少。市場的其餘部分有大量的小規模經營但是製造一些有趣產品的公司組成,不過他們的力量不足以形成氣候,不足以要求生產新的芯片設計或者軟件解決方案。

在這些半導體廠家和OEM之間有兒百家小的軟件公司,他們都在銷售各自的產品。例如,根據IDC的統計,在今天的市場上,有120多傢俱有商業性技術支持的實時操作系統(Real Time Operating Systems,RTOS),這些RTOS中沒有一種的市場份額超過了6%。這一局面與UNIX界十年前的情況是很相似的,只是分裂的局面要嚴重20倍!這一分裂的局面會導致產生出所有自由市場經濟條件下的典型退化狀態:冗餘職壓、不兼容、價格混亂等。那些半導體廠家和OEM都希望能夠搞出一些“標準”,以便加速TTM(time to money,從時間到金錢)的轉化。而那些商業性的RTOS供貨商要麼是花費太多的時間,要麼是花費太多的金錢,要麼是又費時又費錢。

在嵌入式系統市場上我們是一顆升起的明星:在我們的市場上,作爲領導者,我們的成長速度是自己的兩倍,增長速度是其他四個主要的競爭對手的百分之十。但是我們並沒有被當作是市場的真正領導者,我們也沒有像真正的領導者那樣行動。1995年,我們同許多關鍵的客戶進行了談話,討論了我們在嵌入式市場上做了什麼,還有什麼沒有做。我們開始明白一個道理:我們的GNUPro編譯器和調試器到那個時候爲止只能找出他們的問題。客戶真正需要的是在硅片抽象層次上的一種東西——這一層次位於標準的C Library或者實時POSIX API下面。通過以一種非零碎(non-trivial)的方式,我們得到了一種新的機會來擴展我們的產品。

我們削尖了鉛筆,記下了一組明顯的事實:120多種商業性的RTOS和1000多種內部的RTOS意味着:在技術的水平上,沒有任何一個人能夠建立一個充分可配置的RTOS來達到“皆大歡喜”的目的,而從商業的角度來看,我們注意到運行時的版稅正在使利潤消失,所以RTOS必須是不付版稅的。換句話說,爲了將市場上的客戶團結在我們的解決方案的周圍,我們需要創造一種嶄新的、世界級的技術,而且我們需要將它奉獻給市場。公司的管理層在一年的時間內一直對這一觀點嗤之以鼻,不過,最後還是同意了。

當我們決定了實施這一戰略時,管理層的人員還是繼續向我們爭論這樣一個問題:“怎樣才能使這一戰略產生利潤?”即使我們能在市場上繼續將客戶成功地團結在GNUPro的周圍,但是我們怎樣在嵌入式操作系統市場上成功地重複這一模式卻不是那麼明顯的。

面對這一完全矛盾的局面時,我們做了任何一個公司都要做的事情:我們作出了假設。我們假設能夠贏利,我們需要做些什麼才能解決客戶的問題成爲市場上的“大哥大”呢?我們自問了N個其他相關的問題。結論是:

1. 我們需要開發出這一極好的新的配置技術;

2. 我們需要創建系統的其餘部分,以便讓客戶能夠配置一些東西;

3. 我們需要在時常機遇成熟之前完成上面所有的工作。

開發軟件當然花費巨大,而在以時間計算的成本基礎上開發面向產品的軟件花費會更大。

當我們創立Cygnus時,我們都假設VC永遠不會明白我們做了些什麼,即使他們明白過來,那也將是五年或者更後的事情了,而在這一段時間內。他們爲我們什麼也做不了。幸運的是,我們的這些假設都錯了。

Philippe Courtot是我們第-位董事會外的成員,1992年初,他不費吹灰之力就將我介紹給了一羣頭面VC。在他們所有人面前,我對我們的模式、技術和將來的目標的態度都是非常開放的,同時我對這一事實的態度也是同樣地開放:我們是用自己的錢創建了Cygnus公司,我們自己能養活自己,因此我們不需要他們的資金支持。實際上,我們的利潤每年增長兩位數,而公司的規模增長80%的確是一個非常好的信號(我一直對這一非常關心),我們的生意成熟得非常好。Roger McNamee是爲VC社團工作的一流的軟件工業分析家,他對這一點是擊節稱讚的,他說:“我對你的商業模式既感到奇怪,又感到吃驚。我對這一模式工作得這樣好感到奇怪,但是我考慮得越多,我越感到吃驚爲什麼我沒有首先想到這一點!

一想到這一點就令人賞心悅目,因爲我們能夠解決自己的問題,而不需要外部的資金支持。但是到了1996年,現實情況是我們創造了太多的機會,這些機會在我們的GNUPro生意財力承受能力之外,我們需要一個新的計劃和新的夥伴。

我們找到了兩個投資者:Greylock Management和August Capital,他們明白我們過去所做的事情,我們是怎樣做的,他們理解我們的行爲處事具有準則和紀律,而且他們具有大量的資金在執行我們的計劃。他們投資了六百二十五萬美元,這對我們這家軟件公司來說在1997年上半年是最大的私有注資,而且執行情況從一開始就很認真。

我不喜歡他們,我是山姆。我不喜歡綠蛋和火腿。

——Dr. Seuss

當技術小組拼命向前趕時,商人們繼續推敲着怎樣使這筆投資發揮作用,因爲我們開始在eCos的體系和我們可以使用的商業化模式之間找到某種聯繫。從技術發展方向看,我們知道系統的可配置性是交付“皆大歡喜”體系的關鍵。從商業發展的方向看,我們知且“皆大歡喜”是爲嵌入式系統開發創建一種統一和有益的標準的關鍵。但是我們仍然不清楚誰會爲這一好處付錢。技術人員和商業人員爲此分別獨立地工作了一年半的時間。我們爲此設立了R&D(研究和開發)費用。由於不能接受開源的悖論,許多經理們可沒有這樣幹過。

當技術人員最終可以展示他們最初想象的東西時,商業方面的人員就開始明白了我們究竟在創造什麼東西:世界上第一個開源體系。對我來說,這是第一次我看到GCC時感到振奮。

開源的一切都不錯,而且對黑客也很好,開源能夠創建標準對於最終用戶是了不起的,但是在黑客可以對開源軟件能夠做的事情和普通用戶可以做的事情之間有一個漏洞。我們希望eCos成爲一個產品,而且主流的嵌入系統開發人員能夠擁抱它,而不只是黑客社團對它歡呼雀躍。我們的理念是用高級的工具武裝用戶,這些高級的工具可以配置、定製,並且以一種自動化的方式完成eCos肯定能做的基本功能,這樣可以替代今天那些公司內部的RTOS開發人員手工方式一步步完成的事情。通過在源代碼的級別上使高級工具控制eCos,並且通過建造這些代碼,使這些代碼可以讓這些工具來管理,我們使最終用戶可以虛擬地在源代碼級別上進行工作成爲可能,這一工作甚至並不需要用戶閱讀或者編寫一行C或者C++代碼。我們的成功證明:eCos的規模可以從700字節(只含有最小的硅片抽象層)到50KB以上(含有Internet堆棧和文件系統的全功能RTOS)的範圍內變化!

一旦我們意識到開源不僅僅是一個特性,而是在技術上使eCos成爲現實的東西時,一旦我們向自己證明有了這一特性,我們的性能的競爭力是對手的十倍以上時(比目標級別的配置性節省了10倍的空間,在源代碼級別上——但不是在源代碼體系化的RTOS上——節省了程序員10倍到100倍的時間,或者說,提高效率10倍到100倍)。我們將這一方案打包,將這一性能超羣的方案作爲產品推向市場,而且市場對這一方案的初步反應是極其積極的。

過去那些認爲我們以前基於GNU的生意不可能獲得成功人,是不可能想象eCos能爲Cygnus Solutions和世界創造出什麼商業成功的可能性的。

反思和展望未來

開源軟件叩開了獲得技術自由市場內在效率的大門,但是這是以一種有組織和不可預言的方式進行的。開源商業扮演了那隻亞當·史密斯的理論中所謂的“看不見的手”的角色,這隻看不見的手既對市場總體起作用,又左右着微觀經濟市場上競爭者達到各自的目的。最成功的開源商業公司,將是那些能夠運用技術促成網絡界形成最偉大的合作、並且能夠解決來自用戶社團的最大技術和商業挑戰的公司。

Internet本身產生於開源軟件,Internet成了最不可思議的開發新的開源軟件的動力。只要人們繼續通過開源軟件連接到Internet上,我們將會目睹開發和使用軟件方式的變化。這種方式與文藝復興運動改變了發展和使用學術知識的方式是非常相同的。有了開源軟件提供的自由,我別無所求!


Cygnus Solution的未來:一個企業家的現身說法

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

Cygnus Solution的未來:一個企業家的現身說法

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

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

相关文章