Reporting bugs and requesting features

Important

Please report security issues only tosecurity@djangoproject.com. This is a private list only open tolong-time, highly trusted Django developers, and its archives arenot public. For further details, please see our securitypolicies.

Otherwise, before reporting a bug or requesting a new feature on theticket tracker, consider these points:

  • Check that someone hasn’t already filed the bug or feature request bysearching or running custom queries in the ticket tracker.
  • Don’t use the ticket system to ask support questions. Use thedjango-users list or the #django IRC channel for that.
  • Don’t reopen issues that have been marked “wontfix” without finding consensusto do so on django-developers.
  • Don’t use the ticket tracker for lengthy discussions, because they’relikely to get lost. If a particular ticket is controversial, please move thediscussion to django-developers.

Reporting bugs

Well-written bug reports are incredibly helpful. However, there’s a certainamount of overhead involved in working with any bug tracking system so yourhelp in keeping our ticket tracker as useful as possible is appreciated. Inparticular:

  • Do read the FAQ to see if your issue mightbe a well-known question.
  • Do ask on django-users or #djangofirst if you’re not sure ifwhat you’re seeing is a bug.
  • Do write complete, reproducible, specific bug reports. You mustinclude a clear, concise description of the problem, and a set ofinstructions for replicating it. Add as much debug information as you can:code snippets, test cases, exception backtraces, screenshots, etc. A nicesmall test case is the best way to report a bug, as it gives us ahelpful way to confirm the bug quickly.
  • Don’t post to django-developers only to announce that you have filed abug report. All the tickets are mailed to another list, django-updates,which is tracked by developers and interested community members; we see themas they are filed.To understand the lifecycle of your ticket once you have created it, refer toTriaging tickets.

Reporting user interface bugs and features

If your bug or feature request touches on anything visual in nature, thereare a few additional guidelines to follow:

  • Include screenshots in your ticket which are the visual equivalent of aminimal testcase. Show off the issue, not the crazy customizationsyou’ve made to your browser.
  • If the issue is difficult to show off using a still image, considercapturing a brief screencast. If your software permits it, capture onlythe relevant area of the screen.
  • If you’re offering a patch which changes the look or behavior of Django’sUI, you must attach before and after screenshots/screencasts.Tickets lacking these are difficult for triagers to assess quickly.
  • Screenshots don’t absolve you of other good reporting practices. Make sureto include URLs, code snippets, and step-by-step instructions on how toreproduce the behavior visible in the screenshots.
  • Make sure to set the UI/UX flag on the ticket so interested parties canfind your ticket.

Requesting features

We’re always trying to make Django better, and your feature requests are a keypart 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 youridea can be developed as an independent application or module — forinstance, you want to support another database engine — we’ll probablysuggest that you to develop it independently. Then, if your projectgathers sufficient community support, we may consider it for inclusion inDjango.
  • First request the feature on the django-developers list, not in theticket 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 todiscuss any big changes to Django’s core on the mailing list beforeactually working on them.
  • Describe clearly and concisely what the missing feature is and how you’dlike 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, butsince 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 beuseful.If there’s a consensus agreement on the feature, then it’s appropriate tocreate a ticket. Include a link the discussion on django-developers in theticket description.

As with most open-source projects, code talks. If you are willing to write thecode for the feature yourself or, even better, if you’ve already written it,it’s much more likely to be accepted. Fork Django on GitHub, create a featurebranch, 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 oftenhave informal votes on django-developers about a feature. In these votes wefollow the voting style invented by Apache and used on Python itself, wherevotes 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 turninto reality.”Although these votes on django-developers are informal, they’ll be taken veryseriously. After a suitable voting period, if an obvious consensus arises we’llfollow the votes.

However, consensus is not always possible. If consensus cannot be reached, orif the discussion towards a consensus fizzles out without a concrete decision,the decision may be deferred to the technical board.

Internally, the technical board will use the same voting mechanism. Aproposition 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 toconvert that “-1” into at least a “+0”.

Votes on technical matters should be announced and held in public on thedjango-developers mailing list.