1. 程式人生 > >如何在Github上為開源貢獻力量?

如何在Github上為開源貢獻力量?

參與開源的一個好方式是為當前你正在使用的(開源)專案貢獻力量。Github為多達五百萬的開源專案提供託管。這裡有各種技術集的專案,比如:recipes、 HTML/CSSRubyAstrophysics和其他許多專案。這份指南會涵蓋在一個典型專案中的各個方面,同時指導如何參與貢獻。

查詢專案

我們建議你開始時查詢你已經在使用的專案(或者感興趣的專案)。下面是一些值得訪問的連結:

一個典型的專案

下面是在一個開源專案中可能會訪問的一些元素。

社群

專案通常都含有一個圍繞它的社群,由其他不同角色使用者建立:

  • 所有者是專案建立者或其組織,該賬戶身份擁有這個專案。
  • 維護者和協作者是一個專案的主要開發者和負責駕馭專案開發方向的人。通常專案所有者和維護者是同一個人。他們擁有倉庫的寫許可權。
  • 貢獻者是指任何對專案進行pull操作併合併到專案中的人。
  • 社群成員是經常使用專案的使用者,深切關心專案並且活躍討論專案的特性和pull請求。

文件

專案中包含的通用文件檔案

請讀我(Readme)

幾乎所有Github上的專案都包含一個README.md檔案。這個Readme描繪了專案使用、編譯,有些時候也提供專案參與的詳細地圖。

參與文件(Contributing)

不同專案和專案的維護人員存在差異,所以參與專案的方式也不同。你可以關注一個叫CONTRIBUTING的文件。參與文件詳細描述了專案維護人員希望看到補丁和貢獻特性的規範。這可能包含了如何編寫測試,程式碼風格或者補丁應用範圍。

許可證(License)

LICENSE檔案是專案的許可證說明檔案。一個開源專案的許可證告訴使用者他們可以做和不可以做什麼(例如:使用,修改和分發),以及參與者的權利,這個檔案告訴其他人他們可以怎麼做。許可和釋出開源專案有許多方式,你可以在這個網站了解不同許可的含義:choosealicense.com.

文件和wiki

許多大型專案略過Readme來指定使用者如何使用其專案,這種情況下你在倉庫中通常會找到一個連結或者一個名叫“docs”的資料夾。

另外,倉庫也可以使用Github的wiki系統來代替文件。

參與一個專案

現在你已經找到理解一個專案的材料了,開始行動起來吧。

建立一個Issue

如果你發現你使用專案中的一個bug(但是你不知道如何去修復它),在文件中也找不到相關資訊或者對專案存有疑問——建立一個issue!不管你的issue什麼內容或者你現在有什麼issue,你可能不是唯一存有疑問的,其他使用者可能會從你的issue得到幫助。此外,想要更多關於issue如何工作的資訊,請檢視我們的issue指南

Issues專業建議

  • 檢查當前的issue是否有與你相關聯的。釋出重複的issue會讓雙方都降低效率,搜尋開放和已經關閉的issue來檢查你現在提出的issue是否已經被提及。
  • 請明確你的問題:期望的輸出是什麼,實際發生了什麼?以及其他人如何復現你的問題。
  • 對示例的連結:復現問題的方式,比如提供在jsfiddlecodepen上的示例連結。
  • 彙報系統環境的詳細資訊。比如使用什麼瀏覽器,使用的庫或者作業系統的版本。
  • 在你的issue或者Gist中貼上錯誤輸出或者日誌。如果你貼上錯誤輸出或日誌到一個issue中,請使用三個反引號`使得顯示更漂亮。

Pull請求

如果你自己有能力修復bug或者新增新特性——那就太妙了。對程式碼基做一個pull請求!請確保你已經讀過參與相關的文件了,瞭解許可證並擁有一個簽名的CLA(如果需要的話)。一旦你提交了一個pull請求,專案的維護人員可以比較你的分支和當前分支來決定是否合併(pull in)你的變更.

Pull請求專業建議

  • Fork倉庫並克隆到本地。通過連線你本地到初始的“上游”倉庫並標記作為一個遠端連線。時常從“上游”Pull in變更保證在提交你的pull請求時是最新版本,從而減少合併衝突的可能性。詳細的指導見這裡
  • 為你的編輯建立一個分支
  • 清楚問題是如何發生的,同時其他人如何去復現問題,或者你提交的特性是有幫助的。同樣的,清楚瞭解你的變更執行步驟。
  • 最好進行測試。如果有,對已有的測試專案測試你的變更,需要時建立一個新的測試。不管測試是否存在,請保證你的變更不會擾亂現有專案。
  • 提供你變更前後的截圖,包括在html/css上的不同,拖拽圖片到你的pull請求中。
  • 儘量參照專案風格來參與專案。這包括使用縮排,符號和註釋,也許在你的專案中使用有所不同,不過使用(和專案一致的風格)會讓專案維護人員更容易合併,其他人也更容易理解和在將來進行維護。

開啟pull請求

一旦你打開了一個pull請求,一個你提交變更相關的討論就會開始。其他參與者和使用者會參與進來。但是最終還是由維護者進行決策。你可能會被要求對你的pull請求進行修改,如果是這樣,為你的分支新增更多的註釋並push它們——它們會自動加入已經存在的pull請求。

如果你的pull請求被合併了——非常棒!如果沒有,也沒問題,可能專案的維護者並沒有注意到,或者他們已經為此做了一些事情。這時,我們建議你接受你收到的反饋並繼續處理,再次提交pull請求——或者建立你自己的開源專案。