當前位置: 華文星空 > 知識

在校生如何在開源社群中成長?

2019-07-25知識

這個問題我來回答再合適不過了。

說句實話,自從進了開源的坑,特別後悔。

後悔沒早點進來。

畢竟,大學裏打遊戲浪費了那麽多的時間,要是那時候就開始刷社群,我估計現在的薪資還能翻倍。

參與開源社群是一個完全沒有門檻的事情——不看學歷不看出身不看工作經驗,只要一根網線就可以為這個星球上最頂級的程式碼倉庫添磚加瓦,是不是想想還有點小激動呢?

那麽,要怎麽做呢?我們把這個問題分解成這樣幾步,包教包會,隨治隨走。

第一步:註冊一個GitHub帳號

要是這一步不會的話……那還是別往下看了。

第二步:挑一個入的了你的法眼的開源計畫。

這一步很重要。你需要找一個活躍、知名、有價值、純Java實作的開源計畫。這是一個非常重要、不涉及任何技術細節的過程,你需要一些時間仔細瀏覽各大計畫,了解它們的基本資訊。不怕用力過猛的話這裏有一個GitHub星星排行榜,盡管大膽正面剛。如果膽子比較小,就挑幾百幾千顆星的計畫。它決定了你接下來幾個月的工作重點,以及未來的發展方向。如果挑選得當,努力幾年,成為領域專家的話,直接被該領域的公司高薪挖走也說不定。我幾年前是在Groovy社群刷經驗的,供參考。

活躍的意思是說,當你翻它的issue列表的時候,能夠看到基本上每個issue都有人回復。每個PR都能得到快速響應。反例:阿裏巴巴的諸多計畫,開源了就不管了,issue沒人回,PR沒人理,跟騙炮的渣男有什麽區別:

第三步:懟它。

這一步簡單的就好像在說「把大象關冰箱一樣「,實際情況復雜千萬倍,足以把你勸退。

在一開始,你可能完全摸不到開源計畫的門路,沒關系,先從修typo開始。無數人的開源生涯都是從修typo開始的,我也不例外。這個過程只是為了讓你熟悉開源計畫的協作流程。你看這是我給現在的東家修的第一個bug,啥技術含量也沒有。

我給Gradle送出的第一個PR,有技術含量麽?沒有,你也可以。

如果你不了解協作流程,也就是說,你不知道怎麽得到上圖這個界面?看這個免費課程,我錄了手把手教你送出PR的過程,最關鍵的是,有真實倉庫讓你練手!

那你馬上就會問了,怎麽找到typo呢?這裏有一個工具讓你方便地找typo蹭PR?啥,你說你不會用?學啊,誰一生下來就什麽都會的?

搞笑的是這哥們拿著這個工具到處蹭PR,後來被人罵了:

「你特麽能不能不要老騷擾那些沒主動讓你檢查拼寫的人?」

強調一下,這個過程 只是 為了讓你熟悉協作流程(比如送出PR,討論,Sync a fork,Squash commits之類),千萬別本末倒置愛上修typo的過程。

了解了協作流程之後,就可以開始主動找bug修了。啥,你說你不會修bug?那要你何用?開源社群最重要的能力就是修bug啊。你一定要從開源社群協作中,得到「無論什麽bug,來了我就會修」的能力。要達到這個目的,一定要先學會使用偵錯程式:

挑bug修的過程也是很講究的。除非你真的是專家,否則請挨個瀏覽計畫的issue tracker,專門找軟柿子bug修,不要碰難題。原則是:

  • 一定要有可以重現的例子。不能重現的bug別說你,計畫作者都不一定能解決。
  • bug要「看上去比較重要」,也就是說,你修完之後不需要費勁向計畫作者解釋其必要性。
  • 當然,如果你真是神級人物,來者不拒,什麽bug都能修,那請隨意挑選bug。比如說下面這哥們之前跟我一個組,後來調去隔壁組做企業級的Maven支持,就是這個:

    順便打個廣告,我們在做企業級的Maven構建加速業務

    這哥們做Maven支持的時候不停地發現並解決Maven的bug:

    所以你看,Gradle對Maven才是真愛啊。

    修bug的過程沒辦法描述,因為bug千變萬化。有興趣的話可以觀看我直播修的兩個bug,一個是給FastJson計畫,一個是給Maven計畫:

    修過一些bug之後,你的編碼水平應該有了質的提升,現在可以嘗試挑戰更高難度的開源協作方式了:造輪子。

    造輪子有兩種:幫別人造輪子和自己造輪子。

    幫別人造輪子的意思是說,你翻著名開源計畫的issue tracker,從裏面挑選feature request並實作之。換句話說,就是有人想要一個功能但是該計畫還沒提供,你就幫他們實作掉。這個過程可能會被對方直接拒絕,所以請小心行事。當然,如果你的實作最終被接受,這將是更有價值、更能給你簡歷增光添彩的經歷。

    另一種方式就是自己造輪子,針對某個細分領域實作之前還沒人實作過的功能。註意,在開始之前千萬註意看看有沒有別人已經造好了。自己造輪子是最鍛煉設計實作能力的事情,沒有之一。

    如果你擔心找不到合適的bug或者feature request,think twice。你真的有仔細翻閱過他們的issue tracker,挨個閱讀其中的討論麽?沒把前十頁仔細的看過一遍,不要跟我說找不到。

    好了,還有疑問,請閱讀我的這篇文章: