1. ==================================
    
  2. Organization of the Django Project
    
  3. ==================================
    
  4. 
    
  5. Principles
    
  6. ==========
    
  7. 
    
  8. The Django Project is managed by a team of volunteers pursuing three goals:
    
  9. 
    
  10. - Driving the development of the Django web framework,
    
  11. - Fostering the ecosystem of Django-related software,
    
  12. - Leading the Django community in accordance with the values described in the
    
  13.   `Django Code of Conduct`_.
    
  14. 
    
  15. The Django Project isn't a legal entity. The `Django Software Foundation`_, a
    
  16. non-profit organization, handles financial and legal matters related to the
    
  17. Django Project. Other than that, the Django Software Foundation lets the
    
  18. Django Project manage the development of the Django framework, its ecosystem
    
  19. and its community.
    
  20. 
    
  21. .. _Django Code of Conduct: https://www.djangoproject.com/conduct/
    
  22. .. _Django Software Foundation: https://www.djangoproject.com/foundation/
    
  23. 
    
  24. .. _mergers-team:
    
  25. 
    
  26. Mergers
    
  27. =======
    
  28. 
    
  29. Role
    
  30. ----
    
  31. 
    
  32. Mergers_ are a small set of people who merge pull requests to the `Django Git
    
  33. repository`_.
    
  34. 
    
  35. Prerogatives
    
  36. ------------
    
  37. 
    
  38. Mergers hold the following prerogatives:
    
  39. 
    
  40. - Merging any pull request which constitutes a `minor change`_ (small enough
    
  41.   not to require the use of the `DEP process`_). A Merger must not merge a
    
  42.   change primarily authored by that Merger, unless the pull request has been
    
  43.   approved by:
    
  44. 
    
  45.   - another Merger,
    
  46.   - a steering council member,
    
  47.   - a member of the `triage & review team`_, or
    
  48.   - a member of the `security team`_.
    
  49. 
    
  50. - Initiating discussion of a minor change in the appropriate venue, and request
    
  51.   that other Mergers refrain from merging it while discussion proceeds.
    
  52. - Requesting a vote of the steering council regarding any minor change if, in
    
  53.   the Merger's opinion, discussion has failed to reach a consensus.
    
  54. - Requesting a vote of the steering council when a `major change`_ (significant
    
  55.   enough to require the use of the `DEP process`_) reaches one of its
    
  56.   implementation milestones and is intended to merge.
    
  57. 
    
  58. .. _`minor change`: https://github.com/django/deps/blob/main/accepted/0010-new-governance.rst#terminology
    
  59. .. _`major change`: https://github.com/django/deps/blob/main/accepted/0010-new-governance.rst#terminology
    
  60. 
    
  61. Membership
    
  62. ----------
    
  63. 
    
  64. `The steering council`_ selects Mergers_ as necessary to maintain their number
    
  65. at a minimum of three, in order to spread the workload and avoid over-burdening
    
  66. or burning out any individual Merger. There is no upper limit to the number of
    
  67. Mergers.
    
  68. 
    
  69. It's not a requirement that a Merger is also a Django Fellow, but the Django
    
  70. Software Foundation has the power to use funding of Fellow positions as a way
    
  71. to make the role of Merger sustainable.
    
  72. 
    
  73. The following restrictions apply to the role of Merger:
    
  74. 
    
  75. - A person must not simultaneously serve as a member of the steering council. If
    
  76.   a Merger is elected to the steering council, they shall cease to be a Merger
    
  77.   immediately upon taking up membership in the steering council.
    
  78. - A person may serve in the roles of Releaser and Merger simultaneously.
    
  79. 
    
  80. The selection process, when a vacancy occurs or when the steering council deems
    
  81. it necessary to select additional persons for such a role, occur as follows:
    
  82. 
    
  83. - Any member in good standing of an appropriate discussion venue, or the Django
    
  84.   Software Foundation board acting with the input of the DSF's Fellowship
    
  85.   committee, may suggest a person for consideration.
    
  86. - The steering council considers the suggestions put forth, and then any member
    
  87.   of the steering council formally nominates a candidate for the role.
    
  88. - The steering council votes on nominees.
    
  89. 
    
  90. Mergers may resign their role at any time, but should endeavor to provide some
    
  91. advance notice in order to allow the selection of a replacement. Termination of
    
  92. the contract of a Django Fellow by the Django Software Foundation temporarily
    
  93. suspends that person's Merger role until such time as the steering council can
    
  94. vote on their nomination.
    
  95. 
    
  96. Otherwise, a Merger may be removed by:
    
  97. 
    
  98. - Becoming disqualified due to election to the steering council.
    
  99. - Becoming disqualified due to actions taken by the Code of Conduct committee
    
  100.   of the Django Software Foundation.
    
  101. - A vote of the steering council.
    
  102. 
    
  103. .. _releasers-team:
    
  104. 
    
  105. Releasers
    
  106. =========
    
  107. 
    
  108. Role
    
  109. ----
    
  110. 
    
  111. Releasers_ are a small set of people who have the authority to upload packaged
    
  112. releases of Django to the `Python Package Index`_, and to the
    
  113. `djangoproject.com`_ website.
    
  114. 
    
  115. Prerogatives
    
  116. ------------
    
  117. 
    
  118. Releasers_ :doc:`build Django releases </internals/howto-release-django>` and
    
  119. upload them to the `Python Package Index`_, and to the `djangoproject.com`_
    
  120. website.
    
  121. 
    
  122. Membership
    
  123. ----------
    
  124. 
    
  125. `The steering council`_ selects Releasers_ as necessary to maintain their number
    
  126. at a minimum of three, in order to spread the workload and avoid over-burdening
    
  127. or burning out any individual Releaser. There is no upper limit to the number
    
  128. of Releasers.
    
  129. 
    
  130. It's not a requirement that a Releaser is also a Django Fellow, but the Django
    
  131. Software Foundation has the power to use funding of Fellow positions as a way
    
  132. to make the role of Releaser sustainable.
    
  133. 
    
  134. A person may serve in the roles of Releaser and Merger simultaneously.
    
  135. 
    
  136. The selection process, when a vacancy occurs or when the steering council deems
    
  137. it necessary to select additional persons for such a role, occur as follows:
    
  138. 
    
  139. - Any member in good standing of an appropriate discussion venue, or the Django
    
  140.   Software Foundation board acting with the input of the DSF's Fellowship
    
  141.   committee, may suggest a person for consideration.
    
  142. - The steering council considers the suggestions put forth, and then any member
    
  143.   of the steering council formally nominates a candidate for the role.
    
  144. - The steering council votes on nominees.
    
  145. 
    
  146. Releasers may resign their role at any time, but should endeavor to provide
    
  147. some advance notice in order to allow the selection of a replacement.
    
  148. Termination of the contract of a Django Fellow by the Django Software
    
  149. Foundation temporarily suspends that person's Releaser role until such time as
    
  150. the steering council can vote on their nomination.
    
  151. 
    
  152. Otherwise, a Releaser may be removed by:
    
  153. 
    
  154. - Becoming disqualified due to actions taken by the Code of Conduct committee
    
  155.   of the Django Software Foundation.
    
  156. - A vote of the steering council.
    
  157. 
    
  158. .. _`Python Package Index`: https://pypi.org/project/Django/
    
  159. .. _djangoproject.com: https://www.djangoproject.com/download/
    
  160. 
    
  161. .. _steering-council:
    
  162. 
    
  163. Steering council
    
  164. ================
    
  165. 
    
  166. Role
    
  167. ----
    
  168. 
    
  169. The steering council is a group of experienced contributors who:
    
  170. 
    
  171. - provide oversight of Django's development and release process,
    
  172. - assist in setting the direction of feature development and releases,
    
  173. - take part in filling certain roles, and
    
  174. - have a tie-breaking vote when other decision-making processes fail.
    
  175. 
    
  176. Their main concern is to maintain the quality and stability of the Django Web
    
  177. Framework.
    
  178. 
    
  179. Prerogatives
    
  180. ------------
    
  181. 
    
  182. The steering council holds the following prerogatives:
    
  183. 
    
  184. - Making a binding decision regarding any question of a technical change to
    
  185.   Django.
    
  186. - Vetoing the merging of any particular piece of code into Django or ordering
    
  187.   the reversion of any particular merge or commit.
    
  188. - Announcing calls for proposals and ideas for the future technical direction
    
  189.   of Django.
    
  190. - Setting and adjusting the schedule of releases of Django.
    
  191. - Selecting and removing mergers and releasers.
    
  192. - Participating in the removal of members of the steering council, when deemed
    
  193.   appropriate.
    
  194. - Calling elections of the steering council outside of those which are
    
  195.   automatically triggered, at times when the steering council deems an election
    
  196.   is appropriate.
    
  197. - Participating in modifying Django's governance (see
    
  198.   :ref:`organization-change`).
    
  199. - Declining to vote on a matter the steering council feels is unripe for a
    
  200.   binding decision, or which the steering council feels is outside the scope of
    
  201.   its powers.
    
  202. - Taking charge of the governance of other technical teams within the Django
    
  203.   open-source project, and governing those teams accordingly.
    
  204. 
    
  205. Membership
    
  206. ----------
    
  207. 
    
  208. `The steering council`_ is an elected group of five experienced contributors
    
  209. who demonstrate:
    
  210. 
    
  211. - A history of substantive contributions to Django or the Django ecosystem.
    
  212.   This history must begin at least 18 months prior to the individual's
    
  213.   candidacy for the Steering Council, and include substantive contributions in
    
  214.   at least two of these bullet points:
    
  215.   - Code contributions on Django projects or major third-party packages in the Django ecosystem
    
  216.   - Reviewing pull requests and/or triaging Django project tickets
    
  217.   - Documentation, tutorials or blog posts
    
  218.   - Discussions about Django on the django-developers mailing list or the Django Forum
    
  219.   - Running Django-related events or user groups
    
  220. 
    
  221. - A history of engagement with the direction and future of Django. This does
    
  222.   not need to be recent, but candidates who have not engaged in the past three
    
  223.   years must still demonstrate an understanding of Django's changes and
    
  224.   direction within those three years.
    
  225. 
    
  226. A new council is elected after each release cycle of Django. The election process
    
  227. works as follows:
    
  228. 
    
  229. #. The steering council directs one of its members to notify the Secretary of the
    
  230.    Django Software Foundation, in writing, of the triggering of the election,
    
  231.    and the condition which triggered it. The Secretary post to the appropriate
    
  232.    venue -- the |django-developers| mailing list and the `Django forum`_ to
    
  233.    announce the election and its timeline.
    
  234. #. As soon as the election is announced, the `DSF Board`_ begin a period of
    
  235.    voter registration. All `individual members of the DSF`_ are automatically
    
  236.    registered and need not explicitly register. All other persons who believe
    
  237.    themselves eligible to vote, but who have not yet registered to vote, may
    
  238.    make an application to the DSF Board for voting privileges. The voter
    
  239.    registration form and roll of voters is maintained by the DSF Board. The DSF
    
  240.    Board may challenge and reject the registration of voters it believes are
    
  241.    registering in bad faith or who it believes have falsified their
    
  242.    qualifications or are otherwise unqualified.
    
  243. #. Registration of voters close one week after the announcement of the
    
  244.    election. At that point, registration of candidates begin. Any qualified
    
  245.    person may register as a candidate. The candidate registration form and
    
  246.    roster of candidates are maintained by the DSF Board, and candidates must
    
  247.    provide evidence of their qualifications as part of registration. The DSF
    
  248.    Board may challenge and reject the registration of candidates it believes do
    
  249.    not meet the qualifications of members of the Steering Council, or who it
    
  250.    believes are registering in bad faith.
    
  251. #. Registration of candidates close one week after it has opened. One week
    
  252.    after registration of candidates closes, the Secretary of the DSF publish
    
  253.    the roster of candidates to the |django-developers| mailing list and the
    
  254.    `Django forum`_, and the election begin. The DSF Board provide a voting form
    
  255.    accessible to registered voters, and is the custodian of the votes.
    
  256. #. Voting is by secret ballot containing the roster of candidates, and any
    
  257.    relevant materials regarding the candidates, in a randomized order. Each
    
  258.    voter may vote for up to five candidates on the ballot.
    
  259. #. The election conclude one week after it begins. The DSF Board then tally the
    
  260.    votes and produce a summary, including the total number of votes cast and
    
  261.    the number received by each candidate. This summary is ratified by a
    
  262.    majority vote of the DSF Board, then posted by the Secretary of the DSF to
    
  263.    the |django-developers| mailing list and the Django Forum. The five
    
  264.    candidates with the highest vote totals are immediately become the new
    
  265.    steering council.
    
  266. 
    
  267. A member of the steering council may be removed by:
    
  268. 
    
  269. - Becoming disqualified due to actions taken by the Code of Conduct committee
    
  270.   of the Django Software Foundation.
    
  271. - Determining that they did not possess the qualifications of a member of the
    
  272.   steering council. This determination must be made jointly by the other members
    
  273.   of the steering council, and the `DSF Board`_. A valid determination of
    
  274.   ineligibility requires that all other members of the steering council and all
    
  275.   members of the DSF Board vote who can vote on the issue (the affected person,
    
  276.   if a DSF Board member, must not vote) vote "yes" on a motion that the person
    
  277.   in question is ineligible.
    
  278. 
    
  279. .. _`Django forum`: https://forum.djangoproject.com/
    
  280. .. _`Django Git repository`: https://github.com/django/django/
    
  281. .. _`DSF Board`: https://www.djangoproject.com/foundation/#board
    
  282. .. _`individual members of the DSF`: https://www.djangoproject.com/foundation/individual-members/
    
  283. .. _mergers: https://www.djangoproject.com/foundation/teams/#mergers-team
    
  284. .. _releasers: https://www.djangoproject.com/foundation/teams/#releasers-team
    
  285. .. _`security team`: https://www.djangoproject.com/foundation/teams/#security-team
    
  286. .. _`the steering council`: https://www.djangoproject.com/foundation/teams/#steering-council-team
    
  287. .. _`triage & review team`: https://www.djangoproject.com/foundation/teams/#triage-review-team
    
  288. 
    
  289. .. _organization-change:
    
  290. 
    
  291. Changing the organization
    
  292. =========================
    
  293. 
    
  294. Changes to this document require the use of the `DEP process`_, with
    
  295. modifications described in `DEP 0010`_.
    
  296. 
    
  297. .. _`DEP process`: https://github.com/django/deps/blob/main/final/0001-dep-process.rst
    
  298. .. _`DEP 0010`: https://github.com/django/deps/blob/main/accepted/0010-new-governance.rst#changing-this-governance-process