這個問題我來回答再合適不過了。
說句實話,自從進了開源的坑,特別後悔。
後悔沒早點進來。
畢竟,大學裏打遊戲浪費了那麽多的時間,要是那時候就開始刷社群,我估計現在的薪資還能翻倍。
參與開源社群是一個完全沒有門檻的事情——不看學歷不看出身不看工作經驗,只要一根網線就可以為這個星球上最頂級的程式碼倉庫添磚加瓦,是不是想想還有點小激動呢?
那麽,要怎麽做呢?我們把這個問題分解成這樣幾步,包教包會,隨治隨走。
第一步:註冊一個GitHub帳號
要是這一步不會的話……那還是別往下看了。
第二步:挑一個入的了你的法眼的開源計畫。
這一步很重要。你需要找一個活躍、知名、有價值、純Java實作的開源計畫。這是一個非常重要、不涉及任何技術細節的過程,你需要一些時間仔細瀏覽各大計畫,了解它們的基本資訊。不怕用力過猛的話這裏有一個GitHub星星排行榜,盡管大膽正面剛。如果膽子比較小,就挑幾百幾千顆星的計畫。它決定了你接下來幾個月的工作重點,以及未來的發展方向。如果挑選得當,努力幾年,成為領域專家的話,直接被該領域的公司高薪挖走也說不定。我幾年前是在Groovy社群刷經驗的,供參考。
活躍的意思是說,當你翻它的issue列表的時候,能夠看到基本上每個issue都有人回復。每個PR都能得到快速響應。反例:阿裏巴巴的諸多計畫,開源了就不管了,issue沒人回,PR沒人理,跟騙炮的渣男有什麽區別:
第三步:懟它。
這一步簡單的就好像在說「把大象關冰箱一樣「,實際情況復雜千萬倍,足以把你勸退。
在一開始,你可能完全摸不到開源計畫的門路,沒關系,先從修typo開始。無數人的開源生涯都是從修typo開始的,我也不例外。這個過程只是為了讓你熟悉開源計畫的協作流程。你看這是我給現在的東家修的第一個bug,啥技術含量也沒有。
如果你不了解協作流程,也就是說,你不知道怎麽得到上圖這個界面?看這個免費課程,我錄了手把手教你送出PR的過程,最關鍵的是,有真實倉庫讓你練手!
那你馬上就會問了,怎麽找到typo呢?這裏有一個工具讓你方便地找typo蹭PR?啥,你說你不會用?學啊,誰一生下來就什麽都會的?
搞笑的是這哥們拿著這個工具到處蹭PR,後來被人罵了:
強調一下,這個過程 只是 為了讓你熟悉協作流程(比如送出PR,討論,Sync a fork,Squash commits之類),千萬別本末倒置愛上修typo的過程。
了解了協作流程之後,就可以開始主動找bug修了。啥,你說你不會修bug?那要你何用?開源社群最重要的能力就是修bug啊。你一定要從開源社群協作中,得到「無論什麽bug,來了我就會修」的能力。要達到這個目的,一定要先學會使用偵錯程式:
挑bug修的過程也是很講究的。除非你真的是專家,否則請挨個瀏覽計畫的issue tracker,專門找軟柿子bug修,不要碰難題。原則是:
當然,如果你真是神級人物,來者不拒,什麽bug都能修,那請隨意挑選bug。比如說下面這哥們之前跟我一個組,後來調去隔壁組做企業級的Maven支持,就是這個:
這哥們做Maven支持的時候不停地發現並解決Maven的bug:
所以你看,Gradle對Maven才是真愛啊。
修bug的過程沒辦法描述,因為bug千變萬化。有興趣的話可以觀看我直播修的兩個bug,一個是給FastJson計畫,一個是給Maven計畫:
修過一些bug之後,你的編碼水平應該有了質的提升,現在可以嘗試挑戰更高難度的開源協作方式了:造輪子。
造輪子有兩種:幫別人造輪子和自己造輪子。
幫別人造輪子的意思是說,你翻著名開源計畫的issue tracker,從裏面挑選feature request並實作之。換句話說,就是有人想要一個功能但是該計畫還沒提供,你就幫他們實作掉。這個過程可能會被對方直接拒絕,所以請小心行事。當然,如果你的實作最終被接受,這將是更有價值、更能給你簡歷增光添彩的經歷。
另一種方式就是自己造輪子,針對某個細分領域實作之前還沒人實作過的功能。註意,在開始之前千萬註意看看有沒有別人已經造好了。自己造輪子是最鍛煉設計實作能力的事情,沒有之一。
如果你擔心找不到合適的bug或者feature request,think twice。你真的有仔細翻閱過他們的issue tracker,挨個閱讀其中的討論麽?沒把前十頁仔細的看過一遍,不要跟我說找不到。
好了,還有疑問,請閱讀我的這篇文章: