在開源項目中做出你的第一個貢獻
有一個普遍的誤解,那就是對開源做出貢獻是一件很難的事。你可能會想,「有時我甚至不能理解我自己的代碼;那我怎麼可能理解別人的?」
放輕鬆。直到去年,我都以為是這樣。閱讀和理解他人的代碼,然後在他們的基礎上寫上你自己的代碼,這是一件令人氣餒的任務;但如果有合適的資源,這不像你想像的那麼糟。
第一步要做的是選擇一個項目。這個決定是可能是一個菜鳥轉變成一個老練的開源貢獻者的關鍵一步。
許多對開源感興趣的業餘程序員都被建議從 Git 入手,但這並不是最好的開始方式。Git 是由許多有著多年軟體開發經驗的超級極客維護的。它是尋找可以做貢獻的開源項目的好地方,但對新手並不友好。大多數對 Git 做出貢獻的開發者都有足夠的經驗,他們不需要參考各類資源或文檔。在這篇文章里,我將提供一個對新手友好的特性的列表,並且給出一些建議,希望可以使你更輕鬆地對開源做出貢獻。
理解產品
在開始貢獻之前,你需要理解項目是怎麼工作的。為了理解這一點,你需要自己來嘗試。如果你發現這個產品很有趣並且有用,它就值得你來做貢獻。
初學者常常選擇參與貢獻那些他們沒有使用過的軟體。他們會失望,並且最終放棄貢獻。如果你沒有用過這個軟體,你不會理解它是怎麼工作的。如果你不理解它是怎麼工作的,你怎麼能解決 bug 或添加新特性呢?
要記住:嘗試它,才能改變它。
確認產品的狀況
這個項目有多活躍?
如果你向一個暫停維護的項目提交一個 拉取請求 ,你的請求可能永遠不會被討論或合併。找找那些活躍的項目,這樣你的代碼可以得到即時的反饋,你的貢獻也就不會被浪費。
這裡介紹了怎麼確認一個項目是否還是活躍的:
- 貢獻者數量: 一個增加的貢獻者數量表明開發者社區樂於接受新的貢獻者。
- 提交 頻率: 查看最近的提交時間。如果是一周之內,甚至是一兩個月內,這個項目應該是定期維護的。
- 維護者數量: 維護者的數量越多,你越可能得到指導。
- 聊天室或 IRC 活躍度: 一個繁忙的聊天室意味著你的問題可以更快得到回復。
新手資源
Coala 是一個開源項目的例子。它有自己的教程和文檔,讓你可以使用它(每一個類和方法)的 API。這個網站還設計了一個有吸引力的界面,讓你有閱讀的興趣。
文檔: 不管哪種水平的開發者都需要可靠的、被很好地維護的文檔,來理解項目的細節。找找在 GitHub(或者放在其它位置)或者類似於 Read the Docs 之類的獨立站點上提供了完善文檔的項目,這樣可以幫助你深入了解代碼。
![Coala Newcomers' Guide screen](/data/attachment/album/201807/03/110953yxuc3h11gqm8gum2.png "Coala Newcomers' Guide screen")
教程: 教程會給新手解釋如何在項目里添加特性 (然而,你不是在每個項目中都能找到它)。例如,Coala 提供了 小熊編寫指南 (進行代碼分析的 代碼格式化 工具的 Python 包裝器)。
![Coala UI](/data/attachment/album/201807/03/110954moyj3tbp02nchhn4.png "Coala User Interface screenshot")
分類的 討論點 : 對剛剛想明白如何選擇第一個項目的初學者來說,選擇一個討論點是一個更加困難的任務。標籤被設為「難度/低」、「難度/新手」、「利於初學者」,以及「 觸手可及 」都表明是對新手友好的。
![Coala labeled issues](/data/attachment/album/201807/03/110955gi5xzt0goiz5i7ve.png "Coala labeled issues")
其他因素
![CI user pipeline log](/data/attachment/album/201807/03/110956p1rrnbrur1a1y72b.png "CI user pipeline log")
- 維護者對新的貢獻者的態度: 從我的經驗來看,大部分開源貢獻者都很樂於幫助他們項目里的新手。然而,當你問問題時,你也有可能遇到一些不太友好的人(甚至可能有點粗魯)。不要因為這些人失去信心。他們只是因為在比他們經驗更豐富的人那兒得不到發泄的機會而已。還有很多其他人願意提供幫助。
- 審閱過程/機制: 你的拉取請求將經歷幾遍你的同伴和有經驗的開發者的查看和更改——這就是你學習軟體開發最主要的方式。一個具有嚴格審閱過程的項目使您在編寫生產級代碼的過程中成長。
- 一個穩健的 持續集成 管道: 開源項目會向新手們介紹持續集成和部署服務。一個穩健的 CI 管道將幫助你學習閱讀和理解 CI 日誌。它也將帶給你處理失敗的測試用例和代碼覆蓋率問題的經驗。
- 參加編程項目(例如 Google Summer Of Code): 參加組織證明了你樂於對一個項目的長期發展做貢獻。他們也會給新手提供一個機會來獲得現實世界中的開發經驗,從而獲得報酬。大多數參加這些項目的組織都歡迎新人加入。
7 對新手友好的組織
- coala (Python)
- oppia (Python, Django)
- DuckDuckGo (Perl, JavaScript)
- OpenGenus (JavaScript)
- Kinto (Python, JavaScript)
- FOSSASIA (Python, JavaScript)
- Kubernetes (Go)
關於作者
Palash Nigam - 我是一個印度計算機科學專業本科生,十分樂於參與開源軟體的開發,我在 GitHub 上花費了大部分的時間。我現在的興趣包括 web 後端開發,區塊鏈,和 All things python。
via: https://opensource.com/article/18/4/get-started-open-source-project
作者:Palash Nigam 譯者:lonaparte 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive