成為 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 越來越多,當然也是一件好事了!”