别害羞,开源社区真的很需要你,教你如何参与开源社区~
前言
相信各位開發者多多少少會在實際開發的過程中會使用一些開源的技術,例如前端的 vue, react, 以及大量的第三方庫如 echart,color.js, day.js 等等,后端就更多了,從到 api 網關到注冊中心,微服務框架,日志服務等等。
不知道有多少開發者有想過 為自己使用的開源項目貢獻代碼 呢? 反正我自己是一直都想為一個牛逼的開源項目做出貢獻,甚至成為一個 commiter 。但是我相信大部分的開發者都和我一樣覺得:”這么牛逼成熟的框架,有我什么事,我連用都用的磕巴,更何況去貢獻代碼呢?“
但是事實卻是開源社區非常需要各位的加入,尤其是在國內開發者眾多但是開源社區氛圍并不好的情況下,更是需要有人帶動大家積極參與到社區的互動中。所以導致了一個開源社區特別 渴望擁有更多開發者參與,無論你是什么水平都希望你一起進來玩,而開發者則 擔心自己水平不足 而會被其他開發者看不起,或者自己并不了解如何正確參與開源社區的姿勢~
那么本篇文章就給大家講講如何參與到開源項目中,如果去為社區貢獻代碼,在 github 中大家都是怎么玩兒的。
開源社區需要你
在開源社區中,最最最重要的不是技術,不是代碼,而是人!社區如果足夠活躍,就一定會有菜鳥到大神的各個級別的參與,開源社區最不怕你 寫的代碼不好,而是沒有人 參與互動交流。為什么這么說呢?
如果你是一個水平很高,技術很強的大佬,你自己寫了一個開源的項目,其中核心的部分你完善的非常好,并且有了幾個常駐在項目中的高水平開發者。
但是隨著使用者越來越多,各種各樣的設備、運行環境、使用方式都會導致 bug 的出現,在剛開始幾個核心開發者可以應付所有的問題。但是如果每天出現幾十個問題,每一個問題都需要去復現,有的時候反饋者還說的不明不白的,需要你去引導他描述清楚問題,加上你可能還有自己的工作,慢慢的問題就開始堆積起來了,其中不乏只是文本內容錯誤,簡單的格式錯誤這種非常基礎的問題。
又或者開源項目需要新增某個簡單的功能,但是核心開發者因其他的原因無暇顧及,加之問題堆積,慢慢的這個社區就變成了一攤死水。
項目長期不更新迭代,問題沒人處理,項目維護者面對這么多的問題心有余而力不足。一個優秀的項目可能因此失去生機。
但如果這時,有了四五個水平不是很高的開發者,幫助你回答一些基本的問題,簡單的錯誤很快就能搞定并提交,而且時不時還能幫你宣傳一下你的項目,這樣這個項目不就好起來了嘛 ~
隨著這樣的人越來越多,會有更多大佬或者大公司使用你的項目進行開發,到這時會有很多的大神涌入,項目的整體技術水平得到進一步的提高,項目的知名度也更高,曾經參與過簡單貢獻的開發者也同樣會因此感到自豪,并且這也是一件 對于個人發展來說很加分的事情!
如何參與開源社區
OK,上面說了那么多, 下面講講開發者要如何參與到開源社區中呢?我相信有很多沒有經驗的開發者對于這件事是很懵的,我在幾個月前也同樣很懵,但最近在真正參與進去后其實也沒有那么難,而且非常開心能做出自己的貢獻!
前置要求
怎么找需求
首先你需要找到你想要參與的項目,有很多大型開源項目是有周邊生態的,從前端到后端都能覆蓋到。例如 vue ,vue 的話有一大把的周邊生態,找一個你感興趣的就 ok。
在 github 中進入對應的項目,這里我以我最近貢獻代碼的 apache/apisix-dashboard 這個項目舉例。
在項目頁面的頂部標簽欄中有以下幾項功能,如下圖:
- Code: 項目的源碼,你可以直接在 github 上預覽,也可以克隆到本地在 ide 工具中跑跑看,主要你得熟悉源代碼,這樣才能為項目做貢獻。
- issues: 項目的問答區,一般我們的開發需求就是在這里面找的。
- Pull requests:項目的拉取請求,這里拉取是指:開發者者在 自己的倉庫 中修改好了代碼,想要 請求項目的維護者拉取到項目的主倉庫 中。
其實標簽欄這里的順序也很有意思,按照你正常的貢獻流程走,你得先熟悉項目源碼,然后再去找問題,解決問題后提交代碼。
假設你已經了解了這個項目,你想要參與項目貢獻,那么你直接進入 issues 標簽頁面中,每一個 issue 的結構如下:
在 issues 中你可能會看到很多很多的英語,這是為了覆蓋更多的海外開發者語言或者項目本身為海外開發者所開發。如果你是第一次參與貢獻,你可以找標簽為 good first issue 問題,這個是項目維護者覺得比較簡單且適合新開發者參與的問題,當然你也可以點擊右上角 Labels 按鈕:
點擊直接篩選某個標簽:
當你找到了一個還沒有分配的 issue ,點進去看他的內容,里面會有一個列表是一些開發者的討論內容:
第一個框框是 問題的具體描述,你需要根據上下文看看這個問題如何進行修改,如果提問者問的不清晰,你可以回復他讓他補充更多內容。如果你看懂了這個問題,并且心里大概知道如何修改了,那么你接下來可以按照這個以下流程來走:
在 issue 中回復一下,要求將這個問題分配給你,如果你不知道怎么說可以這么發:Please assign the issue to me and I will try to solve it ,項目維護者看到就會將 issue 分配給你的。然后你就可以將代碼 fork 到自己倉庫中,點擊右上角的 fork 按鈕 就能進行倉庫 fork:
fork 的意思是從別人的代碼庫中復制一份到你自己的代碼庫,與普通的復制不同,fork 包含了原有庫中的所有提交記錄,之后你的操作都是在自己 fork 的倉庫中進行。
然后克隆到本地,進行開發環境的基本部署。這時候千萬不要直接開始開發,開發需要新建一個分支,并切換到新分支上進行開發,具體原因后面會說,在 vscode 中你可以這么操作:
在新分支完成開發后,你需要提交這個分支到你的倉庫,提交和推送的流程這里不贅述,提交完成后你的 github 倉庫中就會比項目原本的倉庫多一個分支,這時候你就可以提 pr 了。
在 github 中,pull requests 頁面點擊綠色按鈕:
提交 pr 時記得修改一下具體的描述,一般需要貼一下你修改部分的截圖,以及你這個 pr 是為了解決哪個 issue ,用文字描述一下更新了什么東西,具體的話會有一個模板的,描述清晰有助于 pr 的 review。
在提交了 pr 之后,你需要常常關注 pr 的狀態,因為只有項目維護者 review (審查)通過后,你的代碼才可以合并入主分支,如果有需要修改的問題,項目維護者會在 pr 下面評論的。
如果你的 pr 需要再次修改怎么辦呢?這時你還是在新建的那個 pr 中進行開發,提交代碼到你的倉庫,如果有 pr 了你的提交記錄會自動同步過去的,不需要重復提 pr 。
這也就是為什么我們要新建一個分支進行開發,如果你在 master 上進行開發,你雖然可以提 pr ,但是你之后的操作都會同步到 pr 上,如果你的 pr 完成之后被合并進去了,你繼續在 master 分支上開發,你 之后提的新 pr 都會帶有以前 pr 的 commit 記錄,這樣就會很亂了。
所以如果我們的 pr 完成,代碼被合并到了主倉庫,你要把那個分支給刪除掉,同時在 master 分支上拉取一下最新的代碼。這樣我們在創建新分支的時候就會基于最新的代碼創建了。
上面的過程聽起來可能有點繞,舉個例子,假如你看到一個 issue ,需要將一個文本從 hello world 改成 hello oiloil,于是你直接在 master 分支上修改,然后提 pr ,在這個 pr 中代碼維護者可以看到你所有的提交記錄,也就是你修改了一行文本。
這時維護者說你需要將 hello oiloil 改成 hello oil-oil ,你直接在 master 上修改并提交代碼,pr 會自動同步你的操作,也就是你從 hello world -> hello oiloil, hello oiloil -> hello oil-oil 的提交過程都會有,維護者看到你已經改好了就會將這個 pr 通過,并合并代碼。
但是下一次你要進行其他的開發,當你還在 master 分支上開發后,你一提交 pr ,發現自己上一次改 hello world-> hello oil-oil 的提交記錄還在,并且多了一些提交記錄,對于 review 代碼的人而言你就是多改了其他部分的代碼了。
還有很多很多的參與方式,例如代碼 review ,項目投票,甚至單純去里邊聊聊天,刷刷臉都是對開源社區活躍度的貢獻!
加入開源的好處
首先是技術,想要參與開源,不說 0 基礎就能參與,多多少少還是有些門檻的,而且你會被促使著去了解源碼,這對于其中技術實現的學習是很有幫助的。
其次是影響力,在社區中倡導人人平等,貢獻優先,你做出的貢獻也就是代表你的影響力,付出的越多得到的越多從來沒錯。
最后是資源,在社區中非常非常容易結交到技術大神,而且開源社區會有很多講座會議,可以拓展你的技術人脈,能夠和志同道合的人一起開發這是多爽的一件事情!
其實講這一點顯得有點功利了,我了解到很多人都是因為應聘需要而去了解開源社區的。無非就是可以提升個人的影響力,如果為大的項目貢獻過代碼說明技術能力也是能夠得到認可的。
個人關于開源的思考
在我過往的認知中,開源項目一般是某個大公司將業務增長過程中的某些技術積累進行抽離并開源,開源也只是為了提升公司中技術團隊的影響力,同時從開源社區中汲取更多貢獻者的反哺。
但是最近我才知道有那么多優秀的開源項目通過他們獨特的治理方式以及社區氛圍得到了很多關注,并且也發展的越來越好。最后再打波開源項目的廣告,Apache APISIX 是一個動態、實時、高性能的 API 網關,如果有最近正在進行 API 網關技術選型的同學千萬不要錯過,歡迎多多 star ,更歡迎加入社區中一起玩!
希望國內的開源社區氛圍越來越好,祝大家除了升職加薪外還能得到額外的開發帶給你的快樂!
總結
以上是生活随笔為你收集整理的别害羞,开源社区真的很需要你,教你如何参与开源社区~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 史记·凤姐列传
- 下一篇: 【渝粤教育】 国家开放大学2020年春季