常见问题解答:贡献代码

如何开始向Django提供代码?

谢谢你的邀请!我们已经为这个问题写了一份完整的文件。它的名字叫 Contributing to Django .

几周前我在票务系统提交了一个错误修复。你为什么忽略我的补丁?

别担心:我们不会忽视你的!

重要的是要理解“一张票被忽略”和“一张票还没有被关注”之间的区别。Django的票系统包含数百张开放的票,对最终用户功能有不同程度的影响,Django的开发人员必须审查和确定优先级。

除此之外,在姜哥工作的人都是志愿者。因此,我们必须在框架上工作的时间是有限的,根据我们的业余时间,每周都会有所不同。如果我们很忙的话,我们可能就不能像我们希望的那样花那么多时间在 Django 。

确保票不会在签入过程中挂断的最好方法是使其非常容易,即使对于不熟悉代码区域的人来说,也要理解问题并验证解决方案:

  • 是否有关于如何重现错误的明确说明?如果这涉及到依赖项(如枕头)、控制模块或特定数据库,那么这些指令是否足够清楚,即使对于不熟悉它的人来说也是如此?

  • 如果票上有几个补丁,是否清楚每个补丁的作用,哪些补丁可以忽略,哪些补丁很重要?

  • 补丁是否包括单元测试?如果没有,有没有一个非常清楚的解释为什么没有?测试简洁地表达了问题所在,并表明补丁确实修复了问题。

如果你的补丁没有机会被包括在Django中,我们不会忽视它——我们只会关闭门票。所以,如果你的票还开着,这并不意味着我们忽略了你;这只是意味着我们还没有时间看它。

什么时候以及如何提醒团队我关心的补丁?

向邮件列表发送礼貌、适时的消息是引起注意的一种方法。为了确定正确的时间,你需要密切注意日程安排。如果你在发布截止日期前发布你的消息,你就不可能得到你需要的那种关注。

温和的IRC提醒也可以工作——同样,如果可能的话,战略性地定时。例如,在一次bug冲刺中是一个非常好的时间。

另一种获得吸引力的方法是将几张相关的门票放在一起。当有人坐下来检查他们有一段时间没有接触过的区域中的错误时,可能需要几分钟来记住该区域代码如何工作的所有细节。如果您将几个小的错误修复程序一起收集到一个主题相似的组中,您将成为一个有吸引力的目标,因为了解某个代码区域的速度的成本可能会分摊到多个票证上。

请不要亲自给任何人发电子邮件,也不要反复提出相同的问题。这种行为不会给你带来任何额外的关注--当然也不会是为了解决你的问题而需要的关注。

但我已经提醒过你好几次了,你一直忽视我的补丁!

说真的-我们不会忽视你。如果你的补丁没有机会进入 Django ,我们将关闭门票。对于所有其他的门票,我们需要优先考虑我们的努力,这意味着一些门票将先于其他。

用于确定错误修复优先级的标准之一是可能受给定错误影响的人数。有可能影响许多人的bug通常比边缘情况的bug优先。

错误可能会被忽略一段时间的另一个原因是,如果该错误是更大问题的症状。虽然我们可以花时间编写、测试和应用许多小补丁,但有时正确的解决方案是重新构建。如果已经建议或正在对特定组件进行重建或重构,您可能会发现影响该组件的错误不会得到太多关注。同样,这是一个对稀缺资源进行优先排序的问题。通过专注于重建,我们可以一次关闭所有的小错误,并有望防止其他小错误在未来出现。

不管是什么原因,请记住,虽然您可能会定期遇到某个特定的bug,但并不一定意味着每个Django用户都会遇到同一个bug。不同的用户以不同的方式使用Django,在不同的条件下强调代码的不同部分。当我们评估相对优先级时,我们通常会考虑整个社区的需求,而不是优先考虑对某个特定用户的影响。这并不意味着我们认为你的问题不重要——只是在我们有限的时间内,我们总是错误地让10个人快乐,而不是让一个人快乐。

我确信我的机票是百分之百完美的,我可以自己把它标记为“准备办理登机手续”吗?

抱歉,不行。多一双眼睛盯着一张票总是更好的。如果你看不到第二双眼睛,请看上面的问题。