開源引路人:我的Apache Mentor之路

weixin_34127717發表於2019-01-25

從 Apache 基金會 maintainer 到 mentor,13 年開源經歷的心路歷程。

姜寧,華為開源能力中心技術專家,目前在華為負責 ServiceComb 開源專案。前紅帽軟體首席軟體工程師,在企業級開源中介軟體開發方面有十餘年經驗,有豐富的 Java 開發和使用經驗,函數語言程式設計愛好者。從 2006 年開始一直從事 Apache 開源中介軟體專案的開發工作,先後參與 Apache CXF,Apache Camel,以及 Apache ServiceMix 的開發。對微服務架構,WebServices,Enterprise Integration Pattern,SOA, OSGi 均有比較深入的研究。

2000 年,本科畢業的姜寧來到當時還很荒蕪的西二旗,去華為大廈面試,後來因為念研究生就沒有選擇去華為。2005 年,在西二旗的海納軟體(IONA)工作的姜寧開始接觸開源專案。那時西二旗剛剛開始發展,政府也支援軟體園的建設,這裡聚集了很多科技公司,其中不少是衝著前三年租辦公區免租金來的。IONA 沒有熬過頭三年,但是開源背景把姜寧帶到了紅帽,在頂級開源公司工作了幾年。2017 年,姜寧又回到西二旗,進入了華為。

感覺是繞了一個圈。西二旗現在聚集了很多核心軟體公司,也有了矽谷的氛圍,這可能就是軟體網際網路行業發展的一個趨勢吧,相信你們以後應該也會有很多跟西二旗接觸的機會。

\"1\"

姜寧參與開源的經歷跟大家不太一樣,是直接走的公司流程。2006 年時,IONA 有個專案要開源,姜寧就輕鬆成為了一個初始 committer,開始接觸 Apache 軟體基金會(ASF)。08 年時在 Apache Camel 專案中,姜寧被選舉成為 committer, 開源之路開始走順了。後來又參與了很多 Apache 專案,開始 mentor 別人,直到有一天收到 ASF 的信,邀請姜寧成為 Apache member。

我填完(申請表)之後很高興,這相當於是 Apache 對我的一個認同。

採訪過程中當姜寧說到這裡的時候,我們仍然能從他眼裡的神采感受到他的喜悅。

\"2\"

姜寧說,其實開源是一個圈子。社群、基金會有自己做事的方法和流程。參與開源社群,不斷地認識不同專案的負責人,瞭解開源社群的運作,才算融入了開源的圈子。而沒有進入開源圈子的人,很難靠自己把一個專案培養起來。

早些年的時候 ASF 裡面國內的 member 比較少,參與孵化的專案也不多。作為中國人,姜寧很願意幫助來自中國的專案在 ASF 裡成長孵化。

所以後來華為就找到我,因為華為有一個微服務的專案想進入 Apache。剛開始的時候這個專案還沒有起名字,後來我們給它起了一個名字叫 ServiceComb。service 就是服務嘛,comb 有蜂巢的意思,意味著微服務就是由很多很小的東西拼在一起的。

\"\"

從一個初始 committer 到專案 maintainer 再到 mentor,在開源社群多年的經歷和多種角色的變換,讓姜寧感覺到開源社群很像武俠小說裡的江湖氛圍:mentor 協助專案孵化,把專案歸類,跟專案和基金會的董事層溝通,這個過程就像武林中立一個山頭帶一群人成長;GitHub 上大家通過 pull request 交流則像大俠之間相互切磋武藝。而在社群裡大家都是主動、自願地展示自己的能力,正如漫威電影裡的臺詞一樣,“with great power comes great responsibility\u0026quot;,這一點也很像武林大俠的俠義精神。所以在開源社群中,“人際關係很重要,人與人之間的互動很有江湖氛圍。”

從 committer 到 member,再到 mentor,其實也是一個不斷成長的過程。

一個開源專案的 maintainer 需要稽核專案貢獻者在 GitHub 上提的 pull request,和貢獻者進行溝通並培養社群裡的開發人員。而作為 mentor,就像是“師傅”一樣的引領者角色,要教會不會玩開源的人怎麼進入開源圈子。

\"\"

AFS 提倡 community over code (社群大於程式碼)。從這個層面來說,能把圈子維護好,比寫一手好的程式碼更重要。開源社群中除了需要會寫程式碼的開發者,還需要社群佈道人員,對外宣講人員,寫文件的人員,以及前端美工設計人員。

所有對推動專案進步有價值的人都可以成為 committer。

從 21 年前“開源軟體”這個詞第一次出現,關於開源與商業公司之間競爭的討論一直沒有停過。

在姜寧看來,開源這個事情,其實就是一個非零和(共贏)遊戲,這也是 Apache 一直在強調的一點。

一個公司,它把自己核心的東西拿出來了之後,真的會失去這些東西嗎?所有的公司在給予的同時,其實會收穫更多。

姜寧的這個理解來源於《降臨》這部電影。電影講述了 12 個神祕飛船降臨在地球上所發生的故事。電影中,12 國分別破譯了外星人的語言片段,但是這些片段被列強據為己有,彼此不溝通。而要獲得外星人的真實意圖,必須將 12 個片段拼接到一起才能最終破譯。這裡面的隱喻用在開源與商業公司之間的競爭非常恰當:開源社群中不是“你之得即我之失”這樣一種簡單的關係,而是通過成果共享和努力解決共同的困難來實現多贏的結果。比如谷歌最開始做 Kubernetes 時,把自己的核心技術開放出來,吸引了很多公司,甚至是競爭關係的公司參加進來,後來 Kubernetes 慢慢變成一個撬動世界的槓桿,促進了整個雲端計算行業的發展。

對於開源專案來說,大家針對共同的問題會想盡一切辦法,動用一切資源來解決問題,最後可能真的能成就一項改變世界的技術。

如果要用一個詞來表達自己對開源的印象和感悟的話,姜寧會選擇“分享”這個詞。

開源其實很大程度上其實是建立在分享以及協作的基礎之上的。

\"\"

姜寧有一次無意間翻到十幾年前參與開源專案時的一件 T 恤,還是忍不住感概自己這麼多年從開源社群中的收穫。姜寧說,在開源社群中大家最容易收穫的就是無償的幫助。因為在這裡資訊都是開源開放的,每一個人都可以學習和成長,獲得他人的幫助,也能儘自己的能力幫助別人。

ASF 有個很重要的理念:For the public good,也就是從整個人類的角度,或者是為了公眾的利益來做開源這件事情。從這個角度來說,個人或者公司的利益就已經很渺小了,所以大家可以跨越公司利益一起去做協同合作。所以 Apache 是一個相對來說比較草根一點的組織,它不會屈服於商業,也就很難被上市公司控制。這也是它能夠不斷髮展壯大的最主要的原因:大家都能相信他的公信力。

另外,for the public good 其實更多程度上是 for the users’ good,就是給更多的使用者帶來福祉的一個事業。這樣的話其實也會帶來一個好處:它可以讓不同的商業公司能夠站在一起,為了一個更大的一個目標去去交流、溝通和協作。所以姜寧覺得很多時候一些種族、戰爭方面的事情,如果放大到全人類的角度上來說,其實都是能迎刃而解的。

相關文章