Reporting bugs and requesting featuresÂś
Important
Please report security issues only to security@djangoproject.com. This is a private list only open to long-time, highly trusted Django developers, and its archives are not public. For further details, please see our security policies.
Otherwise, before reporting a bug or requesting a new feature, please consider these general points:
- Check that someone hasnât already filed the bug or feature request by searching or running custom queries in the ticket tracker.
- Donât use the ticket system to ask support questions. Use the django-users list or the #django IRC channel for that.
- Donât reopen issues that have been marked âwontfixâ by a core developer. This mark means that the decision has been made that we canât or wonât fix this particular issue. If youâre not sure why, please ask on django-developers.
- Donât use the ticket tracker for lengthy discussions, because theyâre likely to get lost. If a particular ticket is controversial, please move the discussion to django-developers.
Reporting bugsÂś
Well-written bug reports are incredibly helpful. However, thereâs a certain amount of overhead involved in working with any bug tracking system so your help in keeping our ticket tracker as useful as possible is appreciated. In particular:
- Do read the FAQ to see if your issue might be a well-known question.
- Do ask on django-users or #django first if youâre not sure if what youâre seeing is a bug.
- Do write complete, reproducible, specific bug reports. You must include a clear, concise description of the problem, and a set of instructions for replicating it. Add as much debug information as you can: code snippets, test cases, exception backtraces, screenshots, etc. A nice small test case is the best way to report a bug, as it gives us an easy way to confirm the bug quickly.
- Donât post to django-developers just to announce that you have filed a bug report. All the tickets are mailed to another list, django-updates, which is tracked by developers and interested community members; we see them as they are filed.
To understand the lifecycle of your ticket once you have created it, refer to Triaging tickets.
Reporting user interface bugs and featuresÂś
If your bug or feature request touches on anything visual in nature, there are a few additional guidelines to follow:
- Include screenshots in your ticket which are the visual equivalent of a minimal testcase. Show off the issue, not the crazy customizations youâve made to your browser.
- If the issue is difficult to show off using a still image, consider capturing a brief screencast. If your software permits it, capture only the relevant area of the screen.
- If youâre offering a patch which changes the look or behavior of Djangoâs UI, you must attach before and after screenshots/screencasts. Tickets lacking these are difficult for triagers and core developers to assess quickly.
- Screenshots donât absolve you of other good reporting practices. Make sure to include URLs, code snippets, and step-by-step instructions on how to reproduce the behavior visible in the screenshots.
- Make sure to set the UI/UX flag on the ticket so interested parties can find your ticket.
Requesting featuresÂś
Weâre always trying to make Django better, and your feature requests are a key part of that. Here are some tips on how to make a request most effectively:
- Make sure the feature actually requires changes in Djangoâs core. If your idea can be developed as an independent application or module â for instance, you want to support another database engine â weâll probably suggest that you to develop it independently. Then, if your project gathers sufficient community support, we may consider it for inclusion in Django.
- First request the feature on the django-developers list, not in the ticket tracker. Itâll get read more closely if itâs on the mailing list. This is even more important for large-scale feature requests. We like to discuss any big changes to Djangoâs core on the mailing list before actually working on them.
- Describe clearly and concisely what the missing feature is and how youâd like to see it implemented. Include example code (non-functional is OK) if possible.
- Explain why youâd like the feature. In some cases this is obvious, but since Django is designed to help real developers get real work done, youâll need to explain it, if it isnât obvious why the feature would be useful.
If core developers agree on the feature, then itâs appropriate to create a ticket. Include a link the discussion on django-developers in the ticket description.
As with most open-source projects, code talks. If you are willing to write the code for the feature yourself or, even better, if youâve already written it, itâs much more likely to be accepted. Just fork Django on GitHub, create a feature branch, and show us your work!
See also: Documenting new features.
How we make decisionsÂś
Whenever possible, we strive for a rough consensus. To that end, weâll often have informal votes on django-developers about a feature. In these votes we follow the voting style invented by Apache and used on Python itself, where votes are given as +1, +0, -0, or -1. Roughly translated, these votes mean:
- +1: âI love the idea and Iâm strongly committed to it.â
- +0: âSounds OK to me.â
- -0: âIâm not thrilled, but I wonât stand in the way.â
- -1: âI strongly disagree and would be very unhappy to see the idea turn into reality.â
Although these votes on django-developers are informal, theyâll be taken very seriously. After a suitable voting period, if an obvious consensus arises weâll follow the votes.
However, consensus is not always possible. If consensus cannot be reached, or if the discussion towards a consensus fizzles out without a concrete decision, any core team member may defer the decision to the technical board.
Internally, the technical board will use the same voting mechanism. A proposition will be considered carried if:
- There are at least three â+1â votes from members of the technical board.
- There is no â-1â vote from any member of the technical board.
Votes should be submitted within a week.
Since this process allows any technical board member to veto a proposal, a â-1â vote should be accompanied by an explanation of what it would take to convert that â-1â into at least a â+0â.
Votes on technical matters should be announced and held in public on the django-developers mailing list.