报告错误和请求功能

重要

请报告安全问题 only 发送至security@djangoproject.com。这是一个私人列表,只对长期、高度信任的Django开发人员开放,其档案不公开。有关详细信息,请参阅 our security policies .

否则,在报告错误或请求 ticket tracker ,考虑以下几点:

  • 检查是否有人尚未提交Bug或功能请求 searching 或运行 custom queries 在检票机里。

  • 不要使用票据系统提出支持问题。使用django用户列表或 #django IRC频道。

  • 在未就此达成共识的情况下,不要重新讨论已标记为“无法修复”的问题 Django Forum 或|Django-Developers|列表。

  • 不要使用票证追踪器进行冗长的讨论,因为他们很可能会迷路。如果某张门票有争议,请将讨论转移到 Django Forum 或|Django-Developers|列表。

报告错误

写得好的错误报告是 难以置信地 乐于助人。但是,在使用任何bug跟踪系统时都会有一定的开销,因此感谢您帮助我们尽可能地保持跟踪系统的实用性。特别地:

  • Do 阅读 FAQ 看看你的问题是否是一个众所周知的问题。

  • Do 询问django用户或 #django 第一 如果你不确定你看到的是否是一个错误。

  • Do 编写完整的,可重复的,具体的错误报告。您必须包含对问题的清晰、简明的描述,以及一组复制该问题的说明。添加尽可能多的调试信息:代码片段、测试用例、异常回溯、屏幕截图等。一个好的小测试用例是报告错误的最佳方法,因为它为我们提供了一个快速确认错误的有用方法。

  • 不要 发布到| django developers |只是为了宣布您已经提交了一个bug报告。另一个社区成员正在追踪他们的更新,我们正在关注他们的更新。

要在创建票据后了解其生命周期,请参阅 试用票 .

报告用户界面错误和功能

如果您的bug或特性请求涉及到任何可视的东西,那么需要遵循一些额外的指导原则:

  • 在您的票证中包括屏幕截图,这些截图相当于最小测试用例的视觉效果。炫耀问题,而不是你对浏览器所做的疯狂定制。

  • 如果使用静止图像很难显示问题,请考虑捕获 简明的 尖叫声如果软件允许,只捕获屏幕的相关区域。

  • 如果您提供的补丁可以改变Django的用户界面的外观或行为,那么您 must 附着在前面 and 截图/截图之后。缺少这些的机票很难让分拣人员快速评估。

  • 截图并不能免除你其他优秀的报告实践。确保包含URL、代码片段和关于如何重现屏幕截图中可见行为的分步说明。

  • 确保在票据上设置ui/ux标志,以便相关方可以找到您的票据。

请求功能

我们一直在努力使django变得更好,您的功能请求是其中的一个关键部分。以下是一些关于如何最有效地提出请求的提示:

  • 确保该特性实际上需要对Django的核心进行更改。如果您的想法可以开发为一个独立的应用程序或模块-例如,您想支持另一个数据库引擎-我们可能会建议您独立开发它。然后,如果您的项目获得了足够的社区支持,我们可以考虑将其包含在Django中。

  • 首先在上请求该功能 Django Forum 或者|Django-Developers|列表,不在票证跟踪器中。如果它在邮件列表上,它会被更仔细地阅读。对于大规模的功能请求,这一点更加重要。我们喜欢在实际工作之前讨论Django核心的任何重大变化。

  • 清楚而简明地描述缺少的特性是什么,以及您希望如何实现它。如果可能,包括示例代码(非功能正常)。

  • 解释 why 你喜欢这个功能。解释一个最小的用例将有助于其他人理解它的适用范围,以及是否已经有其他方法来实现同样的事情。

如果对该功能达成了一致意见,那么创建票据是合适的。在票证说明中包括讨论的链接。

与大多数开源项目一样,代码也会说话。如果您愿意自己为特性编写代码,或者更好的是,如果您已经编写了,那么它就更有可能被接受。在GitHub上分叉Django,创建一个特性分支,并向我们展示您的工作!

参见: 记录新功能 .

我们如何做决定

只要有可能,我们都会争取达成大致的共识。为此,我们通常会在|Django-Developers|或Django论坛上就某个功能进行非正式投票。在这些投票中,我们遵循由Apache发明的投票风格,并在Python本身上使用,其中投票以+1、+0、-0或-1的形式给出。粗略地翻译过来,这些投票意味着:

  • +1:“我喜欢这个想法,并且我坚定地致力于它。”

  • +0:“我觉得没问题。”

  • -0:“我不兴奋,但我不会挡道。”

  • -1:“我强烈反对,如果看到这个想法变成现实,我会非常不高兴。”

虽然这些投票是非正式的,但他们将被非常认真地对待。在适当的投票期之后,如果达成明显的共识,我们将跟踪投票结果。

然而,共识并不总是可能的。如果不能达成共识,或者如果达成共识的讨论在没有具体决定的情况下失败,则可以将决定推迟到 steering council

在内部,指导委员会将使用相同的投票机制。符合以下条件的提案将被视为获得通过:

  • 督导委员会成员至少有三票投“+1”票。

  • 指导委员会的任何成员都不会投“-1”票。

投票应在一周内提交。

由于这一过程允许任何指导委员会成员否决一项提案,“-1”投票应伴随着解释如何将“-1”至少转换为“+0”。

有关技术问题的投票应在|Django-Developers|邮件列表或 Django Forum