每談及開源、開源社區,就不得不提及 Apache 軟件基金會(Apache Software Foundation,ASF),作為全球最大的開源組織,它究竟是如何運行管理的?
Flink 社區將分享“走進 ASF”系列內容,先從宏觀介紹 ASF 是如何運作的,然後詳細解說如何參與 Apache 具體項目做貢獻,如何成為某個項目的 Committer、PMC 成員,如何選擇多個 Apache 項目進行多領域貢獻併成為 ASF Member 等,希望有助於你真正瞭解開源、參與開源。
我的開源之旅
我2011年加入阿里,經歷過若干組織架構調整,做過行為日誌 OPlog,阿里郎,雲轉碼,文檔轉換等若干產品,在2016年10月份由於團隊需要有幸接觸到 Blink 的開發,開始瞭解 Apache Flink 社區,由初期的參與社區開發到後來逐漸主導具體模塊的開發,到負責 Apache Flink Python API(PyFlink) 的建設。目前是 ASF Member, PMC member of @ApacheFlink and a Committer for @ApacheFlink, @ApacheBeam, @ApacheIoTDB 。我的開源之旅如下:
為何要寫《走進 ASF 系列》文章?
為啥要寫《走進 ASF 系列》文章?核心考慮是發現國內大多數人都聽說過 ASF,同時我們國家也是世界上使用開源最多的國家之一,如下圖展示了在 ASF 2019 年年度報告中披露的 ASF 軟件在全球各國家的下載量排名:
中國已然成為 Apache 軟件基金會項目下載量最大的地區。但是真正瞭解並參與 ASF 貢獻,並且成為 ASF Member 的人非常稀少。這個現象並非我們沒有能力參與 ASF 貢獻,更不是沒有能力成為 ASF Member,而是對 ASF 瞭解的渠道比較少,同時或多或少的還可能有一點語言上障礙的原因,國內對 ASF 的參與和世界其他西方國家相比來說,參與的人數非常稀少!分享一些具體數字給大家:
- ASF 擁有7000+代碼貢獻者,然而為 ASF 項目提交貢獻的中國工程師僅千人規模,不足七分之一。
- ASF 項目約350個,然而由中國發起的 ASF 項目僅19個,已成為頂級項目的比例更是不足5%。
- ASF 孵化器擁有導師200多個,然而活躍的中國導師不超過5位。
- ASF 每年在美國、歐洲等地舉辦 ApacheCon ,然而迄今為止,ASF 尚未在中國舉辦過一次 ApacheCon。
- 最新統計(2020.04.05) ASF Member 全球有765名,華人有40名,其中在中國的有22人。
作為全球最大 Apache 開源消費國, ASF 在國內有廣泛的用戶基礎,近年來國內個大互聯網公司也逐漸參與了Apache 開源建設,我們很有必要思考如何讓中國的工程師有更多的有機會了解 ASF,有更多的機會參與 ASF 貢獻,有更多的機會成為Apache 開源項目的 Committer,PMC ,甚至是 ASF Member。
所以《走進 ASF 系列》文章就是將我對 ASF 的認識和參與 ASF 貢獻的經驗與大家進行分享,大力推動 ASF 在中國的發展,竭盡全力讓國人在 ASF 開源領域佔有一席之地~~
《走進 ASF 系列》會有哪些內容
《走進 ASF 系列》文章會從 ASF 組織架構,ASF 公司和 ASF 項目治理方案入手,宏觀瞭解 ASF 如何運作。然後分多篇進行各個細節的介紹,比如,如何參與Apache 具體項目做貢獻,如何成為某個項目的 Committer,如何成為某個項目的 PMC 成員,如何選擇多個 Apache 項目進行多領域貢獻,如何成為 ASF Member 等等進行分享。
下面將跟大家分享 ASF 的組織架構及治理方式。
ASF 是什麼?
我想“ ASF 是什麼?”是一個最簡單的問題,也是一個最難回答的問題。簡單是因為你可以以任何一個角度去描述,就像盲人摸象。而困難是因為你很難用一句話就完整全面的定義“ ASF 是什麼?”。所以面對這樣的問題我的考慮是,先描述表象,再探究其細節。就像我們回答寶馬是什麼,我們會說“別摸我”,奧迪是什麼?我們會說“四個圈”。那麼 ASF 是什麼?我想說,ASF 是下面這個漂亮的羽毛 ;)
瞭解 Logo 也許是欣賞一個新事物最好的開始。那麼下一秒你將有一連串的問題浮現出來?她多大了?幹什麼的?怎麼運作的?和我有什麼關係?接下來我們慢慢道來…
與阿里同齡
Apache 軟件基金會(ASF)是在美國註冊的503©3非營利的公共慈善組織,於1999年成立。那麼成立的最終目的是什麼呢?ASF 最核心的目的如下:
- 通過提供硬件、通訊工具以及業務基礎架構,為開放式協作開發軟件項目提供基礎。
- 建立獨立法人實體,任何公司和個人可以向其進行捐贈,並能夠確保這些捐贈將用於公共利益。
- 為個人志願者提供避免針對基金會項目的法律訴訟的手段。
- 保護應用於其軟件產品的 “Apache” 品牌免受其他組織的濫用。
所以 ASF 是有著美好願景和偉大使命的公益性組織。ASF 和阿里巴巴一樣都成立於1999年,而且在利他方面可謂英雄所見略同,阿里巴巴以“讓天下沒有難做的生意”為使命, ASF 則致力於開源軟件生態的營造,讓軟件技術能夠在全球共享,這是 ASF無比耀眼的魅力所在!
逐本溯源
ASF 的成立並非憑空出世,在 ASF 的前身其實是叫“ Apache 小組”,這個小組當時在維護由 NCSA 編寫的 HTTPD Web 服務器。從1995到1999年,由 “Apache 小組”所領導開發的 Apache HTTPD web 服務成為了市場的領導者,一直持續到現在,目前仍佔據了市場65%的份額。當年使用該服務的人越來越多,但是最初的開發人員對該項目失去了興趣,並轉移到其他項目上,從而使用戶失去了支持。
於是一個叫 Brian Behlendorf 的大牛在自己的計算機上創建了一個郵件列表,供這些用戶協作以修復,維護和改進該軟件。從1995年2月不到12位軟件工程師通過電子郵件共享代碼補丁開始,到後面的有了 Apache 網站,網站上又託管了很多關聯項目(例如 mod_ perl 項目,PHP 項目,Java Apache 項目),這樣的情形面臨的問題越來越多,比如,潛在的個人被法律攻擊等,進而越來越需要一個更加協調和結構化的組織來解決這些問題。於是到1999年6月 ASF 便註冊成立了!:)
成長的苦惱
隨著軟件產品的不斷成熟,用戶越來越多,反饋的問題和軟件增強的建議也越來越多,同時參與進行代碼修補的人也越來越多。問題也隨即而來,最初的幾位創始人根本沒有辦法處理所有的問題,Review 所有的代碼補丁,Merge 所以的提交,那麼怎麼辦呢?
當時 Apache 成員認為如果某位開發者,已經“贏得”了成為社區的一員的資格時,他們就授予此開發者對代碼倉庫的直接訪問權限,也就是目前我們說的 Committer,這樣不斷的增加團隊的力量,也提高了團隊開發項目的能力,進而更有效地維護和發展了團隊。當然這只是冰山一角,ASF 的治理當然不僅僅是 Committer 的發展了,下面章節我們進行系統的介紹。
ASF 治理
目前 ASF 擁有超過140多個跨技術範圍的項目,涉及350多個具體項目,7000+的代碼貢獻者,參與人員覆蓋了全球230多個國家,為保障其健康的發展必須有一套簡單高效的組織架構和治理手段。那麼 ASF 的治理將涉及到ASF組織本身的治理和 ASF 對 Apache 網站所託管的項目的治理。
公司的治理
總的來看,ASF 的治理相當簡單:由成員 (Member) 來選舉董事會;董事會任命各種管理人員並創建 PMCs;PMCs 定期向董事會報告,大多數其他管理人員向總裁然彙報,然後總裁向董事會報告。
組織架構
ASF 公司治理首先要有一個完善的組織架構,和分工明確的角色職責。如下圖所示:
上面的組織架構整體圍繞的“董事會”進行角色構建,董事會有主席 (Chair) 和副主席(Vice Char)。公司設有總裁,副總裁,祕書,財務總監,法律顧問等職位。每種角色各肩其職。作為初識 ASF 的文章,我們簡單瞭解如下宏觀的內容即可:
- ASF 由董事會來管理,董事會由成員構成。
- 現有成員(Member)會定期提名和選舉新成員,每年提名並選舉9名董事加入董事會。
- 董事會任命業務成員,並將特定政策或業務領域的責任分配給每位成員。例如,法律事務委員會副總裁負責為 ASF 和所有 Apache 項目設置法律政策,並與公司顧問進行合作。
- 董事會任命執行官,包括總裁,祕書,財務總監等,他們負責 ASF 的特定領域運營。
- 大多數官員每月直接向總裁報告,而總裁則每月向董事會報告 ASF 的整體運營狀況。
- 基礎設施副總裁向總裁彙報,並對基礎設施團隊的運營進行宏觀監督。在團隊中,帶薪的基礎設施管理者角色有助於管理日常操作,帶薪人員確定工作優先級,並維護所有 Apache 項目中使用的服務。
那麼這些角色是如何產生的呢?ASF 還需要一套選舉任命的機制來保證整個組織的健康運行。
選舉和任命
董事會負責創建並更新項目管理委員會( PMCs )。董事會只是批准孵化器的合理構建請求(畢業成為 TLPs )或來自 PMCs 自身(添加或刪除 PMC 成員)的請求。在每種情況下,向董事會建議進行的變更都已經由相關的 PMC 完成了投票。如下圖所示:
- 董事會 (Board)
- 董事會由9名懂事組成,負責管理和監督 ASF 的各種事物。包括人員,資產(資金,知識產權,商標和支持項目所需要的基礎設施)以及為項目分配資源。
- 項目管理委員會(PMC)
- 項目管理委員會由董事會決議設立,負責具體一個項目的事務管理。每個 PMC由至少一名 ASF 官員組成,並指定一名成員為主席。每個 PMC 中的主席就是 ASF 在各個項目中的眼睛和耳朵,對 ASF 至關重要。當然 PMC 負責發展各自新的 PMC 成員和發展項目的 Committer。
- 各種 VP
- ASF 有這種 VP,他們大多數官員每月直接向總裁報告,而總裁則每月向董事會報告 ASF 的整體運營狀況。
也許這些內容對於剛剛瞭解ASF或者剛剛加入 ASF 開源建設的同學簡單瞭解一下即可,因為似乎距離還很“遙遠”。(加引號原因是,我認為是思想認為的遙遠,不是真的那麼遠)。接下來我們看看和具體項目貢獻者密切相關的內容 - ASF 項目治理。
項目的治理
每個項目都由項目的 PMC 進行獨立管理,PMC 以 Apache 的方式,遵循由所有官員為所有項目設置的一些核心原則。如下圖所示:
上圖我以 Apache Flink 項目為例勾勒了項目治理的概要圖。每個 PMC 都由 ASF 董事會進行管理,每個 PMC 都會負責制定自己項目的技術方向。
- PMC 每季度直接向董事會報告一次。董事會對 PMC 進行監督,以確保 PMC 健康發展,順利的管理社區,確保 PMC 遵守 Apache 的原則。項目的技術方向由 PMC 指定,董事會不對項目提供技術治理。
- 每個 PMC 的主席都是該項目的副總裁,因此也是 ASF 的官員。主席的主要職責是確保項目報告全面,並提交到董事會。
- PMC 對軟件版本發佈進行投票。PMC 進行適當的發佈治理,進而確保了所有的源代碼版本發佈都是 ASF 官方行為。
- PMCs 為項目提名並選舉新提交者 (Committer)。PMCs 還負責提名並投票新的 PMC 成員,然後 PMCs 向董事會彙報建議的變化。
- Apache 孵化器 (Incubator) 是一種特殊的(I)PMC:它的工作是指導新建立的 Podling 社區,以幫助他們學習 Apache Way。在每個 Podling 對他們的軟件發佈進行投票後,IPMC 成員也對該 Podling 的發佈過程進行監督和投票,以確保 Podling 逐漸成長為一個合格的 Apache 項目。
- 根據政策,只有個人可以充當會員,提交者 (Committer) 或 PMC 成員(Member) 或管理人員。這是 ASF 和 Apache 項目保持其獨立性的一種方式。
同時每個項目都有不同的參與角色,比如:用戶(Users),貢獻者(Contributors),提交者(Committers),新的 PMC Members 等等。不同角色的職責如下:
- 用戶 (Users) - 就是使用項目的大眾,他們以錯誤報告和功能建議的形式向開發人員提供反饋進而為項目做貢獻。
- 貢獻者 (Contributors) - 就是開發人員,以寫代碼或寫文檔的形式為項目做貢獻。開發人員可以多種方式共享社區,比如參加者郵件列表討論、提交代碼補丁、提交文檔等等。
- 提交者 (Committers) - 提交者是一批特殊的貢獻者,他們是擁有代碼倉庫寫操作權限的開發者。
- PMC 成員 (Member) - 項目管理委員會(PMC)成員,是由在項目的開發中表現突出的提交者(Committers)選舉出來的,他們擁有寫入代碼倉庫的權限、擁有社區相關事務的投票權、以及有提名新的 PMC 成員和 Committer 的權利和職責。
ASF 董事會現狀
今年 ASF 年度成員會議, 在 3.31~4.2 期間舉行, ASF 董事會選情相當激烈,有 16為 ASF Member 參與競選。競選結果是去年的九席董事換了七位,二位董事 Craig Russell 和 Shane Curcuru 獲得了連任。目前同時會成員如下:
- Shane Curcuru (連任董事)
- Bertrand Delacretaz(原董事)
- Roy Fielding(原董事)
- Niclas Hedhman(新任董事)
- Justin Mclean(新任董事)
- Craig Russell (連任董事)
- Sam Ruby(原董事)
- Patricia Shanahan (新任董事)
- Sander Striker (原董事)
2020 新晉 ASF Member
上面的競選和任命章節已經介紹過,ASF 一年一度的成員會議中,不僅僅會選舉9名董事成員,也會提名和投票新的 ASF Member 。
恭喜他們(當然也祝福一下我自己的幸運)!據最新統計(2020.04.06) ASF Member 全球有765名,其中在中國的有20+人。
ASF 一張圖
對於初識的用戶來說,上面的內容也許太多了,記住一個 Logo 容易,記住一張圖似乎比上面的文字要簡單許多:)
ASF 金字塔描述了不同角色的群體特徵,越上面人群越小,但對 ASF 肩負的責任越大,越下面人群越大,但對 ASF 的責任越小,參與越容易!記住 “ ASF 是什麼?” 從 羽毛 Logo 開始,參與 ASF 貢獻從用戶開始。
ASF 一句話
圖可以描述表象,文字可以表述內涵,開篇的羽毛代表了 ASF,但怎麼描述這個漂亮的羽毛呢?“ASF 是一個成立於1999年,有完整的組織(董事會)架構管理,以軟件(140個領域)技術全球(覆蓋230個國家)共享為使命的公益組織”。
小結
本篇是《走進ASF系列》的第一篇,我努力嘗試在我自己身上體驗“費曼技巧”,從概要介紹了什麼 ASF,進而推進介紹 ASF 組織架構,ASF 公司治理和項目治理,意在讓想要或 剛剛參與 ASF 貢獻的同學對 ASF 有一個初步認知。最後介紹了目前 ASF董事會成員和2020年新晉的中國 ASF Member。同時,為了方便大家記憶,以一張圖,一句話的方式收尾本篇內容。
同時《走進 ASF 系列》與我之前的《 Apache Flink 漫談系列》不同,討論 ASF 更多的是非技術的分享,容易變成無重點,無內容,無收穫的乏味分享,這是我最不願意看見的現象。所以懇請大家在本系列的初期多給我一些或好或壞的評論建議,以便我們共同成長!謝謝大家~
參考資料: