|
最開始,所有的資源代碼都是開放的。與其説這是程序設計問題不如説是環境問題。但它將為電腦編程外的眾多領域帶來巨大影響。資源代碼由英文指令組成,為了讓電腦執行,需要轉化成0和1。開源軟體代碼基本上就像聽上去那樣:所有人都可以查看,拷貝,改進,以及用於任何他們認為合適的目的。因為開放了,合作精神和自由交換信息在計算機編程中也得到了發展。也因為曾經開放過,一小部分有原則的編程人員決定繼續開放。他們不能強迫微軟,美國升陽公司或者蘋果公司公開他們的代碼,但他們可以創造出一個自由而開放的供選項。
為了這麼做,開源軟體行動的創始人不得不發明一種新方式。他們沒錢雇人,但擺在面前的任務令人生畏——要編寫全部操作系統,需要程序員花上百萬小時的時間。
這些技術高超的人會花時間在一個註定失敗的項目上嗎?——當然會!很多很多人一起的時候就會。合作的話,沉重的壓力就會平攤,而不會壓在一小部分人身上。
20世紀90年代早期,大眾創造出了它的第一個重大作品:Linux操作系統。它在很多方面超越了當時所有公司最好的産品。開源軟體提供了一個先例——這是概念的證明。如果這些在業餘時間工作的人——灶&科學家,地窖音樂家,星期天攝影師——為眾包這個引擎提供了燃料,那麼,開源軟體運動便為眾包提供了藍圖。
當然,在1969年沒有人知道這些。有一天,貝爾實驗室的電腦編程人員肯 湯姆森忽然發現自己無所事事。他一直致力於一項工作——麻省理工學院,通用電氣和貝爾實驗室之間宏偉的5年合作計劃。這個項目要為當時的大型電腦創造一種更有效率的操作系統,當時的大型電腦一次只能處理一項任務,這個限制條件減緩了計算機的處理速度,即使當時最先進的電腦也不例外。而新的系統應當能一次處理超過一項任務。
但是,這個項目並沒有帶來效率反而引起了混亂。操作系統的手冊有3000多頁,那年春天,貝爾已經放棄並退出了該項目。而就在那時,湯姆森有了一個4周的假期,他決定從草稿開始(設計),就當是為自己而作。他沒有設定過高的目標——每週完成操作系統的四個組成之一。政治科學家和作家史蒂文 韋伯在《開源軟體的成功》一書中寫道,“僅靠一個人一個月的時間和非常基礎的硬體條件,湯姆森不得不將好大喜功的心態拋諸腦後,做些簡單的工作。”或者正如湯姆森的同事當時説的,“不做浮誇的事,能做一點算一點。”
那個月底,湯姆森已經寫出了Unix的基本大綱,這個系統必定會成為最成功和壽命最長的操作系統。但並非Unix的流行讓湯姆森成了英雄,真正偉大的是他的決定。他把Unix拆成一個個小的,獨立的項目,做一件事算一件事。這樣的規定最終讓數百位程序員以一種分散的模式參與進來。今天幾乎是用同樣的方式——上千人共同工作——完成了一本參考書:維基百科。
將勞動分解成小零件,或者單元,這是眾包的特徵之一。在這個例子裏,開源軟體程序採用的正是各個擊破的方法,而眾包起到了輔助作用。
那時,沒有很多人對此感興趣。計算機科學已經在學術界或類學術研究機構之外,比如在貝爾或者麻省理工學院那樣的實驗室之外發展了。分享計算機代碼與信息自由交換的基本學術傳統相一致。但這也是一個簡單的權宜之計:它是唯一能讓事情順利進行的辦法。1953年問世的IBM705是第一批商用計算機之一,造價160萬美元。(按2008年的匯率,大約是1200萬美金)它不但昂貴,還要佔用很大的空間,為了告訴計算機如何工作,必須編寫全部代碼,這是件相當耗時的事情。為了最大化地利用現有資源,一些能擔此重任的人不得不合作。
在發展的這幾年中,出現了程序員文化,其特徵是,在熱衷某件事的專家中間,帶有玩鬧性質的,非常好的競爭性互動合作。它讓我們的社會氛圍鼓勵原創和創新,最重要的是,自由獲得信息的權利——尤其是電腦代碼。用戶和程序員已經沒法分開,因為使用電腦的人就是編程的人。這就是黑客的起源。儘管這個詞最後成了貶義詞,但它本來的意思是指那些讓技術變成藝術的電腦高手。
在個人電腦出現之前,對軟體知識産權的要求就已經産生了,這帶來了衝突。1976年,比爾 蓋茨和保羅 艾倫(微軟公司的創始人之一,也是公司當時唯一的僱員)寫了一封“給愛好者的公開信”,沒有矯揉造作,直抒胸臆:“絕大多數愛好者請注意!你們在偷你們(使用)的軟體。”這封信是對黑客習慣的明確譴責,這種習慣的形成是建立在免費分享軟體和源代碼的基礎上的。蓋茨指出,他和艾倫在微軟産品問世之初就已經支付了平均每小時2美金的專利權稅。
誰會為這個去編寫軟體?蓋茨很好奇。這些愛好者需要去找專業的程序員,畢竟,什麼樣的愛好者會花3年時間寫程序,找到所有的漏洞,然後將心血工公開,免費共享?
蓋茨大概永遠也料不到,這個問題的答案是:沒有一個人願意花3年去做這樣令人望而生畏的工作,但是上千個人一起做的話,為什麼不願意?
打了一場漂亮仗
1983年,麻省理工學院的電腦專家理查德 斯托曼(Richard Stallman)決定一個人對蓋茨開創的軟體工業宣戰。在這個過程中,他為黑客團體之前模糊的一個偏好下了定義。1970年,斯托曼已經到了坎布裏奇,在哈佛大學就讀。哈佛位於曼哈頓上西城,它是風頭正勁的自由教育的産物。斯托曼那時是一個極富進取氣質,早熟的年輕人。他説,在到麻省理工學院人工智能實驗室之前,他沒有同齡人的朋友。接下來的13年他都生活在那——睡在辦公室,靠寫代碼為生。
20世紀80年代早期,斯托曼看到,曾經在麻省理工實驗室繁榮壯大的黑客團體分崩離析。他的大多數朋友和同事都離開了學術界,轉而開辦公司,致力於發展專利軟體,為蓬勃發展的計算機市場服務。在這一點上,即使Unix——黑客文化的頂梁柱——也已經成了專利産品。為了抗議,斯托曼成立了GNU計劃,致力於創造一個建立在開放或者自由使用代碼基礎上的操作系統。(GNU是“GNU不是Unix”的縮寫,這是一個生動的例子,説明幽默的黑客喜歡把工作當成玩樂。)
這是偉大革命的第一槍,但在當時幾乎沒有人聽到。
斯托曼負責麻省理工學院對外的所有交往,(儘管這所大學繼續讓他使用實驗室和睡在辦公室),他開始編寫一個建立在Unix基礎上的操作系統,但是這種操作系統允許使用者自由竊取,拷貝,截取,粘貼,修改,最重要的,允許使用者在源代碼基礎上加入自己的代碼。
由於斯托曼的系統可以自由&&,這吸引了其他程序員和他一起為GNU項目工作。“人們開始詢問並改進程序,最後,這個系統比我最初創造的那個好太多了。”斯托曼説。因為GNU操作系統是建立在Unix基礎上的,因此,它也有分成上千份的小文件,對其他程序員來説,他們可以根據自己的時間,從中輕鬆地挑選出某部份進行改進。1985年,“為了計算機用戶的自由和維護所有自由軟體使用者的權利”,斯托曼建立了公益自由軟體基金(FSF)。 FSF幫助斯托曼繼續完成GNU項目,它也讓更多的人清楚的了解了斯托曼的理念:“自由軟體”①的重點在“自由”而非價格。理解這個概念是要理解,我們在為爭取自由使用權而戰,不是為了免費而戰。
通過自由共享操作系統,黑客精神毫不費力的復活了。1986年,斯托曼創造了C語言,順理成章的成為操作系統最重要的組成部分,而且他完全開放代碼。為了防止公司程序員將獲得的代碼用在其他軟體中,然後拿到市場上去銷售,斯托曼創造了“GNU 大眾許可”(GNU GPL),這是一個比開源軟體行動更偉大的貢獻,它在很大程度上也影響了文化——這個許可①1998年,一批提倡自由軟體的領袖採用專有名詞“開源軟體”,這個詞和“自由軟體”同義。
不僅規定許可下的所有東西可以自由使用,而且任何包含它的東西也要遵守這個規定。使用這個許可的軟體成了它本身的許可,“這是一個解決自由繁殖的絕頂聰明的方法。”在講述開源軟體運動歷史的書《反代碼》(Rebel Code)裏,作者葛林?穆迪指出。這個小花招就是我們今天説的“反版權”。1991年,斯托曼和一些程序員基本上完成了GNU項目,只剩下最後的核心(基本上是一個操作系統的心臟),這部分也是最難編寫的,完成它起碼要再花兩年以上的時間。當時,黑客團體以外,幾乎沒有人聽説過GNU,更別説使用。但這一切即將改變。
那年八月,來自芬蘭的計算機系學生林納斯 托瓦茲(Linus Torvalds)在網絡上發布了一個帖子,説“我正在編寫一個(免費的)操作系統(只是業餘愛好,沒GNU那麼專業,也沒那麼複雜)……我想知道大家最想要什麼樣的操作系統。”GNU核心程序的完成遙遙無期,托瓦茲等不及了,他決定自己編寫核心程序,並很快給這個系統起了個名字:Linux。他通過網上發帖尋找合作者,後來證明,這一舉動意義重大。接下來的兩年時間裏,上千名程序高手參與進來,幫助改進了Linux系統。穆迪説“一個黑客的業餘愛好衍生出了一個團體。隨着Linux的逐步完善,使用它的人也越來越多;越來越多的人為它排除程序中的錯誤,Linux的發展日漸加快:這些品德高尚的人繼續以令人眩暈的速度帶動着Linux的發展。”
今天,Linux主宰着超級計算機,手機,數字錄影機(比如TiVo①),更不必説使用Linux系統的上百萬台個人電腦。因為Linux用的是GNU大眾許可,所以任何公司都不能以任何形式將其用於商業。這就確保了這個“品德高尚的團體”繼續繁榮發展。
總的來説,Linux對普及開源軟體項目做出了貢獻。現在,軟體開發網頁Sourceforge.net上,有超過17萬5000個正在進行的開源項目。各大主流公司都接受並採用了開源方式。大概有70%的互聯網服務器軟體是在Apache服務器上運行的,Apache是在開源的基礎上發展起來的,在所有的大規模電子郵件程序中,超過半數使用的是開源軟體。開源團體不屬於任何一個有組織的機構,比如某個公司或學術機構,他們證明了一件事:最傑出的網絡是自發組織的。到底誰是Linux之父? 答案是:大眾。
開源軟體運動帶動了很多新軟體的開發,同時也推動了一種基本原理的發展。倡導開源模型的人都很重視透明度,這是出於實際需要,並不完全是因為研發進展的公開恰好吸引到了更好的程序。IBM,甚至微軟,都開始使用這種既省錢又有效的方式來開發更好的産品,他們這麼做是因為開源模型帶來的實際效果,並非為了追求其潛在的平等原則。
是什麼讓開源如此有效率?概括的説:眾人拾柴火焰高。開源的“傳道者”艾瑞克 S |