我能帮您什么?#
为开源做出贡献可能是一个令人紧张的过程,但不用担心,Jupyter 团队的每个人都致力于确保您的开源体验尽可能有趣。在下面描述的过程中的任何时候,您都可以通过 Gitter 或邮件列表联系 Jupyter 团队寻求帮助。如果您担心在公开场合提问,您还可以私下联系 Jupyter 开发人员之一。您可以使用公共 Gitter 找到对您正在处理的代码最了解的人,并通过个人聊天与他们互动。
当您开始您的开源之旅时,请记住,如果您不理解某些内容,犯错,或者只贡献少量代码来修复您正在解决的问题,这都是可以的。任何帮助都受欢迎,并且鼓励任何人做出贡献。
提交拉取请求#
欢迎并鼓励个人提交拉取请求并为 Jupyter 源代码做出贡献。如果您是希望参与 Jupyter 的首次贡献者,则可以在 GitHub 搜索中使用以下查询来查找 Jupyter 代码库中适合初学者的待解决问题。此查询特别有用,因为 Jupyter 代码库分散在 jupyter 组织内的多个存储库中,而不是单个存储库。您可以单击下面的链接以查找适合冲刺的问题。
is:issue is:open is:sprint-friendly user:jupyter
一旦您找到了您渴望解决的问题,您就可以使用下面的指南开始。如果您在处理问题时遇到任何问题,请在 GitHub 中的问题页面上留言,核心团队中的某人将能够为您提供帮助。
请记住,以下内容是指南。如果您完成这些步骤并有疑问或遇到时间限制,请提交您已经完成的工作作为拉取请求,并在其中提出问题。您的努力,包括部分或正在进行的工作,都受到赞赏。
分叉您正在解决的问题关联的存储库,并将其克隆到您计算机上的本地目录。
cd
进入目录,并使用git checkout -b insert-branch-name-here
创建一个新分支。选择一个分支名称,以深入了解您正在修复的问题。例如,如果您正在更新程序在发生特定错误时记录的文本,则可以将您的分支命名为
update-error-text
。请参阅存储库的自述文件和文档,了解有关为开发配置系统的详细信息。
确定您将进行代码更改的模块或类,并在文件中留下注释,说明您正在尝试解决什么问题。
使用
[WIP]
附加到前端,向存储库打开一个拉取请求,以便核心团队知道您正在积极处理此问题。在创建拉取请求时,请确保标题清晰简洁地描述您的代码的作用。例如,我们可能会使用标题“更新 ExampleException 上的错误消息”。在拉取请求的主体中,请确保包含短语“Closes #issue-number-here”,其中问题编号是您在此 PR 中解决的问题的问题编号。尽早提出 PR。尽早获得对方法的反馈将节省你的时间,并避免以后需要大规模重构。
在本地运行测试套件,以确保在系统上正确配置所有内容。有关如何运行测试套件的信息,请参阅存储库的 README。这通常需要你在命令行上运行
nosetests
命令。或者,你可以提交一个 pull 请求。我们的持续集成系统将测试你的代码并报告测试结果。找到与你将要更改的模块关联的测试文件。在测试文件中,添加一些测试,概述你期望的更改行为。如果我们继续使用更新在错误时记录的文本的示例,我们可能会编写测试用例,以检查在你引发错误时引发的异常是否包含适当的字符串。在编写测试用例时,请确保测试以下内容。
我能为这个问题编写最简单的测试用例是什么?
如果你的代码被赋予混乱的输入,会发生什么?
如果你的代码没有输入,会发生什么?
如果你的代码输入太少,会发生什么?
如果你的代码输入太多,会发生什么?
如果你需要编写测试用例的帮助,你可以在之前打开的 pull 请求中添加评论,核心团队成员之一将能够帮助你。
返回到你正在更新的文件,并开始添加 pull 请求的代码。
再次运行测试套件,以查看你的更改是否导致任何测试用例通过。如果任何测试用例失败,请返回你的代码并进行必要的更新以使其通过。
一旦你的所有测试用例都通过,提交测试用例和更新的模块,并将更新推送到分叉存储库中的分支。
一旦你准备好让你的 pull 请求接受审查,从问题的前面移除 [WIP] 标记,项目审查员将审查你的代码质量。你可以期望审查员检查你所做的更改中提供的文档、你提供的测试用例的彻底程度以及你的代码的效率。你的审查员将对你代码提供反馈,你将有机会编辑你的代码并应用修复。
一旦你的 PR 准备好成为代码库的一部分,核心团队成员将对其进行合并。
贡献工作流程#
完整的贡献工作流程说明。[1]
核心开发者工作流程#
为了帮助你了解你在提交 pull 请求后核心开发者的审查流程,这里有一个指南概述了常规流程(具体流程可能因我们的存储库而异)。以下是 Jupyter notebook 4.x
的示例
通常,除非它们只影响反向移植分支,否则 Pull 请求针对 master
。如果 PR 影响 master 并且应该反向移植,则一般流程是
使用下一个反向移植版本(4.3)的里程碑标记 PR
合并到 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
提交错误#
在使用笔记本时,你可能会遇到一个错误,它表现为意外的行为。如果是这样,我们鼓励你在 GitHub 上公开问题。为了让开发人员和用户更容易浏览问题,我们要求你在提交问题之前执行以下步骤。
在 StackOverflow 和现有的 GitHub 问题中进行搜索,以确保该问题尚未被其他用户报告。如果是这样,如果你认为有价值,请在现有问题上提供你的意见。
准备一小段自包含的代码片段,以便其他人可以重现你遇到的问题。
准备有关你在其中执行代码的环境的信息,以帮助调试问题。在提交错误时,你需要提供有关 Python 版本、Jupyter 版本、操作系统和正在使用的浏览器的信息。你还可以使用
pip list
或conda list
和grep
来识别与你正在提交的问题相关的库的版本。准备一个简单的测试,概述代码的预期行为或对预期行为的描述。
准备一个解释,说明为什么当前行为不受欢迎以及它应该是什么。
报告漏洞#
如果你认为你在 Jupyter 项目中发现了安全漏洞,请将其报告给 [email protected]
。如果你希望加密你的安全报告,可以使用 此 PGP 公钥。