從開源小白到 Apache Member,個人成長之路

咱們走過的每一步路,都會留下印記,越堅實,越清晰。git

近日,Apache 軟件基金會(ASF)官方 Blog 宣佈全球新增 40 位 Apache Member,張乎興有幸成爲其中一位。github

目前,全球共有771位 ASF Member,中國僅13位。本文將分享做者從0基礎的開源小白,一路走來的感觸,但願把期間的經歷分享出來,讓更多的人看到,世界開源舞臺的中國力量。只要有持續的付出,總會有所收穫。網絡

初次參與開源

2014年,我加入阿里巴巴中間件團隊,開始接手集團應用容器的維護工做。當時集團的應用容器絕大部分都是基於 JBoss,老舊且無人維護,另外有一小部分跑在 Jetty 和 Tomcat 之上,當時中間件團隊維護了 Tomcat 的一個私有分支,最大的目標就是要統一全部集團的應用容器爲 Tomcat。而在那以前,我從未接觸過 Tomcat 的開發和運維,對我來講,挑戰很大。然而,更大的挑戰來自於團隊大 leader 提出的,在當時看來幾乎是沒法實現的目標:成爲 Apache Tomcat 的 committer。架構

要知道,做爲 Apache 的核心項目之一,Tomcat 自1999年發佈初版以來,一直是開源屆和 Apache 基金會的明星項目,至今仍然在應用容器領域市場佔有率保持第一,歷經20年發展,依舊熱度不減。Tomcat 歷經這麼多年的發展,卻從未出現過一位來自中國的 committer。而咱們小團隊只有4我的,根本沒有任何開源的經驗,也徹底不知道從何作起。團隊 leader 問咱們,誰願意挑戰一下的時候,我也沒有多想,就承擔了下來。併發

就這樣,我開始了本身的 Apache 開源之旅。框架

說實話,一開始,本身並無太多的思路,因而開始反覆瀏覽 Tomcat 官網,但願可以查詢到一些有用的信息。全部的 Apache 項目幾乎都會有新用戶指南,介紹如何參與到此開源項目當中,Tomcat也不例外。很快,我從修復 bug 開始,第一個 patch 是修復一個Websocket 測試用例失敗的問題,修復該問題涉及到了對代碼的一些重構。運維

還記得當時提交以前我很是謹慎,和 leader 一塊兒反覆討論了不少次,終於造成了一個比較滿意的方案。提交給 Tomcat 社區以後,很快,社區便有了響應,併合並了我提交的補丁。第一次提交便得到了承認,內心很開心,緊張的情緒也緩解了。看到 Tomcat 的 release note 裏面出現了本身的名字,真的很是開心。socket

Apache Roadshow China

2015年10月,我有幸在北京參加了 Apache Roadshow China 的活動,算是第一次和Apache 基金會有了親密接觸。在大會上,親眼目擊了時任 Apache 基金會主席的 Brett Porter、Apache 基金會副總裁 Niclas Hedhman 等大牛們的演講,以及在 Panel Disussion 裏面,和他們,以及幾位來自中國的 Apache 成員,一塊兒探討社區領導的開發流程等。分佈式

當時以爲本身離他們彷佛很是遙遠。微服務

2015年的時候,國內參與 Apache 社區的幾乎全是在外企工做的華人。而現在來看,國內公司參與開源的程度已經有了顯著提高。此次參與中國路演,有幸和 Niclas heldman 作了些交流,我問了他一個問題:

「我正在參與 Tomcat 社區,如何才能成爲 committer?」

他給了我一些至今對我影響依然很是深遠的建議:參與社區討論,從簡單的新手任務入手,修復 bug,以及參與 release vote。這麼多年過去了,這些建議依舊適用。

Tomcat Committer

嚐到了貢獻的甜頭後,團隊的目標也有所調整。內部版本的 Tomcat 和開源版本的結構要保持徹底一致:

使得合併開源 Apache Tomcat 變得很是容易;

內部作的加強也更加方便合併到社區。

後續向社區的貢獻,主要來源於三個方面:

第一:阿里內使用 Tomcat,在大規模、高併發場景下遇到的問題修復。

比較典型的是當時無線網關應用採用的是 Tomcat NIO+AsyncServlet 的架構,做爲一個入口應用,曾經由於Tomcat 在高併發下的異常出現過一個比較大的故障,後來排查這個問題花了很是多的精力,最終完全修復了這個問題。詳細的排查過程記錄在《逆流而上-阿里巴巴技術成長之路》一書中的《山洪暴發,高流量觸發 Tomcat bug 引發集羣崩潰》。修復方案也一塊兒提交給了 Tomcat 社區,雖然改動量不大,但凝聚了團隊至關多的心血。

第二,Tomcat 大面積在阿里鋪開時遇到的問題修復。

例如,發現了一些不符合 Servlet 規範的行爲等,包括應對雙十一時所作的一些優化、並行類加載等等。

第三,主動參與開源社區,針對一些一直存在的問題的修復。

通過一年多的持續投入貢獻,2016年8月23日,在一個日常工做日的上午,我打開郵箱,看到一封來自 Tomcat 社區核心開發、Java EE 規範專家組成員、時任 Apache 基金會董事會成員 Mark Thomas 的來信,邀請我成爲 Tomcat Committer。打開郵件的那一刻,感受本身的心都在顫抖,激動之情有點不能自已。當時的確出乎了本身的意料,沒有想到夢想的那一天真的會到來。

Tomcat PMC Member

成爲 Committer 以後,有了代碼的直接提交權限,其實意味着更大的責任。

那一年,Tomcat 已經成爲了阿里內部應用容器的標準,集羣的規模在全球範圍內都是領先的。而我也並無中止參與社區的貢獻,直到2017年,ApacheCon 北美大會即將在5月美國邁阿密召開,收到了 Call for participation 郵件的時候,我忽然萌生了一個想法:

爲何不把阿里巴巴在大規模高併發下遇到的挑戰,在 ApacheCon 大會上分享呢?

每一年的 ApacheCon,基本都會爲 Tomcat 開設專場「TomcatCon」。以前歷來沒有在國外大會上分享的經驗,也不知道可否被大會接受,我懷着忐忑的心情提交了提案,也沒有抱太大的信心。直到那年3月,我收到一封郵件,通知個人提案被 ApacheCon 大會接受了,那種被承認的感受真的很棒。

在5月份的大會上,我有幸見到了常常在社區裏面交流卻素未見面的一羣開發者,好比來自英國的 Mark Thomas、來自美國的 Christopher Schultz、來自法國的 Jean-Frederic Clere等等,他們都是 Tomcat 社區的頂尖專家,有的甚至10餘年來一直參與 Tomcat 社區的貢獻。

和以前郵件討論起問題來很是的直率、甚至是嚴厲的印象不一樣,他們都很是的親切,演講當天也在場下默默地支持我,演講很成功,讓世界看到了一箇中國企業在貢獻 Tomcat 社區所做出的努力,我以爲挺驕傲的。

演講次日的晚宴上,氣氛很輕鬆,臺上正在進行着閃電演講,Mark 拿着啤酒走過來和我說,想邀請我成爲 Tomcat PMC Member。天啊,我徹底沒有想到可以和麪前這羣大神們站在一樣的位置上,因而很開心地接受了。

結緣 Dubbo

2017年,阿里重啓了 Dubbo 的開源維護工做,而團隊正好承擔了這一重要使命。

Dubbo 在停更後,社區的不少用戶只能選擇 fork 分支,自行維護。重啓維護以後,須要思考的問題是,社區會不會有相似的擔憂。所以,團隊決定把 Dubbo 捐獻給 Apache 軟件基金會,但願可以經過「社區大於代碼「、「公開透明「、「共識決策「等Apache 之道,來打消開發者們的顧慮。

已經有過幾年 Apache 社區參與經驗的我,天然地承擔起幫助 Dubbo 進入 Apache 基金會孵化的工做,從聯繫導師到修改提案,終於,Dubbo 經過了 Apache 孵化器的社區投票,正式開始孵化。那天是2017年的大年三十,我坐在家裏的電腦前,發送出正式投票結果郵件的那一刻,我在想,這注定是個值得銘記的日子。

在 Apache 孵化器中孵化,就像一個浪子在江湖上橫衝直撞了不少年後,忽然想靜下心來開始求學,天然要循序不少規則,也會有不少文化和意識心態上的衝突。我開始思考如何可以幫助 Dubbo 更好地踐行 Apache 之道,這裏面有不少東西須要作。

Dubbo 和其餘項目不一樣的一點是,Dubbo 在加入 Apache 以前,已是一個巨無霸級別的項目了,上萬的star、龐大的社區、國內大規模被採用,社區一天的活動量所發送的郵件就會讓導師以爲無所適從,簡直沒有辦法看了。

如何能讓這個巨無霸遵循 Apache 之道來發展,成爲了一個很大的挑戰。

有一個很鮮活的例子,當時社區在關注:「問題的討論是應該在郵件列表上進行仍是在Github issue上進行?」

Dubbo 的用戶早已經習慣了在 Github issue 上討論,可是導師之一的 Mark 卻指出,郵件列表仍然是這個星球上最爲普適的通信工具。由於世界上仍然有一些國家,在某些環境下,上網的網速可能只有幾十k/s,甚至只能撥號上網。

若是在 Github 上討論,對於這些網絡環境不佳,卻想參與社區的人就是災難性的。或許咱們能夠放棄那部分用戶,但這並非 Apache 的價值觀。相似的例子還有不少,我有點遺憾沒有及時把他們都記錄下來,會嘗試在另一篇文章中分享。

第一次的 release,是孵化過程當中很重要的一個里程碑。在我看來,release 的意義遠大於代碼層面的工做,還包括了準確的 License 和版權聲明、符合規範的代碼及依賴、準確一致的簽名等。Dubbo 花了不少的時間去準備,也把整個過程徹底的文檔化,孵化過程當中,由7位不一樣的 Release Manger 輪流負責,確保不一樣的人均可以完成發佈。

孵化的過程當中,知識產權清理也是一個重要的環節,Apache 對於商標和 License,有着近乎嚴苛的要求,每次 release 的時候都會仔細檢查,最典型的例子就是 github.com/dubbo 這個 group。在咱們看來很正常,可是在 Apache 基金會的視角來看,因爲 Dubbo 這個商標已經被轉移給 Apache,任何第三方的使用都會構成侵權,所以也是不被容許的。最終的解決方案是把這個 group 下的全部項目清空,一部分遷移到 Apache,另外一部分遷移回其餘 group。

其餘還有不少問題,例如,發展社區 PMC member/Committer、舉辦一場符合規範的Meetup 等等,有機會在單獨的文章中分享。

成爲 Apache Member

在 Dubbo 即將畢業的前夕,忽然有一天,我按慣例打開郵箱,忽然發現躺了一封 Invitation to join The Apache Software Foundation Membership。我心中一陣驚喜,點開以後,發現是邀請我成爲 Apache Member 的郵件,這讓我很是的出乎意料。

說實話,也曾夢想過將來有一天能成爲Apache Member,但沒有想到這一天來得如此之快。成爲 Apache Member 意味着是 Apache 的771成員之一,從法律上成爲了 Apache 基金會的股東。可是這並不意味着,貢獻的終止。就像打怪升級,當你經過了當前這一關,你會遇到更大的 boss。

做爲 Apache Member,更多的是從一個個獨立的項目中抽離出來,關注基金會層面橫向的事務。但我以爲成爲 Member 最大的意義是在於本身在開源這條路上並不孤獨,尤爲是還有這麼多來自中國的 Member,更加堅決了中國的開源項目能夠在世界的舞臺上表現的更好。

成爲 Member 以後,咱們會經過 Apache 基金會,幫助更多中國的開源軟件及開發者,和全世界創建更普遍深刻的鏈接。一方面是走進來,幫助擴大 Apache 基金會在中國的影響力,讓更多的開發者參與到世界頂級的優秀開源項目中來;另外一方面是走出去,幫助中國開源項目進入到 Apache 基金會孵化,提高中國開源軟件的國際影響力。其實國內有不少很是優秀的開源項目,只是缺乏一個向世界展現的窗口,但願 Apache 基金會可以做爲這樣的一座橋樑。

本文做者:

張乎興,社區暱稱 ralf0131,花名望陶,Apache Member,Apache Dubbo PPMC Member,Apache Tomcat PMCMember,阿里巴巴技術專家,關注大規模分佈式系統、RPC框架和微服務領域。



本文做者:中間件小哥

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索