大教堂與市集 十一 開源的社會語境

>>>  讀書—連接古今充實信仰  >>> 簡體     傳統

十一 開源的社會語境
這句話一語中的:好的軟件都是源自解決開發者的切身之痛,推而廣之則是因為很多人也面臨著相同的困擾。這將我們帶回了“格言1”,或許換個角度重申能讓其更具效用:
 
18.要解決有趣的問題?那就先找到你感興趣的吧!
To solve an interesting problem, start by finding a problem that is interesting to you.
 
卡爾·哈里斯先前的popclinet如此,我的fetchmail也是如此。這個觀點已經久為人知。而更有趣(Linux和fetchmail歷史中更值得我們關注的)的話題則是出現在下一階段——由用戶和協作開發者組成的龐大的活躍社區,推動了軟件的演進。
《人月神話》中,布魯克斯指出程序員的編程時間不能簡單疊加。為已經延期的項目增派人手會讓它拖地更久。像我們之前提到的,他指出:項目的復雜度和溝通成本會以開發者人數為基礎呈平方指數增長,而業績僅能直線上升。布魯克斯定律早已被廣泛認可。但是在本書中,有不少開源軟件的開發流程可以將這個假說證偽——從經驗上看,如果布魯克斯定律主宰了一切,Linux就不可能出現了。
杰拉爾德·溫伯格在其經典著作《程序開發心理學》中對布魯克斯定律作出了頗具后見之名的重要修正。在其關于“無私編程”的討論中,溫伯格發現一些程序員不會“自掃門前雪”,而是鼓勵他人幫助糾錯和改進代碼。在這樣的工作室里,工作進展要顯著的多。(最近,肯特·貝克的“極限編程”技巧,將編碼者配對組合,令其相互督促。或許可以看作是對加強這種影響的一種嘗試)
可能是溫伯格的用詞讓這個結論沒有得到應有的認可——把網絡黑客說成“毫無私心”未免讓人莞爾。但是我認為,他的結論今天看起來比任何時候都更讓人信服。
借助“無私編程”的澎湃動力,市集模式有力削弱了布魯克斯定律的影響。布魯克斯定律背后的真理并沒有被推翻,不過龐大的開發群體和廉價的通訊帶來了非線性增長。正是這種增長湮沒了它的影響。這就如同牛頓學說和愛因斯坦學說的關系。舊的體系在低能量領域依舊有效。不過一旦你將質量和速度推至足夠的高度,就會驚現核爆或者Linux。
Unix的歷史應該使得我們對研究Linux(以及我小規模效法李納斯的實證【注1】)得出的結論有所準備。也就是說,雖然編程依舊需要單打獨斗,但是真正偉大的革新卻要借助整個社區的關注和智慧。一個閉門造車的開發者將會輸給一個懂得如何營造開放,演進環境的開發者。因為在這樣的環境下,他可以從幾百(甚至幾千)人中汲取反饋從而探索設計空間、得到代碼捐贈、錯誤檢測、以及其他改進。
但是有幾個因素制約了傳統的Unix世界沒能把這一效果推向極至。其中之一就是來自不同版本許可證、行業秘密、和商業利益的法律限制。另一個(回頭看來)是因為當時的因特網還不夠強大。
在廉價網絡到來之前,有過一些地域性的協作社團,在那里他們提倡溫伯格的“無私”編程。開發者可以很容易的吸引到一批高水平的建言者和協作開發人員。貝爾實驗室,麻省理工大學的人工智能和計算機實驗室,加州大學伯克利分校——這些都是創新的來源,頗具傳奇色彩并且繼續著影響力。
Linux是第一個致力于并且成功地將全世界當作其智庫的項目。在我看來,Linux和萬維網同期產生,以及Linux在1993到1994年(ISP產業起飛和主流網絡商機爆發的歲月)脫離嬰兒期都不是巧合。李納斯是在網絡普及成為可能之后,讀懂游戲規則的第一人。
盡管,廉價的網絡是Linux模式發展的必要條件,但是我認為這并不足以成為充分條件。另一個關鍵環節是開發中的領導風格和協作機制——因為用戶可以加入協同開發,才使得網絡這個媒介的力量能夠盡情展示。
那么這種領導風格是怎樣的?協作關系又是如何的呢?它們不可能是基于權力關系的——即使能做到,強權的領導關系也不會帶來我們所見的成果。在這個問題上,溫伯格很恰當的引述了19世紀俄國無政府主義者,皮奧奇·阿列克謝耶維奇·克魯泡特金在《我的自傳》[1]中的論點:
 
我成長于一個農奴主的家庭,直到進入社會,同當時所有的年青人一樣,我信奉諸如命令、秩序、叱責、懲罚的必要性。但是當我早期必須經手一些重要事務并與(自由)人打交道的時候,發現任何錯誤的指令都會引發嚴重的后果。于是我開始理解“命令和紀律”與“達成共識”兩種行事原則的不同之處。前者在閱兵中起到的作用令人欽佩,但在實際生活中則一文不值。因為現實生活中的目標只能由眾人同心協力完成。
 
“同心協力”正是像Linux這樣的項目所需要的——“命令和紀律”對于無政府主義天堂(我們稱之為網絡)里的志愿者來說則形同虛設。為了有效的運營和競爭,一個想要領導協作項目的黑客必須學會如何有效的激發社區對(克魯泡特金暗示的)“達成共識”模式的興趣。還必須學會如何應用李納斯定律。【注2】
先前我用“德爾菲效應”解釋李納斯定律,但是它本身更像一個生物學和經濟學中的自適應系統。Linux世界在很多方面更像是一個自由市場或者生態圈,其中自私的個體都試圖將自己的利益最大化,但是在這個過程中卻自發形成了一種自我糾正機制,其周密度和有效性令任何中央計劃都無法與之媲美。這就是可以“達成共識”的地方。
Linux黑客試圖最大化的“效用”并不是傳統經濟學價值,而是在黑客圈中無形的聲望和自我實現(或許有人會將他們的動機描繪成“利他的”,但卻忽略了一個事實——利他主義本身就是對利他主義者的一種自我滿足)。這樣的志愿文化并不罕見;我熱衷科幻小說已經很久了。與黑客圈不同,科幻迷們早就清楚地認識到“自我賞識”(自我激勵或是贏取同好的贊譽)是志愿者活動背后的基本動力。
李納斯,成功地在一個大部分由他人完成的項目中扮演了“看門人”的角色,培養利基直到它可以自我維持。可以說他準確的把握了克魯泡特金“達成共識”的精神。Linux世界里這種類經濟學的視角讓我們得以看到“共識”是如何應用的。
我們可以把李納斯的方法,視為一條通過“自我賞識”開創有效市場的路徑——用盡可能穩固的方法連接自利的黑客,進而實現必須持續協作才能達成的目標。通過fetchmail項目(雖然規模小點),我證實可以通過效法李納斯取得成效。或許我做得比他更有意識,更系統。
許多人(特別是不信任自由市場的人)預期(自我主義者的)“自我管理”文化會分崩離析、占山為王、揮霍無度、鬼鬼祟祟、和身懷敵意。但是只需看看豐富、優質、深刻的Linux說明文檔就足以將這種預期推翻。程序員討厭寫說明文檔似乎是金科玉律,那么這些文檔是哪來的?難道Linux黑客都轉性了?顯然,與自我彰顯的Linux自由市場相比,受人支配的商業軟件工作室即使有大筆商業資金支持,也生產不出那么優質的文檔。
Fetchmail和Linux項目都表明,通過對其他黑客的適當回報,一個優秀的開發者/協調者可以通過因特網網羅眾多優秀的協作開發者,進而避免項目在混亂中傾覆。所以,針對布魯克斯定律我提出反議:
 
19.倘若開發的協調者擁有不遜于因特網的媒介,又懂得如何避免強權領導,那么群體智慧定要強于單打獨斗。
Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.
 
我認為開源軟件的未來將日益倚重于那些懂得利用李納斯游戲規則的人,那些告別大教堂投身市集的人。這并不是說個體的遠見和才智光輝不再。相反,我認為開源軟件的鋒芒會屬于一種人——他們以獨到的遠見和才智開始一個項目,之后通過有效的建立志愿者社區來將其擴大。
或許這并不只是開源軟件的未來。若論解決難題,沒有一個閉源的開發者能與開源社區的智庫相提并論。極少有人能雇用超過200人(1999年600人,2000年800人)為fetchmail效力。
或許開源文化會取得最終的勝利,但這并不是因為協作是善,而軟件“囤積”是惡(或許你相信后者,不過李納斯和我卻不以為然),而只因開源社區可以為解決一個問題投入數量級的時間,所以閉源世界肯定會在這場進化角逐中落下馬來。
 
 
 
 
 
注:
1. 如今我們有了另一款軟件,與fetchmail相比,它對市集模式假設做了更多的測試。這就是EGCS——實驗性GNU編譯系統(Experimental GNU Compiler System)。
這個項目始于1997年8月中旬,它被視為對早期(《大教堂與市集》公開版本中)觀點的有意嘗試。GCC項目(GUN C語言編譯器,GNU C Compiler)創始人的離開,導致其停滯了許久。大約二十個月之后GCC和EGCS開始了平行的開發——利用相同的因特網開發人員;都以相同的GCC源代碼為基礎;使用幾乎相同的Unix開發工具和開發環境。惟一不同之處在于,對于EGCS我們使用了先前述及的市集策略。而GCC則采用了類似大教堂的開發模式——封閉的開發團隊,極少的對外釋放。
這是我們能做到的最貼切的核對實驗了,其結果頗具戲劇性。幾個月里,EGCS就憑借一些特色遙遙領先——更棒的優化設計以及對FORTRAN和C++語言更好的支持。許多人發現與最近的GCC穩定版本相比EGCS發展的更迅速也更可靠。而且主要的Linux發行版都開始改用EGCS了。
1999年4月,自由軟件基金會(GCC的官方發起機構)決定解散原始的GCC開發團隊,并正式由EGCS接管。
 
 
2. 當然,克魯泡特金的批判和李納斯定律把社會組織控制論抬升到了更廣闊的角度。進而聯想到軟件工程領域的另一則民間法則,康威定律(Conway's Law):“讓四個人開發編譯器,你就會得到四個(4-pass)編譯器”。原始表述更具有一般性:“產品必然是其組織通訊結構的縮影”。簡言之就是“方法決定結果”或是“過程變為產品”。
在很多層面上,開源社區沒有必要形成與這適應的組織功能結構。網絡無處不在:非獨因特網,人們的工作也可以形成一種分布式的松散連接,一種對等網絡。正是這種聯系提供了恰如其分的冗余和緩解。對于這兩種網絡而言,一個節點的重要性取決于有多少人愿意與其相連。
其中對等部分對社區驚人的生產力至關重要。SNAFU法則[2]發展了克魯泡特金對權力觀點的闡釋:“只有平等才能帶來真誠的交流,因為下級更習慣于取悅上級而非告知以誠。”創造性的團隊協作需要坦誠的交流,所以權屬關系的存在必然形成制約。有效擺脫權力羈絆的開源社區向我們展示了這有多可怕:錯誤、低產能與錯失機會!
進而SNAFU法則預言在獨裁組織中,隨著諂媚越來越多,決策者和事實的剝離也愈發嚴重。其在傳統軟件開發中所扮演的角色顯而易見:下級有很多動機去隱匿、漠視、淡化問題。一旦這個過程轉化成了產品,就是一場災難。
 
 
譯者按:
1. 皮奧奇·阿列克謝耶維奇·克魯泡特金:Пётр Алексе́евич Кропо́ткин (1842-1921) 俄國無政府主義者、地理學家、政治哲學家,他認為改善人類現狀的方法是合作而不是競爭。他對俄國和英國的無政府主義運動產生了很大的影響。《我的自傳》是巴金的譯作,也是巴金認為對自己影響最大的一本書。其英文版名為《Memoirs of a Revolutionist》。
2. SNAFU:“snafu”是二戰時期軍隊中使用的一條縮略語。也就是Situation normal all fucked up(好日子都他媽搞砸了)。后來也寫為Situation normal all fouled up(平靜的狀態被攪亂了)。黑客則借此解釋集權模式的惡果。
 


埃里克.斯蒂芬.雷蒙 2014-07-01 18:22:20

[新一篇] 大教堂與市集 十 市集風格的先決條件

[舊一篇] 大教堂與市集 十二 關于管理和馬其諾防線
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表