App下載

如何為開(kāi)源項(xiàng)目做出貢獻(xiàn)——初學(xué)者指南

小葵愛(ài)奮斗 2021-08-25 15:17:08 瀏覽數(shù) (3747)
反饋

如果您是一名開(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ù)文章。


0 人點(diǎn)贊