123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- ==================================
- Organization of the Django Project
- ==================================
- Principles
- ==========
- The Django Project is managed by a team of volunteers pursuing three goals:
- - Driving the development of the Django web framework,
- - Fostering the ecosystem of Django-related software,
- - Leading the Django community in accordance with the values described in the
- `Django Code of Conduct`_.
- The Django Project isn't a legal entity. The `Django Software Foundation`_, a
- non-profit organization, handles financial and legal matters related to the
- Django Project. Other than that, the Django Software Foundation lets the
- Django Project manage the development of the Django framework, its ecosystem
- and its community.
- .. _Django Code of Conduct: https://www.djangoproject.com/conduct/
- .. _Django Software Foundation: https://www.djangoproject.com/foundation/
- .. _mergers-team:
- Mergers
- =======
- Role
- ----
- Mergers_ are a small set of people who merge pull requests to the `Django Git
- repository`_.
- Prerogatives
- ------------
- Mergers hold the following prerogatives:
- - Merging any pull request which constitutes a `minor change`_ (small enough
- not to require the use of the `DEP process`_). A Merger must not merge a
- change primarily authored by that Merger, unless the pull request has been
- approved by:
- - another Merger,
- - a steering council member,
- - a member of the `triage & review team`_, or
- - a member of the `security team`_.
- - Initiating discussion of a minor change in the appropriate venue, and request
- that other Mergers refrain from merging it while discussion proceeds.
- - Requesting a vote of the steering council regarding any minor change if, in
- the Merger's opinion, discussion has failed to reach a consensus.
- - Requesting a vote of the steering council when a `major change`_ (significant
- enough to require the use of the `DEP process`_) reaches one of its
- implementation milestones and is intended to merge.
- .. _`minor change`: https://github.com/django/deps/blob/main/final/0010-new-governance.rst#terminology
- .. _`major change`: https://github.com/django/deps/blob/main/final/0010-new-governance.rst#terminology
- Membership
- ----------
- `The steering council`_ selects Mergers_ as necessary to maintain their number
- at a minimum of three, in order to spread the workload and avoid over-burdening
- or burning out any individual Merger. There is no upper limit to the number of
- Mergers.
- It's not a requirement that a Merger is also a Django Fellow, but the Django
- Software Foundation has the power to use funding of Fellow positions as a way
- to make the role of Merger sustainable.
- The following restrictions apply to the role of Merger:
- - A person must not simultaneously serve as a member of the steering council. If
- a Merger is elected to the steering council, they shall cease to be a Merger
- immediately upon taking up membership in the steering council.
- - A person may serve in the roles of Releaser and Merger simultaneously.
- The selection process, when a vacancy occurs or when the steering council deems
- it necessary to select additional persons for such a role, occur as follows:
- - Any member in good standing of an appropriate discussion venue, or the Django
- Software Foundation board acting with the input of the DSF's Fellowship
- committee, may suggest a person for consideration.
- - The steering council considers the suggestions put forth, and then any member
- of the steering council formally nominates a candidate for the role.
- - The steering council votes on nominees.
- Mergers may resign their role at any time, but should endeavor to provide some
- advance notice in order to allow the selection of a replacement. Termination of
- the contract of a Django Fellow by the Django Software Foundation temporarily
- suspends that person's Merger role until such time as the steering council can
- vote on their nomination.
- Otherwise, a Merger may be removed by:
- - Becoming disqualified due to election to the steering council.
- - Becoming disqualified due to actions taken by the Code of Conduct committee
- of the Django Software Foundation.
- - A vote of the steering council.
- .. _releasers-team:
- Releasers
- =========
- Role
- ----
- Releasers_ are a small set of people who have the authority to upload packaged
- releases of Django to the :pypi:`Python Package Index <Django>` and to the
- `djangoproject.com`_ website.
- Prerogatives
- ------------
- Releasers_ :doc:`build Django releases </internals/howto-release-django>` and
- upload them to the :pypi:`Python Package Index <Django>` and to the
- `djangoproject.com`_ website.
- Membership
- ----------
- `The steering council`_ selects Releasers_ as necessary to maintain their number
- at a minimum of three, in order to spread the workload and avoid over-burdening
- or burning out any individual Releaser. There is no upper limit to the number
- of Releasers.
- It's not a requirement that a Releaser is also a Django Fellow, but the Django
- Software Foundation has the power to use funding of Fellow positions as a way
- to make the role of Releaser sustainable.
- A person may serve in the roles of Releaser and Merger simultaneously.
- The selection process, when a vacancy occurs or when the steering council deems
- it necessary to select additional persons for such a role, occur as follows:
- - Any member in good standing of an appropriate discussion venue, or the Django
- Software Foundation board acting with the input of the DSF's Fellowship
- committee, may suggest a person for consideration.
- - The steering council considers the suggestions put forth, and then any member
- of the steering council formally nominates a candidate for the role.
- - The steering council votes on nominees.
- Releasers may resign their role at any time, but should endeavor to provide
- some advance notice in order to allow the selection of a replacement.
- Termination of the contract of a Django Fellow by the Django Software
- Foundation temporarily suspends that person's Releaser role until such time as
- the steering council can vote on their nomination.
- Otherwise, a Releaser may be removed by:
- - Becoming disqualified due to actions taken by the Code of Conduct committee
- of the Django Software Foundation.
- - A vote of the steering council.
- .. _djangoproject.com: https://www.djangoproject.com/download/
- .. _steering-council:
- Steering council
- ================
- Role
- ----
- The steering council is a group of experienced contributors who:
- - provide oversight of Django's development and release process,
- - assist in setting the direction of feature development and releases,
- - select Mergers and Releasers, and
- - have a tie-breaking vote when other decision-making processes fail.
- Their main concern is to maintain the quality and stability of the Django Web
- Framework.
- Prerogatives
- ------------
- The steering council holds the following prerogatives:
- - Making a binding decision regarding any question of a technical change to
- Django.
- - Vetoing the merging of any particular piece of code into Django or ordering
- the reversion of any particular merge or commit.
- - Announcing calls for proposals and ideas for the future technical direction
- of Django.
- - Selecting and removing mergers and releasers.
- - Participating in the removal of members of the steering council, when deemed
- appropriate.
- - Calling elections of the steering council outside of those which are
- automatically triggered, at times when the steering council deems an election
- is appropriate.
- - Participating in modifying Django's governance (see
- :ref:`organization-change`).
- - Declining to vote on a matter the steering council feels is unripe for a
- binding decision, or which the steering council feels is outside the scope of
- its powers.
- - Taking charge of the governance of other technical teams within the Django
- open-source project, and governing those teams accordingly.
- Membership
- ----------
- `The steering council`_ is an elected group of five experienced contributors
- who demonstrate:
- - A history of substantive contributions to Django or the Django ecosystem.
- This history must begin at least 18 months prior to the individual's
- candidacy for the Steering Council, and include substantive contributions in
- at least two of these bullet points:
- - Code contributions to Django projects or major third-party packages in the
- Django ecosystem
- - Reviewing pull requests and/or triaging Django project tickets
- - Documentation, tutorials or blog posts
- - Discussions about Django on the django-developers mailing list or the Django
- Forum
- - Running Django-related events or user groups
- - A history of engagement with the direction and future of Django. This does
- not need to be recent, but candidates who have not engaged in the past three
- years must still demonstrate an understanding of Django's changes and
- direction within those three years.
- A new council is elected after each release cycle of Django. The election process
- works as follows:
- #. The steering council directs one of its members to notify the Secretary of the
- Django Software Foundation, in writing, of the triggering of the election,
- and the condition which triggered it. The Secretary post to the appropriate
- venue -- the |django-developers| mailing list and the `Django forum`_ to
- announce the election and its timeline.
- #. As soon as the election is announced, the `DSF Board`_ begin a period of
- voter registration. All `individual members of the DSF`_ are automatically
- registered and need not explicitly register. All other persons who believe
- themselves eligible to vote, but who have not yet registered to vote, may
- make an application to the DSF Board for voting privileges. The voter
- registration form and roll of voters is maintained by the DSF Board. The DSF
- Board may challenge and reject the registration of voters it believes are
- registering in bad faith or who it believes have falsified their
- qualifications or are otherwise unqualified.
- #. Registration of voters close one week after the announcement of the
- election. At that point, registration of candidates begin. Any qualified
- person may register as a candidate. The candidate registration form and
- roster of candidates are maintained by the DSF Board, and candidates must
- provide evidence of their qualifications as part of registration. The DSF
- Board may challenge and reject the registration of candidates it believes do
- not meet the qualifications of members of the Steering Council, or who it
- believes are registering in bad faith.
- #. Registration of candidates close one week after it has opened. One week
- after registration of candidates closes, the Secretary of the DSF publish
- the roster of candidates to the |django-developers| mailing list and the
- `Django forum`_, and the election begin. The DSF Board provide a voting form
- accessible to registered voters, and is the custodian of the votes.
- #. Voting is by secret ballot containing the roster of candidates, and any
- relevant materials regarding the candidates, in a randomized order. Each
- voter may vote for up to five candidates on the ballot.
- #. The election conclude one week after it begins. The DSF Board then tally the
- votes and produce a summary, including the total number of votes cast and
- the number received by each candidate. This summary is ratified by a
- majority vote of the DSF Board, then posted by the Secretary of the DSF to
- the |django-developers| mailing list and the Django Forum. The five
- candidates with the highest vote totals are immediately become the new
- steering council.
- A member of the steering council may be removed by:
- - Becoming disqualified due to actions taken by the Code of Conduct committee
- of the Django Software Foundation.
- - Determining that they did not possess the qualifications of a member of the
- steering council. This determination must be made jointly by the other members
- of the steering council, and the `DSF Board`_. A valid determination of
- ineligibility requires that all other members of the steering council and all
- members of the DSF Board vote who can vote on the issue (the affected person,
- if a DSF Board member, must not vote) vote "yes" on a motion that the person
- in question is ineligible.
- .. _`Django forum`: https://forum.djangoproject.com/
- .. _`Django Git repository`: https://github.com/django/django/
- .. _`DSF Board`: https://www.djangoproject.com/foundation/#board
- .. _`individual members of the DSF`: https://www.djangoproject.com/foundation/individual-members/
- .. _mergers: https://www.djangoproject.com/foundation/teams/#mergers-team
- .. _releasers: https://www.djangoproject.com/foundation/teams/#releasers-team
- .. _`security team`: https://www.djangoproject.com/foundation/teams/#security-team
- .. _`the steering council`: https://www.djangoproject.com/foundation/teams/#steering-council-team
- .. _`triage & review team`: https://www.djangoproject.com/foundation/teams/#triage-review-team
- .. _organization-change:
- Changing the organization
- =========================
- Changes to this document require the use of the `DEP process`_, with
- modifications described in `DEP 0010`_.
- .. _`DEP process`: https://github.com/django/deps/blob/main/final/0001-dep-process.rst
- .. _`DEP 0010`: https://github.com/django/deps/blob/main/final/0010-new-governance.rst#changing-this-governance-process
|