每談及開源、開源社群,就不得不提及 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 更多的是非技術的分享,容易變成無重點,無内容,無收獲的乏味分享,這是我最不願意看見的現象。是以懇請大家在本系列的初期多給我一些或好或壞的評論建議,以便我們共同成長!謝謝大家~
參考資料:
[1]
http://www.apache.org/foundation/governance/orgchart