如果您是一名開(kāi)發(fā)人員,您可能會(huì)遇到“開(kāi)源”這個(gè)詞。如果您曾經(jīng)想知道它的全部?jī)?nèi)容以及如何做出貢獻(xiàn),那么您來(lái)對(duì)地方了。在 2020 年 Hacktoberfest 期間,我拋開(kāi)了我對(duì)如何以及貢獻(xiàn)什么的所有恐懼,并為開(kāi)源世界做出了我的第一個(gè)貢獻(xiàn)。由于這是我第一次,我從一些初學(xué)者友好的項(xiàng)目開(kāi)始,然后慢慢變得更高級(jí)?,F(xiàn)在,如果您是一名新開(kāi)發(fā)人員,您可能想知道開(kāi)源到底是什么?如何開(kāi)始?你應(yīng)該期待什么?好吧,在本文中,我們將涵蓋所有這些以及更多內(nèi)容。
什么是開(kāi)源?
開(kāi)源是指在許可許可下向公眾提供以查看、使用、修改和分發(fā)的源代碼。
開(kāi)源代碼通常符合公司或個(gè)人的最大利益,無(wú)論他們是個(gè)人、公司、小型企業(yè)、非營(yíng)利組織還是政府機(jī)構(gòu)。
為開(kāi)源項(xiàng)目做出貢獻(xiàn)是一種學(xué)習(xí)、教授、分享和積累經(jīng)驗(yàn)的有益方式。您應(yīng)該為開(kāi)源項(xiàng)目做出貢獻(xiàn)的原因有很多,例如:
- 改進(jìn)您每天依賴(lài)的軟件
- 如果您需要,請(qǐng)找一位導(dǎo)師
- 學(xué)習(xí)新技能
- 分享你的技能
- 更深入地了解您正在使用的軟件
- 建立您的聲譽(yù)并幫助您發(fā)展事業(yè)
- 此外,它很有趣,讓您滿(mǎn)意
如何為開(kāi)源做貢獻(xiàn)
為開(kāi)源項(xiàng)目做出貢獻(xiàn)并不一定意味著您必須為代碼庫(kù)做出貢獻(xiàn)。您可以通過(guò)多種不同的方式為開(kāi)源做出貢獻(xiàn),例如:
- 您可以在項(xiàng)目文檔中添加描述以詳細(xì)說(shuō)明某一點(diǎn)
- 您可以針對(duì)特定項(xiàng)目提供指導(dǎo)
- 您可以添加示例來(lái)展示代碼的工作原理
- 您可以為項(xiàng)目編寫(xiě)教程
- 您可以為項(xiàng)目添加翻譯
- 您可以回答有關(guān)項(xiàng)目的問(wèn)題(例如在 Stack Overflow 或 Reddit 上)
- 您可以提議指導(dǎo)另一位貢獻(xiàn)者
- 您可以修復(fù)拼寫(xiě)錯(cuò)誤并正確排列項(xiàng)目的工作文件夾
所有這些以及更多方式都可以為開(kāi)源項(xiàng)目做出貢獻(xiàn)。
在為開(kāi)源項(xiàng)目做出貢獻(xiàn)之前需要了解什么
每個(gè)開(kāi)源社區(qū)都是不同的。每個(gè)社區(qū)都有不同的人,他們提供不同的角色和獎(jiǎng)勵(lì)。他們每個(gè)人都有自己的規(guī)則和貢獻(xiàn)的期望。
一個(gè)典型的開(kāi)源項(xiàng)目會(huì)有這些人:
- 作者- 這是創(chuàng)建項(xiàng)目的人。他們有權(quán)為其他成員分配新角色以幫助維護(hù)項(xiàng)目。
- 所有者-所有者擁有項(xiàng)目的管理所有權(quán)(并且可以與作者為同一人)
- 維護(hù)者- 這些人負(fù)責(zé)推動(dòng)項(xiàng)目的愿景和目標(biāo)。他們通常是對(duì)項(xiàng)目方向負(fù)責(zé)并致力于改進(jìn)項(xiàng)目的人
- 貢獻(xiàn)者- 貢獻(xiàn)者以一種或另一種方式添加到項(xiàng)目中。他們遵循相同的代碼審查流程,遵守相同的代碼風(fēng)格要求,等等。
- 社區(qū)成員/用戶(hù)- 這些有價(jià)值的社區(qū)成員可以提供有關(guān)功能、錯(cuò)誤報(bào)告等的反饋。
所有開(kāi)源項(xiàng)目都應(yīng)該具備的重要元素
每個(gè)開(kāi)源項(xiàng)目都應(yīng)該有以下指南和信息:
- 許可證- 如果一個(gè)項(xiàng)目沒(méi)有開(kāi)源許可證,那么它就不是開(kāi)源的。該許可證有助于保護(hù)貢獻(xiàn)者和用戶(hù)。沒(méi)有這種保護(hù),企業(yè)和精明的開(kāi)發(fā)人員通常不會(huì)接觸項(xiàng)目。如果您想知道如何獲得,請(qǐng)單擊此處閱讀更多信息。
- README - 這是一本說(shuō)明如何開(kāi)始項(xiàng)目的手冊(cè)。一個(gè)好的 README 應(yīng)該包含潛在貢獻(xiàn)者想要了解的有關(guān)項(xiàng)目的所有不同內(nèi)容。您可以在此處閱讀有關(guān)如何編寫(xiě)好的 README 文件的更多信息。
- 如何貢獻(xiàn) - 這些指南幫助人們貢獻(xiàn)并展示需要什么類(lèi)型的貢獻(xiàn)者(此文件不是必須的)
- CODE_OF_CONDUCT - 行為準(zhǔn)則是??一份文件,用于確定您對(duì)貢獻(xiàn)者和參與者的行為方式的期望。采用和執(zhí)行行為準(zhǔn)則有助于為您的社區(qū)創(chuàng)造一個(gè)積極的環(huán)境。
要?jiǎng)?chuàng)建開(kāi)源項(xiàng)目,您需要?jiǎng)?chuàng)建一個(gè)環(huán)境,讓人們可以分享他們的挑戰(zhàn)并進(jìn)行深入討論。這可以通過(guò)以下工具實(shí)現(xiàn):
- 問(wèn)題跟蹤器 - 這是人們討論與項(xiàng)目相關(guān)的問(wèn)題的地方
- 拉取請(qǐng)求 - 這是人們審查正在進(jìn)行的更改的地方
- 同步聊天頻道 - 這是專(zhuān)門(mén)供人們分享他們的想法并進(jìn)行對(duì)話(如 Slack、Discord 等)
如何找到要參與的項(xiàng)目
既然您已經(jīng)了解了開(kāi)源項(xiàng)目的工作原理,那么是時(shí)候?qū)ふ铱梢载暙I(xiàn)的項(xiàng)目了。
貢獻(xiàn)在各個(gè)層面都有效——不要過(guò)度思考你將如何去做。而是想想您已經(jīng)使用的一些項(xiàng)目,以及如何對(duì)它們進(jìn)行更改或改進(jìn)。
研究表明,大約 30% 的臨時(shí)貢獻(xiàn)是文檔、錯(cuò)別字修復(fù)甚至翻譯。
如果你是第一次貢獻(xiàn)者——每個(gè)人在某個(gè)時(shí)候都是這樣——這里有一些鏈接可以讓你開(kāi)始進(jìn)入開(kāi)源世界:
在開(kāi)源軟件的世界中,問(wèn)題會(huì)很快得到報(bào)告和修復(fù)。所以,如果你想解決一個(gè)問(wèn)題,一定要盡快嘗試解決它。
如何選擇開(kāi)源項(xiàng)目
找到您想要幫助的項(xiàng)目后,請(qǐng)確保它符合以下標(biāo)準(zhǔn),以確保它是一個(gè)不錯(cuò)的候選人:
首先,您必須檢查:
- 它有許可證文件嗎?
- 最近一次提交是什么時(shí)候完成的?是最近的嗎?(也就是說(shuō),項(xiàng)目是否積極維護(hù)/工作?)
- 它有多少貢獻(xiàn)?
- 人們多久提交一次?
如果您看到很多最近的活動(dòng),那很好——這意味著它有一個(gè)活躍的社區(qū)來(lái)維護(hù)它。
現(xiàn)在您應(yīng)該繼續(xù)檢查以下內(nèi)容:
- 有多少未解決的問(wèn)題?
- 維護(hù)者需要多長(zhǎng)時(shí)間做出回應(yīng)?他們及時(shí)嗎?
- 是否對(duì)某個(gè)問(wèn)題進(jìn)行了積極的討論?
- 問(wèn)題是否定期關(guān)閉?
- 有多少開(kāi)放的拉取請(qǐng)求?
- 最近多久合并最新的拉取請(qǐng)求?最近?
- 拉取請(qǐng)求是否首先被審查?(他們應(yīng)該是。)
- 維護(hù)者是否感謝人們的貢獻(xiàn)?
如果上述所有條件都滿(mǎn)足您的需求,那么就去做吧,并開(kāi)始為這些項(xiàng)目做出貢獻(xiàn)。
開(kāi)源之前需要考慮什么
好的,所以您迫不及待地開(kāi)始為您的第一個(gè)操作系統(tǒng)項(xiàng)目做出貢獻(xiàn)。讓我們通過(guò)一些提示來(lái)幫助您選擇要處理的內(nèi)容。
項(xiàng)目使用什么編程語(yǔ)言?
任何應(yīng)用程序背后最基本的技術(shù)都是它使用的編程語(yǔ)言。GitHub 上一些最流行的語(yǔ)言是 JavaScript、Python、Java、Ruby 和 PHP——但還有更多。
有許多項(xiàng)目可能適合您的技能和興趣。所以只要找到一個(gè)你覺(jué)得工作起來(lái)很舒服的。
項(xiàng)目類(lèi)型
在您選擇了您想要使用的語(yǔ)言后,您需要選擇您喜歡的項(xiàng)目類(lèi)型。只需環(huán)顧四周并選擇一個(gè)您感興趣的主題的項(xiàng)目。
一旦你找到了一個(gè)項(xiàng)目,你就會(huì)想要真正做出貢獻(xiàn)。你將通過(guò)提交拉取請(qǐng)求來(lái)做到這一點(diǎn)。讓我們現(xiàn)在談?wù)劇?/p>
如何提交拉取請(qǐng)求
如果你處于這個(gè)階段,你已經(jīng)找到了一個(gè)項(xiàng)目,你可以開(kāi)始了。那么讓我們來(lái)談?wù)勅绾螌?shí)際提交拉取請(qǐng)求。
首先,什么是拉取請(qǐng)求?這是您在 GitHub 中請(qǐng)求更新的方式,也是您在將代碼合并到另一個(gè)分支之前讓某人檢查您的代碼的方式
提交 PR 的步驟
- Fork the repository在右上角,您將看到術(shù)語(yǔ)“fork”。您需要做的就是單擊它,您將在您的帳戶(hù)中創(chuàng)建同一個(gè)項(xiàng)目的副本。URL 將更改為:
https://github.com/<YourUserName>/projectname
- 將它克隆到您的本地機(jī)器在您的計(jì)算機(jī)上,如果您安裝了 Git,請(qǐng)打開(kāi) CMD 并運(yùn)行此命令。如果您還沒(méi)有 Git,請(qǐng)參閱此處,它將向您展示如何開(kāi)始使用 Git。然后繼續(xù)執(zhí)行以下步驟:
git clone https://github.com/<YourUserName>/<projectname>
這將在您的本地計(jì)算機(jī)上創(chuàng)建項(xiàng)目的副本?,F(xiàn)在您已經(jīng)克隆了 repo,我們需要做兩件事:
首先,您需要?jiǎng)?chuàng)建一個(gè)分支。更改到您計(jì)算機(jī)上的存儲(chǔ)庫(kù)目錄(如果您還沒(méi)有):您可以通過(guò)以下方式執(zhí)行此操作:
cd project folder name
現(xiàn)在使用 git checkout 命令創(chuàng)建一個(gè)分支:
git checkout -b your-new-branch-name
例如:
git checkout -b lary-mak-blog
接下來(lái),您需要進(jìn)行必要的更改并提交這些更改。在進(jìn)行更改并添加新文件之后,是時(shí)候?qū)⑦@些更改添加到您創(chuàng)建的分支中了。
要查看您所做的所有更改,請(qǐng)運(yùn)行以下git status命令:
git status
這會(huì)顯示您最近所做的所有更改?,F(xiàn)在要添加它們,請(qǐng)使用以下git add *命令:
git add *
現(xiàn)在使用以下git commit命令提交這些更改:
git commit -m "<initial commit> "
- 將更改推送到 GitHub您可以使用 `git push 命令輕松完成此操作:
git push origin <add-your-branch-name>
替換<add-your-branch-name>為您之前創(chuàng)建的分支的名稱(chēng)。
- 提交您的更改以供審核如果您轉(zhuǎn)到 GitHub 上的存儲(chǔ)庫(kù)并刷新頁(yè)面,您將看到一個(gè)比較和拉取請(qǐng)求按鈕。單擊該按鈕。
很快,維護(hù)者會(huì)將您的所有更改合并到該項(xiàng)目的主分支中(除非他們需要您的更改)。合并更改后,您將收到一封通知電子郵件。
對(duì)另一個(gè)倉(cāng)庫(kù)的拉取請(qǐng)求類(lèi)似于“推送”。但是,它允許做一些事情:
首先,它允許您為另一個(gè)存儲(chǔ)庫(kù)做出貢獻(xiàn),而無(wú)需管理權(quán)限來(lái)對(duì)存儲(chǔ)庫(kù)進(jìn)行更改。
其次,它允許其他人查看您的更改并提出更正、添加、編輯等建議。
第三,它讓倉(cāng)庫(kù)管理員可以控制添加到他們項(xiàng)目倉(cāng)庫(kù)中的內(nèi)容。
在你的第一個(gè)拉取請(qǐng)求之后下一步是什么?
恭喜!您剛剛完成了作為貢獻(xiàn)者經(jīng)常遇到的標(biāo)準(zhǔn) fork -> 克隆 -> 編輯 -> 拉取請(qǐng)求工作流程!
現(xiàn)在找到一個(gè)項(xiàng)目并做出更多貢獻(xiàn)。一定要留意Digital Ocean舉辦的開(kāi)源月,這樣你就可以參加Hacktoberfest 并有機(jī)會(huì)贏取一些很酷的東西。
為開(kāi)源做貢獻(xiàn)的好處
既然您已經(jīng)了解了如何為操作系統(tǒng)做出貢獻(xiàn),那么貢獻(xiàn)的一些好處是什么?
- 為開(kāi)源項(xiàng)目做出貢獻(xiàn)的人可以比僅僅使用該技術(shù)更深入地了解該技術(shù)
- 您可以根據(jù)在現(xiàn)實(shí)世界中有效和無(wú)效的經(jīng)驗(yàn),專(zhuān)注于添加和利用有益于企業(yè)的功能。
- 它可以建立你的士氣和聲譽(yù)。為開(kāi)源項(xiàng)目做出貢獻(xiàn)的人可以獲得其他社區(qū)成員的見(jiàn)解和經(jīng)驗(yàn)。
- 為開(kāi)源做出貢獻(xiàn)可以清晰地了解項(xiàng)目的未來(lái)
- 如果您在 GitHub 上,那么您在該平臺(tái)上所做的大部分事情都是公開(kāi)的。通過(guò)在貢獻(xiàn)和與其他貢獻(xiàn)者溝通時(shí)始終盡最大努力來(lái)利用這一點(diǎn)。你永遠(yuǎn)不知道誰(shuí)在找,你的下一個(gè)雇主可能在那里
為什么你應(yīng)該為開(kāi)源做貢獻(xiàn)
作為開(kāi)發(fā)人員,這就是為什么我認(rèn)為您應(yīng)該為開(kāi)源做出貢獻(xiàn)的原因:
- 它可以幫助您編寫(xiě)更清晰的代碼
- 它可以幫助社區(qū)和您的同齡人了解您。這種認(rèn)可可以為您的職業(yè)生涯帶來(lái)很多機(jī)會(huì)。
- 它可以幫助您了解有關(guān)項(xiàng)目的更多信息
- 它提高了您的編碼技能
有關(guān)更多信息,請(qǐng)閱讀w3cschool后續(xù)文章。