new-contributors.txt 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. ===========================
  2. Advice for new contributors
  3. ===========================
  4. New contributor and not sure what to do? Want to help but just don't know how
  5. to get started? This is the section for you.
  6. First steps
  7. -----------
  8. Start with these easy tasks to discover Django's development process.
  9. * **Triage tickets**
  10. If an `unreviewed ticket`_ reports a bug, try and reproduce it. If you
  11. can reproduce it and it seems valid, make a note that you confirmed the bug
  12. and accept the ticket. Make sure the ticket is filed under the correct
  13. component area. Consider writing a patch that adds a test for the bug's
  14. behavior, even if you don't fix the bug itself. See more at
  15. :ref:`how-can-i-help-with-triaging`
  16. * **Look for tickets that are accepted and review patches to build familiarity
  17. with the codebase and the process**
  18. Mark the appropriate flags if a patch needs docs or tests. Look through the
  19. changes a patch makes, and keep an eye out for syntax that is incompatible
  20. with older but still supported versions of Python. Run the tests and make
  21. sure they pass on your system. Where possible and relevant, try them out on
  22. a database other than SQLite. Leave comments and feedback!
  23. * **Keep old patches up to date**
  24. Oftentimes the codebase will change between a patch being submitted and the
  25. time it gets reviewed. Make sure it still applies cleanly and functions as
  26. expected. Simply updating a patch is both useful and important! See more on
  27. :doc:`writing-code/submitting-patches`.
  28. * **Write some documentation**
  29. Django's documentation is great but it can always be improved. Did you find
  30. a typo? Do you think that something should be clarified? Go ahead and
  31. suggest a documentation patch! See also the guide on
  32. :doc:`writing-documentation`, in particular the tips for
  33. :ref:`improving-the-documentation`.
  34. .. note::
  35. The `reports page`_ contains links to many useful Trac queries, including
  36. several that are useful for triaging tickets and reviewing patches as
  37. suggested above.
  38. .. _reports page: https://code.djangoproject.com/wiki/Reports
  39. .. _unreviewed ticket: https://code.djangoproject.com/query?status=!closed&stage=Unreviewed
  40. Guidelines
  41. ----------
  42. As a newcomer on a large project, it's easy to experience frustration. Here's
  43. some advice to make your work on Django more useful and rewarding.
  44. * **Pick a subject area that you care about, that you are familiar with, or
  45. that you want to learn about**
  46. You don't already have to be an expert on the area you want to work on; you
  47. become an expert through your ongoing contributions to the code.
  48. * **Analyze tickets' context and history**
  49. Trac isn't an absolute; the context is just as important as the words.
  50. When reading Trac, you need to take into account who says things, and when
  51. they were said. Support for an idea two years ago doesn't necessarily mean
  52. that the idea will still have support. You also need to pay attention to who
  53. *hasn't* spoken -- for example, if a core team member hasn't been recently
  54. involved in a discussion, then a ticket may not have the support required to
  55. get into trunk.
  56. * **Start small**
  57. It's easier to get feedback on a little issue than on a big one. See the
  58. `easy pickings`_.
  59. * **If you're going to engage in a big task, make sure that your idea has
  60. support first**
  61. This means getting someone else to confirm that a bug is real before you fix
  62. the issue, and ensuring that the core team supports a proposed feature
  63. before you go implementing it.
  64. * **Be bold! Leave feedback!**
  65. Sometimes it can be scary to put your opinion out to the world and say "this
  66. ticket is correct" or "this patch needs work", but it's the only way the
  67. project moves forward. The contributions of the broad Django community
  68. ultimately have a much greater impact than that of the core developers. We
  69. can't do it without YOU!
  70. * **Err on the side of caution when marking things Ready For Check-in**
  71. If you're really not certain if a ticket is ready, don't mark it as
  72. such. Leave a comment instead, letting others know your thoughts. If you're
  73. mostly certain, but not completely certain, you might also try asking on IRC
  74. to see if someone else can confirm your suspicions.
  75. * **Wait for feedback, and respond to feedback that you receive**
  76. Focus on one or two tickets, see them through from start to finish, and
  77. repeat. The shotgun approach of taking on lots of tickets and letting some
  78. fall by the wayside ends up doing more harm than good.
  79. * **Be rigorous**
  80. When we say ":pep:`8`, and must have docs and tests", we mean it. If a patch
  81. doesn't have docs and tests, there had better be a good reason. Arguments
  82. like "I couldn't find any existing tests of this feature" don't carry much
  83. weight--while it may be true, that means you have the extra-important job of
  84. writing the very first tests for that feature, not that you get a pass from
  85. writing tests altogether.
  86. .. _easy pickings: https://code.djangoproject.com/query?status=!closed&easy=1
  87. .. _new-contributors-faq:
  88. FAQ
  89. ---
  90. 1. **This ticket I care about has been ignored for days/weeks/months! What can
  91. I do to get it committed?**
  92. First off, it's not personal. Django is entirely developed by volunteers
  93. (even the core developers), and sometimes folks just don't have time. The
  94. best thing to do is to send a gentle reminder to the django-developers
  95. mailing list asking for review on the ticket, or to bring it up in the
  96. #django-dev IRC channel.
  97. 2. **I'm sure my ticket is absolutely 100% perfect, can I mark it as RFC
  98. myself?**
  99. Short answer: No. It's always better to get another set of eyes on a
  100. ticket. If you're having trouble getting that second set of eyes, see
  101. question 1, above.
  102. 3. **My ticket has been in DDN forever! What should I do?**
  103. Design Decision Needed requires consensus about the right solution. At the
  104. very least it needs consensus among the core developers, and ideally it has
  105. consensus from the community as well. The best way to accomplish this is to
  106. start a thread on the django-developers mailing list, and for very complex
  107. issues to start a wiki page summarizing the problem and the possible
  108. solutions.