當你瞭解了 Apahce 的過去,你就瞭解了 Apache Way

語言: CN / TW / HK

在 16 世紀開始的北美印第安戰爭中,其中有一個與之抗爭達數世紀,最後一個向美國政府投降部族——Apache 部族。他們的最後一任首領傑羅尼莫帶領部族抗擊美軍直到 1909 年。

約莫一個世紀之後,同樣是在美洲大地上,一個自稱是“hanging out with radicals”的計算機系學生 Brian Behlendorf 帶領一小撮人站在了反抗大型科技公司的擂臺上,並將自己的隊伍命名為“Apache Group”。 

之後的故事基本就人盡皆知了。Brian 等人所釋出的 Apache 在 Web 伺服器領域攻城略地,巔峰時期市場佔有率超過 7 成。而在 Apache HTTP 伺服器的基礎之上,一個更大的、為自由而戰的軟體“部落”Apache 軟體基金會Apache Software Foundation,簡稱為ASF隨之創立。到今天,ASF 中已經有來自全世界各地貢獻者維護的近兩百多個專案,在網際網路中提供著“Trillions and Trillions Served”數以萬億的服務,也正應了那句“開源吞噬世界”。

許多開源專案以被冠“Apache”之名為榮,也有人形容 ASF 是一個“草根”專案的歸屬地,軟體是否能進入孵化、畢業全看專案本身發展而非出身,那些經過 ASF“認證”順利畢業的專案也是各自領域中的翹楚。

Apache HTTP 伺服器打了個漂亮的開場仗,ASF 則制定了非常正確的戰略,組合拳之下,這片斜插著的羽毛已經通過網際網路實際存在全世界各個角落。

三叉戟之戰,鳳凰涅槃

1994 年,在加州大學伯克萊分校計算機系剛讀了三年的“激進分子”Brian 離開學校,去追尋自己的理想。Brian 早期的工作是建立並維護 Wired 雜誌的線上網站,和當時絕大多數的 Web 網頁一樣,Wired 依賴開源的 NCSA HTTP Server。NCSA HTTP Server 由伊利諾斯大學超級計算機應用程式國家中心(NCSA)組織研究生編寫。

Biran 當時也為 NCSA HTTP Server 貢獻了許多補丁,後來 ASF 的創始成員早期也都是貢獻者之一,比如聯合創始人 Mark Cox 在 1993 年讀博期間,也在為 NCSA Web 伺服器建立新功能和錯誤修復。

Brian Behlendorf

但是就在 Brian 走出學校的這一年,圖形介面網路瀏覽器的開發者安德森和克拉克聯手成立了一家叫做 Netscape 的公司,在整個科技工業史上,Netscape 被認為是少數曾蓋過微軟風頭的公司之一。

Netscape 成立之後便推出產品“網景瀏覽器”,不到一年就賣出幾百萬份,到了 1995 年,Netscape 就掛牌上市,當天股價就從 28 美元漲到 75 美元,之後也在一路上漲。

嶄露頭角之際,Netscape 盯上了 NCSA HTTP Server 這塊肥肉。

據 Brian 回憶:突然有一天,伊利諾伊大學的學生開發人員向 NCSA 網路伺服器開發人員列表傳送了一封電子郵件。郵件內容大致是表示他們將不會再為 NCSA HTTP Server 工作了,原因是他們都在 Netscape 找到了工作。這意味著,他們只能依賴一個沒人編碼、沒人維護的開源網路伺服器。

Brian 和一些正在為 NCSA HTTP Server 做貢獻的人意識到,他們處在一個非常不穩定的位置。於是,自救開始。

他們先是查看了程式碼的版權許可,NCSA HTTP Server 當時採用的是一個 MIT License 精神下的寬容式軟體協議,給了開發者極大的自由。Brian 決定延續這一想法和心態,讓人們自願一起工作,共同努力。同時,他想要為新軟體起一個浪漫、有趣的名字,最終他鎖定了 Apache 這個戰鬥到最後的部族名稱。

此外,Apache 對於新伺服器來說還代表另外一個意義。ASF 的成員之一 Danese Cooper 解釋,過去為伺服器軟體提交的東西被稱為 Patchs 補丁,現在稱為 PR,新的伺服器正是由這些提交構成的,因此也是“a patchy software”,諧音 Apache。

對於 Apache HTTP 伺服器的出現,ASF 聯合創始人之一 Jim Jagielski 形容它是鳳凰涅槃:通過郵件列表來收集一群人的意見,並協調鞏固,我們希望在自己的 NCSA web 伺服器中看到的補丁、想法、功能和改進,並使用它來建立 Apache Web 伺服器 。

而 Apache Group 接下來則是要領導一場戰鬥,這場戰鬥中,科技巨頭的形象是“不瞭解開源”、“反對開源”,Apache Group 則是要去建立一個軟體,創造開源的基礎設定,並且建立開源知識,用 Jim Jagielski 的話來說就是“像三叉戟之戰”。

“我們在這場戰鬥中獲勝的想法是讓開源成為人們開發軟體的事實方式,這對 Apache 來說是一個長期的目標。”ASF 成員之一 Danese Cooper 如是說。

《冰與火之歌》一書中,三叉戟之戰(Battle of the Trident)是最終決定篡奪者戰爭結果的一場戰鬥。起義軍和王室軍隊在三叉戟河的綠叉河畔,穿過後來被稱為紅寶石灘的渡口。這場戰鬥以起義軍的勝利而告終。

“草根”保護傘

“當 Apache 軟體基金會成立時,我真的只是把它看做是一個產品的保護傘,我沒有想象過會有數百個專案想要在同一個保護傘下。”這句來自 Mark Cox 的評價概括了 ASF 成立的初衷以及達成的效果。

Apache Group 剛剛成立時僅有 8 個人,到了 0.8.8 版本時隊伍擴大到 15 個人。到 1995 年12 月 1 日 Apache 1.0 釋出後,迅速在一年內超過 NCSA,成為最常用的 Web 伺服器。

隨著貢獻者與使用者的增加,問題隨之浮現。Apache HTTP 伺服器不斷收到來自世界各地的開發者的反饋和 PR,也有人成立類似“Apache Group”的小組。Apache 成員 Maximilian Michels 在談及 ASF 的過去時回憶,“隨著專案數量的增加,經濟利益和潛在的法律問題威脅到 Apache 的存在。出於這種需要,Apache 軟體基金會 (ASF) 於 1999 年 6 月作為美國 501(c)(3) 非營利組織成立。在美國,501(c)(3) 是專門設計的法律實體用於非營利慈善組織。”

“ASF 成立後,新專案可以輕鬆利用基金會的服務。在接下來的一年中,每隔幾個月就有一個新專案進入 ASF。Apache HTTP Server 之後的第一個專案是 Apache mod_perl(2000 年 3 月)、Apache tcl(2000 年 7 月)和 Apache Portable Runtime(2000 年 12 月)。在 2001 年的短暫休息之後,該公司曾採用計劃化方法通過孵化器加入新專案,此後,ASF 每年有多達 12 個專案(2012 年)非常穩定地增長。”

現在翻看 ASF 的專案增長曲線,每年新進入孵化器的專案都非常穩定。

圖源:https://projects.apache.org/

那麼,ASF 為何能吸引這麼多專案?保護傘更寬泛的作用在哪裡?

我們不妨從一個親歷者的心聲開始看起。

1998 年,IBM 贊助了 ASF 第一場團隊聚會,幾乎所有人都是在這次聚會中,才和一起工作了幾年的人見到面。第一屆 ApacheCon 也在這一年召開。當年,Mark Cox 見到所有 Apache Web 伺服器的開發人員聚集在一個地方,不由得擔心一個問題:如果發生自然災害,或是食物中毒,那麼社群就會消失。不過,Mark Cox 擔心的並不是程式碼,因為程式碼已經在世界各地的數萬臺伺服器上,他真正擔心的是擔心會失去那些擁有核心價值觀和相同使命的人,“專案的成功是基於人而不是程式碼,這就是定義成功的原因,這幾乎就是 Apache Way。”

CC BY Mark Cox. https://www.flickr.com/photos/iamamoose/albums/1381277/with/63963566/

CC BY Mark Cox https://www.flickr.com/photos/iamamoose/63963722/in/album-1381277/ 

Apache way 是什麼?有一句評價是:你去問 ASF 中的 10 個人 Apache Way 是什麼,可能會得到 11 個答案。然而,如果你問 ASF 為什麼成功,答案都離不開 Apache Way。

Apache Way 早在 Apache Group 成立之時,就已經出現,“它是我們基金會獲得成功的原因,同時我們也相信它對整個開源的勝利至關重要。”當然,這些年,Apache Way 也在不斷改進,總得來說,Apache Way 根據現有法律和社會框架定義了開源,可以幫助其他人瞭解是什麼可以讓開源變得強大,以及如何參與開源。具體規定可檢視 Apache Way 的官方解釋,這裡主要列下幾點 Apache Way 最為人津津樂道的特徵和表現。

  • 社群大於程式碼

這一點更多的是 ASF 成員所堅持的一個信念。正如 Mark Cox 所看重的,ASF 中,社群成員一直被看做是最寶貴的財富,ASF 堅信健康的社群比好的程式碼更重要,強大的社群可以糾正程式碼的問題,而不健康的社群可能會難以以可持續的方式去維護程式碼庫。

  • 透明郵件列表與明確的章程

Brain 在紀錄片中提到 ASF 的核心治理流程均以章程的形式或者其他方式可以有很好地記錄。比如從一開始,Apache Group 所有的溝通和決策都是在公開的郵件列表裡進行的。(一個小故事,Brian 和他的妻子也是在郵件列表中認識的。)

此外,在慕名而來的孵化專案不斷增加時,ASF 在 2002 年正式成立 Incubator,來指導新進專案的成長:志願者、愛好者或公司員工均可向孵化器提案,包含專案名稱、初始 PPMC(Podling PMC)成員名單,以及新專案的動機和目標;一旦 IPMC(Incubator PMC)討論了提案,就會開始投票決定專案是否進入孵化階段;在孵化階段,專案名稱中帶有“孵化(Podling)”,畢業後消除;要畢業,專案必須證明自己足夠成熟。ASF 專案成熟度模型主要包括社群活躍度、程式碼質量和合法合規方面。

  • 獨立性/中立性

基金會對於當今開源界的專案來說,最基本的便是能提供一箇中立性的背書,ASF 也不例外,並且執行非常嚴格的供應商中立:“任何組織都無法獲得特權或控制專案的方向,無論是否僱用 Committer 從事 Apache 專案或贊助狀態。”

“這種獨立性為那些迅速增長的開發人員群體創造了一個避風港。”ASF 董事會成員 Jim Jagielski 認為,ASF 專案增長的主要原因即為中立性,由於 ASF 的發展強調了對中立、以社群為中心的環境的需求和對需求的認可,在這個環境中,每個人都可以為專案工作併為專案做出貢獻,而無需付費。在一個公司爭相控制開源專案的生態系統中,ASF 提供了一個安全的空間,在這個空間中,社群本身擁有並且永遠擁有對自己命運的控制權。儘管有些專案有一個龐大的、單一的企業‘協會’,但 ASF 和 PMC 在確保影響和控制權方面都非常小心。社群內個人的肩膀,而不是任何公司的需求。

  • 精英治理和“懶惰”共識

精英管理和“懶惰”共識是 Apache 軟體基金會內部治理的核心原則。

精英管理是源於古希臘的一種政治制度,與中國古代的選賢舉能所類似,人們推選做出努力和貢獻的,才德配位的人成為領導者,根據貢獻不同,給予不同的身份。在 ASF 中,提交補丁的使用者可能會獲得提交者身份,推動專案發展的提交者可能會獲得 PMC 身份,而積極參與專案與基金會工作的 PMC 成員可以獲得會員身份。這樣,便能確保新人在進入社群時可以更好的融入,也有了一個清晰的進階指南。

另外,基金會和專案內的決策通常使用“懶惰”共識來執行。共識很容易理解,投票決策一定能確定一個更多人支援的共識。而“懶惰”共識,是指只要沒人反對,即使是少數人也可以直接討論,並決策。當然,討論必須在郵件列表中公開進行。這個規則的一大好處就是,不需要每個決策都調動全員參與,便能在推動專案發展中減少摩擦,提快速度。

不難發現,ASF 旗下專案很少出現嚴重的社群糾紛,也幾乎不會出現專案的管理層和貢獻者發生衝突的事情。能同時管理一百多個不小的開源專案,並且讓幾乎所有的專案都越來越好,這似乎已經證明了 Apache Way 的高明。而隨著 ASF 專案的增加與普及,Apache 最初的夢想——讓開源開發成為事實上的開發方式,似乎離實現也並不遙遠了。