我能提供什麼幫助?#
為開源做貢獻可能是一個令人緊張的過程,但請不要擔心,Jupyter 團隊的每個人都致力於確保您的開源體驗儘可能愉快。在以下描述的任何過程中,您都可以隨時透過 Gitter 或郵件列表聯絡 Jupyter 團隊尋求幫助。如果您擔心在公共場合提問,也可以私下聯絡 Jupyter 開發者。您可以使用公共 Gitter 找到最瞭解您正在處理的程式碼的人,並透過私人聊天與他們交流。
當您開始您的開源之旅時,請記住,如果您不理解某些內容,沒關係;如果您犯了錯誤,沒關係;如果您只貢獻了修復您正在處理的問題所需的一小部分程式碼,也沒關係。歡迎任何形式的幫助,並鼓勵所有人做出貢獻。
提交拉取請求#
歡迎並鼓勵個人提交拉取請求併為 Jupyter 原始碼做貢獻。如果您是第一次貢獻者,希望參與 Jupyter,您可以使用以下查詢在 GitHub 搜尋中查詢 Jupyter 程式碼庫中適合初學者的待解決問題。此查詢特別有用,因為 Jupyter 程式碼庫分佈在 jupyter 組織中的多個儲存庫中,而不是單個儲存庫中。您可以點選下面的連結查詢適合衝刺的問題。
is:issue is:open is:sprint-friendly user:jupyter
一旦您找到一個渴望解決的問題,您可以使用下面的指南開始。如果在處理問題時遇到任何問題,請在 GitHub 的問題頁面上留言,核心團隊的成員將能夠為您提供幫助。
請記住,以下內容是指導原則。如果您按照步驟操作並有疑問或遇到時間限制,請將您已完成的工作作為拉取請求提交併提出問題。您的努力,包括部分或正在進行的工作,都值得讚賞。
Fork 與您正在解決的問題相關的儲存庫,並將其克隆到您機器上的本地目錄。
cd
進入該目錄,並使用git checkout -b insert-branch-name-here
建立一個新分支。選擇一個能說明您正在修復的問題的分支名稱。例如,如果您正在更新程式在發生特定錯誤時記錄的文字,您可以將分支命名為
update-error-text
。請參閱儲存庫的 README 和文件,瞭解有關為開發配置系統的詳細資訊。
確定您將進行程式碼更改的模組或類,並在檔案中留下評論,描述您正在嘗試解決的問題。
向儲存庫開啟一個拉取請求,並在前面附加
[WIP]
,以便核心團隊知道您正在積極處理該問題。建立拉取請求時,請確保標題清晰簡潔地描述您的程式碼所做的事情。例如,我們可以使用標題“Updated error message on ExampleException”。在拉取請求的正文中,請確保包含短語“Closes #issue-number-here”,其中 issue number 是您在此 PR 中正在處理的問題編號。請儘早開啟 PR。及早獲得關於您方法的回饋將為您節省時間,並防止以後需要進行大量重構。
在本地執行測試套件,以確保您的系統已正確配置。請參閱儲存庫的 README,瞭解如何執行測試套件。這通常需要您在命令列上執行
nosetests
命令。或者,您可以提交拉取請求。我們的持續整合系統將測試您的程式碼並報告測試結果。找到與您將要更改的模組相關的測試檔案。在測試檔案中,新增一些測試,概述您期望更改的行為。如果我們繼續以更新錯誤時記錄的文字為例,我們可能會編寫測試用例,檢查在誘發錯誤時引發的異常是否包含適當的字串。編寫測試用例時,請確保測試以下內容。
我能為這個問題編寫的最簡單的測試用例是什麼?
如果您的程式碼獲得雜亂的輸入會發生什麼?
如果您的程式碼沒有輸入會發生什麼?
如果您的程式碼輸入太少會發生什麼?
如果您的程式碼輸入太多會發生什麼?
如果您在編寫測試用例時需要幫助,您可以在之前開啟的拉取請求上發表評論,核心團隊的成員將能夠幫助您。
回到您正在更新的檔案,開始為您的拉取請求新增程式碼。
再次執行測試套件,看看您的更改是否導致任何測試用例透過。如果任何測試用例失敗,請返回您的程式碼並進行必要的更新以使其透過。
一旦所有測試用例都透過,請提交測試用例和更新的模組,並將更新推送到您的分支儲存庫上的分支。
一旦您的拉取請求準備好進行稽核,請從問題前面刪除 [WIP] 標籤,專案稽核員將稽核您的程式碼質量。您可以期望稽核員檢查您所做更改中提供的文件、您提供的測試用例的徹底程度以及您的程式碼效率。您的稽核員將提供關於您程式碼的回饋,您將有機會編輯您的程式碼並應用修復。
一旦您的 PR 準備好成為程式碼庫的一部分,它將由核心團隊成員合併。
貢獻工作流#

完整的貢獻工作流描述。[1]
核心開發者工作流#
為了幫助您瞭解您提交拉取請求後核心開發者的審查流程,這裡有一份指南,概述了通用流程(具體情況可能因儲存庫而異)。以下是 Jupyter notebook 4.x
的示例。
通常,拉取請求是針對 master
的,除非它們隻影響回溯分支。如果 PR 影響 master 並且應該回溯,則一般流程是:
將 PR 標記為下一個回溯版本 (4.3) 的里程碑
合併到 master
回溯到 4.x
推送更新的 4.x 分支
回溯可以透過多種方式完成,但我們有一個指令碼,用於自動化常見的流程:
下載補丁
例如,<https://patch-diff.githubusercontent.com/raw/jupyter/notebook/pull/1645.patch>
簽出 4.x 分支
應用補丁
進行提交
這適用於簡單情況,至少如此。
在這種情況下,它將是:
python /path/to/ipython-repo/tools/backport_pr.py jupyter/notebook 4.x 1645
提交錯誤#
在使用 Notebook 時,您可能會遇到表現為意外行為的錯誤。如果是這樣,我們鼓勵您在 GitHub 上提出問題。為了讓開發者和使用者更容易瀏覽問題,我們要求您在提交問題之前採取以下步驟。
在 StackOverflow 和現有的 GitHub 問題中搜索,以確保該問題尚未被其他使用者報告。如果是這樣,如果您認為有價值,請在現有問題上提供您的意見。
準備一個小的、獨立的、可重現您所遇到問題的程式碼片段。
準備有關您執行程式碼的環境資訊,以幫助除錯問題。在提交錯誤時,您需要提供有關 Python 版本、Jupyter 版本、作業系統和您正在使用的瀏覽器資訊。您還可以使用
pip list
或conda list
和grep
來識別與您提交的問題相關的庫版本。準備一個簡單的測試,概述程式碼的預期行為,或描述預期行為應該是什麼。
準備一個解釋,說明為什麼當前行為不理想以及它應該是什麼。
報告漏洞#
如果您認為在 Jupyter 專案中發現了安全漏洞,請將其報告給 security@ipython.org
。如果您希望加密您的安全報告,可以使用此 PGP 公鑰。