bugs-and-features.txt 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. ======================================
  2. Reporting bugs and requesting features
  3. ======================================
  4. Before reporting a bug or requesting a new feature please consider these
  5. general points:
  6. * Check that someone hasn't already filed the bug or feature request by
  7. `searching`_ or running `custom queries`_ in the ticket tracker.
  8. * Don't use the ticket system to ask support questions. Use the
  9. `django-users`_ list, or the `#django`_ IRC channel for that.
  10. * Don't reopen issues that have been marked "wontfix" by a core developer.
  11. This mark means that the decision has been made that we can't or won't fix
  12. this particular issue. If you're not sure why, please ask
  13. on `django-developers`_.
  14. * Don't use the ticket tracker for lengthy discussions, because they're
  15. likely to get lost. If a particular ticket is controversial, please move
  16. discussion to `django-developers`_.
  17. .. _reporting-bugs:
  18. Reporting bugs
  19. --------------
  20. Well-written bug reports are *incredibly* helpful. However, there's a certain
  21. amount of overhead involved in working with any bug tracking system so your
  22. help in keeping our ticket tracker as useful as possible is appreciated. In
  23. particular:
  24. * **Do** read the :doc:`FAQ </faq/index>` to see if your issue might
  25. be a well-known question.
  26. * **Do** ask on `django-users`_ *first* if you're not sure if what you're
  27. seeing is a bug.
  28. * **Do** write complete, reproducible, specific bug reports. Include as
  29. much information as you possibly can, complete with code snippets, test
  30. cases, etc. This means including a clear, concise description of the
  31. problem, and a clear set of instructions for replicating the problem.
  32. A minimal example that illustrates the bug in a nice small test case
  33. is the best possible bug report.
  34. * **Don't** post to django-developers just to announce that you have filed
  35. a bug report. All the tickets are mailed to another list
  36. (`django-updates`_), which is tracked by developers and interested
  37. community members; we see them as they are filed.
  38. To understand the lifecycle of your ticket once you have created it, refer to
  39. :doc:`triaging-tickets`.
  40. .. _django-updates: http://groups.google.com/group/django-updates
  41. .. _reporting-security-issues:
  42. Reporting security issues
  43. -------------------------
  44. .. Important::
  45. Please report security issues **only** to security@djangoproject.com.
  46. This is a private list only open to long-time, highly trusted Django
  47. developers, and its archives are not publicly readable.
  48. In the event of a confirmed vulnerability in Django itself, we will take the
  49. following actions:
  50. * Acknowledge to the reporter that we've received the report and that a
  51. fix is forthcoming. We'll give a rough timeline and ask the reporter
  52. to keep the issue confidential until we announce it.
  53. * Focus on developing a fix as quickly as possible and produce patches
  54. against the current and two previous releases.
  55. * Determine a go-public date for announcing the vulnerability and the fix.
  56. To try to mitigate a possible "arms race" between those applying the
  57. patch and those trying to exploit the hole, we will not announce
  58. security problems immediately.
  59. * Pre-notify third-party distributors of Django ("vendors"). We will send
  60. these vendor notifications through private email which will include
  61. documentation of the vulnerability, links to the relevant patch(es), and
  62. a request to keep the vulnerability confidential until the official
  63. go-public date.
  64. * Publicly announce the vulnerability and the fix on the pre-determined
  65. go-public date. This will probably mean a new release of Django, but
  66. in some cases it may simply be patches against current releases.
  67. Requesting features
  68. -------------------
  69. We're always trying to make Django better, and your feature requests are a key
  70. part of that. Here are some tips on how to make a request most effectively:
  71. * First request the feature on `django-developers`_, not in the ticket
  72. tracker. It'll get read more closely if it's on the mailing list.
  73. * Describe clearly and concisely what the missing feature is and how you'd
  74. like to see it implemented. Include example code (non-functional is OK)
  75. if possible.
  76. * Explain *why* you'd like the feature. In some cases this is obvious, but
  77. since Django is designed to help real developers get real work done,
  78. you'll need to explain it, if it isn't obvious why the feature would be
  79. useful.
  80. * Don't use the ticket system to make large-scale feature requests.
  81. We like to discuss any big changes to Django's core on the
  82. `django-developers`_ list before actually working on them.
  83. As with most open-source projects, code talks. If you are willing to write the
  84. code for the feature yourself or if (even better) you've already written it,
  85. it's much more likely to be accepted. If it's a large feature that might need
  86. multiple developers, we're always happy to give you an experimental branch in
  87. our repository; see the :doc:`writing-code/branch-policy`.
  88. To understand the lifecycle of your ticket once you have created it, refer to
  89. :doc:`triaging-tickets`.
  90. See also: :ref:`documenting-new-features`.
  91. .. _how-we-make-decisions:
  92. How we make decisions
  93. ---------------------
  94. Whenever possible, we strive for a rough consensus. To that end, we'll often
  95. have informal votes on `django-developers`_ about a feature. In these votes we
  96. follow the voting style invented by Apache and used on Python itself, where
  97. votes are given as +1, +0, -0, or -1. Roughly translated, these votes mean:
  98. * +1: "I love the idea and I'm strongly committed to it."
  99. * +0: "Sounds OK to me."
  100. * -0: "I'm not thrilled, but I won't stand in the way."
  101. * -1: "I strongly disagree and would be very unhappy to see the idea turn
  102. into reality."
  103. Although these votes on django-developers are informal, they'll be taken very
  104. seriously. After a suitable voting period, if an obvious consensus arises
  105. we'll follow the votes.
  106. However, consensus is not always possible. If consensus cannot be reached, or
  107. if the discussion towards a consensus fizzles out without a concrete decision,
  108. we use a more formal process.
  109. Any :doc:`core committer</internals/committers>` may call for a formal vote
  110. using the same voting mechanism above. A proposition will be considered carried
  111. by the core team if:
  112. * There are three "+1" votes from members of the core team.
  113. * There is no "-1" vote from any member of the core team.
  114. * The :ref:`BDFLs<django-bdfls>` haven't stepped in and executed their
  115. positive or negative veto.
  116. When calling for a vote, the caller should specify a deadline by which
  117. votes must be received. One week is generally suggested as the minimum
  118. amount of time.
  119. Since this process allows any core committer to veto a proposal, any "-1"
  120. votes (or BDFL vetos) should be accompanied by an explanation that explains
  121. what it would take to convert that "-1" into at least a "+0".
  122. Whenever possible, these formal votes should be announced and held in
  123. public on the `django-developers`_ mailing list. However, overly sensitive
  124. or contentious issues -- including, most notably, votes on new core
  125. committers -- may be held in private.
  126. .. _searching: http://code.djangoproject.com/search
  127. .. _`custom queries`: https://code.djangoproject.com/query
  128. .. _django-developers: http://groups.google.com/group/django-developers
  129. .. _django-users: http://groups.google.com/group/django-users
  130. .. _`#django`: irc://irc.freenode.net/django