FAQ:贡献代码

如何为 Django 贡献代码?

感谢反馈!我们已经为这个问题编写了一个详细的文档。参见:doc:Contributing to Django 1.

我几周之前提交了一个工单系统 bug 的修复。为什么忽略我的提议?

别担心:我们不会忽略你!

重要的是要明白,“工单被忽略”和“工单还没有被查看”是有区别的。 Django 的工单系统包含数百个打开的工单,对最终用户功能有不同程度的影响,Django 的开发人员必须检查并确定优先级。

另外:所有的 Django 工作都是由志愿者完成的。因此,我们花在这个框架上的总时间是有限的,它取决于我们的空闲时间,并且每周都会有所不同。如果我们很忙,我们可能无法在 Django 上花费太多的时间,尽管我们不愿如此。

确保工单在签入过程中不被挂起的最佳方法是让它所描述的问题通俗易懂,即便是对相关领域并不熟悉的人也能理解并修复问题:

  • 是否有明确的用以重现 bug 的说明? 是否触及依赖项(如Pillow),contrib 模块或特定数据库?这些说明对于不熟悉它的人是否也足够明确?
  • 如果工单附有多个补充,是否能够明确每个补充是做什么的、哪些补充可以忽略,哪些补充很重要?
  • 补丁是否包括单元测试?如果没有,那么是否可以解释清楚原因?测试可以简洁地表达了问题所在,并显示补丁真的修复了问题。

如果你的补丁没有被加入到 Django,并不意味我们忽视它了——我们只是关闭这个工单。所以如果你的工单一直处于开启状态,也并不意味着我们忽视了你;这只是意味着我们还没来得及看它。

何时以及如何提醒团队我所关注的补丁?

一种获得关注的方式是向邮件列表发送一个礼貌的,适时的消息。为了确保时间合适,你需要留意时间表。如果你在发布截止日期之前发送消息,则不太可能获得您需要的关注。

温和的 IRC 提醒也可以发挥作用——还是如此:如果可能的话,选取一个合适的时间。 例如,在修复 bug 的冲刺期间就是一个不错的时机。

Another way to get traction is to pull several related tickets together. When someone sits down to review a bug in an area they haven't touched for a while, it can take a few minutes to remember all the fine details of how that area of code works. If you collect several minor bug fixes together into a similarly themed group, you make an attractive target, as the cost of coming up to speed on an area of code can be spread over multiple tickets.

Please refrain from emailing anyone personally or repeatedly raising the same issue over and over again. This sort of behavior will not gain you any additional attention -- certainly not the attention that you need in order to get your issue addressed.

但是我已经提醒你好几遍了,你依然继续忽略我的补丁!

说真的 - 我们不会无视你的。 如果你的补丁没有包含在 Django 的工单,我们将关闭工单。 对于所有其他的工单,我们需要优先考虑我们的努力,这意味着一些工单将在其他人之前解决。

确定 bug 修复优先级的标准之一是对于特定 bug 而言,可能会受到影响的人数。有可能影响许多人的 bug 一般会优先于那些边缘情况下的 bug。

如果这个 bug 是更大问题的症状的话,另一个原因就是会忽略一段时间这个 bug 。我们可以花些时间来写、测试和应用一些小补丁,有时候正确的解决方案是需要重新建立的。如果重建或重构一个特殊组建,那需要建议或确是要做这件事,你也许发现许多 bug 影响的组建没有得到更多的重视。再说,这也是一件资源优先级的问题。在考虑重建的过程中,我们可以一次性关闭所有小 bug ,并且在以后希望防止其它小 bug 的出现。

不管什么原因,请记住,你可能会经常碰到一个特定的 bug,但并不一定每个 Django 用户都会遇到同样的 bug。 不同的用户以不同的方式使用 Django,在不同的条件下执行代码的不同部分。 我们评估相对优先事项时,会考虑整个社区的需求,而不是优先考虑对某个特定用户的影响。 当然,这并不意味着我们认为你的问题不重要,只是在有限的可用时间内,我们总是希望让 10 个人的问题得到解决,而不是只解决 1 个人的问题。

我肯定我的工单百分之100绝对完成了,那么就能说我把这个工单认定为 ”通过批准" 了吗?

抱歉,不是这样的。在工单上得到更多的关注总是更好的事情。如果你在获得额外关注上遇到问题,那么回顾一下上面的这些问题。