成爲Apache頂級項目核心貢獻者是一種什麼樣的體驗?

幾年前,國內對開源的認知是:我們做不了開源,我們創新力不夠。那時候國產開源項目要進 Apache?想也別想!而現在 Apache 裏面的國內開源項目一隻手都數不過來。這裏是二叉樹第四季,我們跟你聊聊開源這件事兒,本期嘉賓是一位 Apache 基金會頂級項目裏的核心貢獻者,他來聊聊成爲核心貢獻者是一種什麼樣的體驗。

“什麼時候去做件大事吧!”

比如:成爲 Apache 基金會頂級項目裏的一位核心貢獻者。

這是一種什麼樣的體驗?

下面且聽 Apache Flink 項目 Committer、Jark’s Blog 的博主——伍翀(花名:雲邪)的分享。

剛剛進入阿里的前半年,雲邪是失落而迷茫的。

大學時代的雲邪在各方面都非常優秀:功課做得好,導師很器重,涉獵過前端、PHP、Ruby、Spark 等技術,做過幾個網站賺外快,搭過論壇,還做過一個頗爲受歡迎的開源博客主題 Jacman,在 Github 收穫了 900 多個 star。

簡而言之,是一位學霸。

“後來到研究生畢業的時候,我被阿里巴巴的技術氛圍所深深吸引,期望着加入一個技術殿堂般的團隊。”

2015 年,雲邪進入了阿里的實時計算團隊,準備要一展身手、做一番重要的貢獻。

但是在大公司裏,個人更多的是充當着螺絲釘。阿里是個臥虎藏龍的地方,身邊有很多特別優秀的小夥伴。半年的時間很快過去,雲邪覺得自己沒有達到心中預期的成績,失落感也就隨之而來。

同樣在 2015 年,Apache Flink 正式升級成爲 Apache 基金會頂級項目。早在研究生階段就研究過 Spark 的雲邪,對 Flink 項目並不陌生。這是大數據領域一個新興的明星項目,跟實時計算有密切的關係。技術嗅覺告訴他,這可能會是未來大數據技術的發展方向。

有一天,雲邪找到他的主管,說:

“我想去研究 Flink。我覺得我們團隊需要有一個人去研究這個方向。”

主管很支持,並且設定了一個目標:

“一年成爲 committer。”

英文直接翻譯過來成爲中文,committer 的意思是“做過承諾的人”。在一個開源項目裏,往往有一個核心的開發者或者開發團隊來把握整個項目的發展策略,其他人來給這個項目貢獻代碼之後,由這個核心團隊來審查,決定是否合併。項目越龐大、越重要,貢獻的人越多,這個核心的團隊就越重要。

在開源項目的團隊裏,很多決策是基於“信任”機制。一般的開發者來貢獻代碼,就是一個貢獻者(contributor)。每一個貢獻上來的代碼經過代碼審查,經過探討與修改,符合項目發展方向的就被合併入主線。當一位貢獻者做過很多貢獻,核心團隊的大部分人認爲這是一位很靠譜的貢獻者,懂得爲自己的投入做出承諾,則該貢獻者會被認可成爲一位 committer。

一般而言,這是一個相對漫長的過程。項目越是重大,被認可成爲 committer 的難度就越大,因爲需要獲得更多人、更深的信任。

“你從一個對 Flink 一無所知的小白,要成爲一個 commiter,中間還是有很多困難要跨過去的?”

“嗯,當時也沒有想很多,其實當時這個目標還是設的挺膽大的。”

“後來我就開始研究 Flink 的源碼,大概花了兩三個月的時間,把 Flink 的核心源碼都看了一遍,一邊看代碼一遍寫博客。” 這些博客文章後來也都成了國內學習 Flink 的優質材料。

那個時候,Flink 社區裏國內的參與者還比較少。

“你還記得你提交的第一個 patch 嗎?”

“我當時提交的第一個 patch 是 fix 了一個非常簡單的 bug,就是打印的日誌裏面的一個單詞寫錯了。然後當時提交上去,很快,當天,社區的人就幫我 review 了,之後就進入了 master 的分支。雖然它是一個非常小的改動,但是你就覺得你終於進到社區裏面去了,你的名字、你的郵箱就顯示在了他那個倉庫的 contributor 列表裏。”

“這件事情就能讓你高興好久。”

隨着提交的次數越來越多,社區裏的人開始注意到雲邪,後來的一次線下技術交流中,Flink 的創始人、dataArtisans CTO —— Stephan 做了技術分享和交流,雲邪也有幸參與了,這是雲邪第一次與這個層面的技術大牛零距離接觸。

“Stephan 先生是我的偶像:)”

“那次就突然發現,原來在郵件列表接觸的技術大牛,在線下是這麼的平易近人!這讓我對社區產生了更大的興趣。”

“後來又有一次技術交流的時候,他還能夠認得我,這件事情我還是高興挺久的。”

“後來這一年你大概提交了多少次?”

“提交了大概有五六十次,總共有上萬多行代碼,最大的一個有五六千行。最大的一個來來回回討論了很久,在郵件列表裏面來來回回有上百次的討論,最後進去了,也是比較開心。”

“2017 年春節的時候,我收到了社區 committer 的邀請信。”

“你覺得成爲 committer 對你來說最大的收穫是什麼?”

“我覺得成爲 committer 最大的收穫是這個過程中你學到的東西。社區裏面有特別多的大牛,社區的代碼規範要求也比較高,在這個過程中,你提交的每一個代碼都有那麼多牛人來指導你,來糾正你的設計,那對你其實是非常寶貴的財富。你這一段時間堅持下來,成爲了一個 committer,你再回過頭來做一些其他的事情,去做一些其他的設計的時候,你會更加有信心。”

“你覺得作爲一個軟件工程師最高的狀態是怎樣的?”

“就像 Linus 一樣,把開源寫代碼當作是人生的一種樂趣,而不是一個謀飯碗的東西,我覺得是非常非常幸福的。”

現在的雲邪,也已經進入一個爲社區裏面的新人傳授佈道的新角色。12 月 20 日 -21 日,雲邪將在 Flink Forward China 2018 (Apache 基金會官方授權,國內首次 Apache Flink 頂級峯會)帶來主題演講。藉着這個機會,他也希望邀請更多人來一起關注 Flink,一起參與到 Flink 項目的貢獻工作當中。

“開源更多是一種責任。社區對你的認可,是希望你能夠對社區有更多的貢獻,能夠幫助社區更多的去成長。”

“中國的 committer 越來越多,當然也是一件好事了!”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章