第一次给知名项目贡献代码,有点紧张
大家好,我是魚皮的小老弟阿巴,大家也可以叫我小阿巴。
我也對編程非常感興趣,但還是小白一枚。這幾天放假來哥哥家玩,本來想著魚皮哥哥學計算機、設備多,會帶我打打游戲什么的。結果沒想到剛到他家,就問我編程學的怎么樣了,甚至還想拉著我敲幾天代碼。
第一天,魚皮哥哥就問我知不知道一個叫 GitHub 的網站。這我怎么會不知道,世界上最大的代碼開源平臺唄,可以在上面找到很多對學編程有幫助的項目。他之前寫過一篇怎么找優質項目的文章:【硬核干貨】如何高效找到優質編程項目?,我還是認真看了的。
然后他接著問我有沒有參與過開源項目、貢獻代碼什么的。這我還真沒試過,雖然一直在 GitHub 上看項目,但從來沒有想過自己參與項目。一方面是擔心自己實力不夠,覺得能給開源項目貢獻代碼的都是大神;另一方面是不知道如何給項目貢獻代碼、從何處下手。
沒想到魚皮邪魅一笑,說:“其實貢獻代碼沒那么難,讓我來教你吧!”
完了,這下整個假期估計就只能敲代碼了。
不過沒想到,在魚皮哥哥的指導下,很快我就學會了如何給開源項目貢獻代碼,還實際操作了一波!
我做了些筆記,下面分享給大家,幫助每位學編程的同學參與到開源項目中。
第一次參與開源
相信很多同學和我一樣,對參與開源項目望而卻步,主要是因為這兩點:
下面推薦兩個方法,分別解決這兩個問題。
如何貢獻代碼
其實,GitHub 上就有一個現成的教程項目 first-contributions,為初學者帶來一個簡單的方法來學習及參與開源項目。
如該項目作者所說,沒有什么學習方法能比實際動手做更好,因此,這個項目不是簡單的圖文教程、更沒有繁雜的理論知識,更像是一本有趣的說明書,一步步引導你去使用 GitHub 的 Fork、Clone、分支、代碼提交、代碼發布、提交 Pull Request(合并請求)等完整的項目代碼提交流程。
作者非??犊?#xff0c;允許大家直接拿這個教程項目來實戰學習,并接受大家的合并請求。由于這個項目的 star 數也接近 2 萬,所以只要你跟著教程給這個項目做貢獻,也可以說是參與了一個知名項目啦!
找到自己能貢獻的代碼
學會了貢獻代碼的操作方法后,到哪兒去找適合自己的項目去參與和貢獻呢?
建議首選自己熟悉的項目,在熟悉的項目中再優先選擇自己用的比較多的功能,先試著貢獻一些小的修改。通常先從修復一些文檔的 bug、或者補充文檔和代碼注釋開始。比如現在很多 GitHub 的成熟項目發展飛速,但可能成員都去開發新功能了,導致文檔年久失修,如果你正好用到了這個項目,發現了文檔的錯誤,不妨試著修復一下,雖然工作不大,但相信會給你帶來很大的成就感。
通過閱讀和修改文檔,你可以進一步熟悉項目,了解他的設計思想和技術架構。平時如果在使用項目功能時遇到 bug,可以 提個 issues(不是只有提交代碼有價值,提出問題也是在做貢獻),然后可以試著自己修復這個小 bug,有些可能只需要改幾行代碼,但影響會很大,成功修復也能得到很多同學的認可,從而激勵你進一步優化和完善這個功能,提升自己的水平。
哪怕自己沒有遇到什么項目的 bug,也可以直接到項目的 issues 頁面 查看其它同學遇到的問題,很多問題其實并不麻煩,只是官方無暇去解決,這往往就是我們參加開源的最佳時機。
比如阿里的 Ant Design 項目,還有近 600 個待解決的問題!
這么多的 issues,怎么選擇適合初學者解決的問題呢?
其實非常簡單,直接訪問 github.com/<owner>/<repository>/contribute 地址,就能夠查找出指定倉庫中適于初學者參與的議題。
比如 Ant Design 項目,就訪問地址:https://github.com/ant-design/ant-design/contribute,進入到倉庫貢獻頁,其實就是在倉庫后面加個 contribute 而已。
然后你就能看到很多打上了 good first issue 標簽、適合初學者解決的問題,以及一份倉庫貢獻指南:
這些問題通常解決難度不大、成本不高,而且非常具有學習意義。
強烈建議先 閱讀貢獻指南,然后學習下別人解決問題的思路,再自己動手嘗試!
當你解決的問題越來越多,或者對項目足夠熟悉后,你可以給整個項目開發新功能,甚至加入項目的核心團隊!當然,這是后話,從編程小白逆襲為開源大佬,不敲個幾十萬行代碼,我覺得不行。
好了,就分享到這里。
雖然這個假期被魚皮哥哥拉去敲了幾天代碼,沒有打成游戲,但還是 點個贊 感謝他吧,以后多給開源項目貢獻代碼,俺的水平不得起飛了啊!
發現項目:https://www.code-nav.cn/rd/?rid=28ee4e3e604f7ce60ad166027f272d9e
總結
以上是生活随笔為你收集整理的第一次给知名项目贡献代码,有点紧张的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实作 ASP.NET 多笔数据离线编辑
- 下一篇: 页面跳转并传递参数