Skip to content

Commit f2ed221

Browse files
committed
Refs #31676 -- Updated technical board description in organization docs.
According to DEP 0010.
1 parent 228ec8e commit f2ed221

File tree

1 file changed

+115
-43
lines changed

1 file changed

+115
-43
lines changed

docs/internals/organization.txt

Lines changed: 115 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Role
3030
----
3131

3232
Mergers_ are a small set of people who merge pull requests to the `Django Git
33-
repository <https://github.com/django/django>`_.
33+
repository`_.
3434

3535
Prerogatives
3636
------------
@@ -166,63 +166,135 @@ Technical board
166166
Role
167167
----
168168

169-
The technical board is a group of experienced and active committers who steer
170-
technical choices. Their main concern is to maintain the quality and stability
171-
of the Django web framework.
169+
The technical board is a group of experienced contributors who:
172170

173-
Prerogatives
174-
------------
175-
176-
The technical board holds two prerogatives:
177-
178-
- Making major technical decisions when no consensus is found otherwise. This
179-
happens on the |django-developers| mailing-list.
180-
- Veto a grant of commit access or remove commit access. This happens on the
181-
``django-core`` mailing-list.
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.
182175

183-
In both cases, the technical board is a last resort. In these matters, it
184-
fulfills a similar function to the former Benevolent Dictators For Life.
176+
Their main concern is to maintain the quality and stability of the Django Web
177+
Framework.
185178

186-
When the board wants to exercise one of these prerogatives, it must hold a
187-
private, simple majority vote on the resolution. The quorum is the full
188-
committee — each member must cast a vote or abstain explicitly. Then the board
189-
communicates the result, and if possible the reasons, on the appropriate
190-
mailing-list. There's no appeal for such decisions.
179+
Prerogatives
180+
------------
191181

192-
In addition, at its discretion, the technical board may act in an advisory
193-
capacity on non-technical decisions.
182+
The technical board 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 technical board, when deemed
193+
appropriate.
194+
- Calling elections of the technical board outside of those which are
195+
automatically triggered, at times when the technical board 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 technical board feels is unripe for a
200+
binding decision, or which the technical board 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.
194204

195205
Membership
196206
----------
197207

198-
`The technical board`_ is an elected group of five committers. They're expected
199-
to be experienced but there's no formal seniority requirement.
200-
201-
A new board is elected after each feature release of Django. The election
202-
process is managed by a returns officer nominated by the outgoing technical
203-
board. The election process works as follows:
204-
205-
#. Candidates advertise their application for the technical board to the team.
206-
207-
They must be committers already. There's no term limit for technical board
208-
members.
209-
210-
#. Each team member can vote for zero to five people among the candidates.
211-
Candidates are ranked by the total number of votes they received.
212-
213-
In case of a tie, the person who joined the core team earlier wins.
214-
215-
Both the application and the voting period last between one and two weeks, at
216-
the outgoing board's discretion.
208+
`The technical board`_ is an elected group of five experienced contributors
209+
who demonstrate:
210+
211+
- A history of technical contributions to Django or the Django ecosystem. This
212+
history must begin at least 18 months prior to the individual's candidacy for
213+
the technical board.
214+
- A history of participation in Django's development outside of contributions
215+
merged to the `Django Git repository`_. This may include, but is not
216+
restricted to:
217+
218+
- Participation in discussions on the |django-developers| mailing list or
219+
the `Django forum`_.
220+
- Reviewing and offering feedback on pull requests in the Django source-code
221+
repository.
222+
- Assisting in triage and management of the Django bug tracker.
223+
224+
- A history of recent engagement with the direction and development of Django.
225+
Such engagement must have occurred within a period of no more than two years
226+
prior to the individual's candidacy for the technical board.
227+
228+
A new board is elected after each release cycle of Django. The election process
229+
works as follows:
230+
231+
#. The technical board direct one of its members to notify the Secretary of the
232+
Django Software Foundation, in writing, of the triggering of the election,
233+
and the condition which triggered it. The Secretary post to the appropriate
234+
venue -- the |django-developers| mailing list and the `Django forum`_ to
235+
announce the election and its timeline.
236+
#. As soon as the election is announced, the `DSF Board`_ begin a period of
237+
voter registration. All `individual members of the DSF`_ are automatically
238+
registered and need not explicitly register. All other persons who believe
239+
themselves eligible to vote, but who have not yet registered to vote, may
240+
make an application to the DSF Board for voting privileges. The voter
241+
registration form and roll of voters is maintained by the DSF Board. The DSF
242+
Board may challenge and reject the registration of voters it believes are
243+
registering in bad faith or who it believes have falsified their
244+
qualifications or are otherwise unqualified.
245+
#. Registration of voters close one week after the announcement of the
246+
election. At that point, registration of candidates begin. Any qualified
247+
person may register as a candidate. The candidate registration form and
248+
roster of candidates are maintained by the DSF Board, and candidates must
249+
provide evidence of their qualifications as part of registration. The DSF
250+
Board may challenge and reject the registration of candidates it believes do
251+
not meet the qualifications of members of the Technical Board, or who it
252+
believes are registering in bad faith.
253+
#. Registration of candidates close one week after it has opened. One week
254+
after registration of candidates closes, the Secretary of the DSF publish
255+
the roster of candidates to the |django-developers| mailing list and the
256+
`Django forum`_, and the election begin. The DSF Board provide a voting form
257+
accessible to registered voters, and is the custodian of the votes.
258+
#. Voting is by secret ballot containing the roster of candidates, and any
259+
relevant materials regarding the candidates, in a randomized order. Each
260+
voter may vote for up to five candidates on the ballot.
261+
#. The election conclude one week after it begins. The DSF Board then tally the
262+
votes and produce a summary, including the total number of votes cast and
263+
the number received by each candidate. This summary is ratified by a
264+
majority vote of the DSF Board, then posted by the Secretary of the DSF to
265+
the |django-developers| mailing list and the Django Forum. The five
266+
candidates with the highest vote totals are immediately become the new
267+
technical board.
268+
269+
A member of the technical board may be removed by:
217270

271+
- Becoming disqualified due to actions taken by the Code of Conduct committee
272+
of the Django Software Foundation.
273+
- Determining that they did not possess the qualifications of a member of the
274+
technical board. This determination must be made jointly by the other members
275+
of the technical board, and the `DSF Board`_. A valid determination of
276+
ineligibility requires that all other members of the technical board and all
277+
members of the DSF Board vote who can vote on the issue (the affected person,
278+
if a DSF Board member, must not vote) vote "yes" on a motion that the person
279+
in question is ineligible.
280+
281+
.. _`Django forum`: https://forum.djangoproject.com/
282+
.. _`Django Git repository`: https://github.com/django/django/
283+
.. _`DSF Board`: https://www.djangoproject.com/foundation/#board
284+
.. _`individual members of the DSF`: https://www.djangoproject.com/foundation/individual-members/
218285
.. _mergers: https://www.djangoproject.com/foundation/teams/#mergers-team
219286
.. _releasers: https://www.djangoproject.com/foundation/teams/#releasers-team
220287
.. _`security team`: https://www.djangoproject.com/foundation/teams/#security-team
221288
.. _`the technical board`: https://www.djangoproject.com/foundation/teams/#technical-board-team
222289
.. _`triage & review team`: https://www.djangoproject.com/foundation/teams/#triage-review-team
223290

291+
.. _organization-change:
292+
224293
Changing the organization
225294
=========================
226295

227-
Changes to this document require a four fifths majority of votes cast in a
228-
core team vote and no veto by the technical board.
296+
Changes to this document require the use of the `DEP process`_, with
297+
modifications described in `DEP 0010`_.
298+
299+
.. _`DEP process`: https://github.com/django/deps/blob/main/final/0001-dep-process.rst
300+
.. _`DEP 0010`: https://github.com/django/deps/blob/main/accepted/0010-new-governance.rst#changing-this-governance-process

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy