Skip to content

Commit b6e6448

Browse files
authored
Update DEPs 1, 10, and 12 to reflect current governance (#81)
✨ Updates DEPs 1, 10, and 12 to reflect current governance: - Marks DEPs 10 and 12 as final - Adds notes to the tops of those DEPs pointing to the Steering Council docs, as reading the DEPs to understand how the Steering Council operates is tricky (the DEPs are diffs basically not the full info). - Updates DEP 1 to reflect those changes, including renaming the Technical Board to Steering Council, removing references to "Core Developers" and updating the Shepherd role since core devs no longer exist. Thanks for feedback and edits from @carltongibson, @thibaudcolas, and @nessita
1 parent 3a96a7d commit b6e6448

File tree

3 files changed

+107
-72
lines changed

3 files changed

+107
-72
lines changed

final/0001-dep-process.rst

+85-68
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ DEP 1: DEP Purpose and Guidelines
77
:Status: Final
88
:Type: Process
99
:Created: 2014-04-14
10-
:Last-Modified: 2014-11-15
10+
:Last-Modified: 2023-10-21
1111

1212
.. contents:: Table of Contents
1313
:depth: 3
@@ -62,23 +62,12 @@ DEP submission workflow
6262

6363
So, you'd like to submit a DEP? Here's how it works, and what to expect.
6464

65-
There are a couple of terms you should be familiar with before reading the
66-
rest of this document:
67-
68-
The Technical Board
69-
There are several reference in this DEP to the **Technical Board**
70-
(sometimes just "the Board"). This refers to Django's `Technical Board
71-
<https://docs.djangoproject.com/en/dev/internals/organization/#technical-
72-
board>`_, the group of experienced and active committers who steer technical
73-
choices. Django's documentation lists `the current Technical Board
74-
membership <https://www.djangoproject.com/foundation/teams
75-
/#technical-board-team>`_.
76-
77-
Core Developers
78-
Similarly, there are several references to **Core Developers** (sometimes
79-
"core devs"). This refers to the members of Django's `core team
80-
<https://docs.djangoproject.com/en/dev/internals/organization/#core-team>`_,
81-
and specifically those with commit access.
65+
There are several references in this DEP to the **Steering Council**. This
66+
refers to Django's `Steering Council
67+
<https://docs.djangoproject.com/en/dev/internals/organization/#steering-council>`_,
68+
the group of experienced and active contributors who steer technical choices.
69+
Django's documentation lists `the current Steering Council membership
70+
<https://www.djangoproject.com/foundation/teams/#steering-council-team>`_.
8271

8372
At a very high level, the DEP submission process looks like this:
8473

@@ -94,7 +83,7 @@ At a very high level, the DEP submission process looks like this:
9483
4. `Discussion, development, and updates`_ — the DEP and reference
9584
implementation are discussed, improved, and updated as feedback comes in.
9685

97-
5. `Review & Resolution`_ — the DEP is reviewed by the Technical Board and
86+
5. `Review & Resolution`_ — the DEP is reviewed by the Steering Council and
9887
either accepted or rejected.
9988

10089
6. `Implementation`_ — the implementation of the proposed feature is completed
@@ -110,10 +99,9 @@ that a single DEP contain a single key proposal or new idea. Small enhancements
11099
or patches usually don't need a DEP and follow Django's normal `contribution
111100
process <https://docs.djangoproject.com/en/dev/internals/contributing/>`_.
112101

113-
The more focused the DEP, the more successful it tends to be. The Core
114-
Developers reserve the right to reject DEP proposals if they appear too
115-
unfocused or too broad. If in doubt, split your DEP into several well-focused
116-
ones.
102+
The more focused the DEP, the more successful it tends to be. The Steering
103+
Council reserve the right to reject DEP proposals if they appear too unfocused
104+
or too broad. If in doubt, split your DEP into several well-focused ones.
117105

118106
The DEP Author (see below for the formal definition of an Author)
119107
should first attempt to ascertain whether the idea is DEP-able. Posting to
@@ -151,38 +139,46 @@ Implementation Team
151139
DEPs generally don't have implementers, and Process DEPs sometimes will.
152140

153141
Shepherd
154-
The **Shepherd** is the Core Developer who will be the primary reviewer
155-
of the DEP on behalf of the Django team, will be the main point person
156-
who will help the Author assess the fitness of their proposal, and
157-
is the person who will finally submit the DEP for pronouncement by the
158-
Technical Board. When the implementation team doesn't contain someone
159-
who can commit to Django, the Shepherd will be the one who actually merges
160-
the code into the project.
142+
If a DEP is being written by someone relatively new to the Django community,
143+
they will likely need a **Shepherd** -- a mentor, essentially -- to help. The Shepherd
144+
can be someone with a long history of contributing to Django, who can help
145+
the Author assess the fitness of their proposal and help make sure it gets
146+
accepted. The primary job of the Shepherd will be to review the DEP in an
147+
editorial role, and help guide the Author through the DEP process.
148+
149+
The Shepherd may be a `Merger`_, and if so the Shepherd will be the one who
150+
actually merges the code into the project. Or, the Shepherd may be a
151+
member of the Steering Council, which can help streamline discussion.
152+
153+
DEPs don't necessarily require a Shepherd, but it's a good idea, especially
154+
for newer contributors.
155+
156+
.. _merger: https://docs.djangoproject.com/en/dev/internals/organization/#mergers
161157

162158
It's normal for a single person to fulfill multiple roles -- in most cases the
163159
Author will be an/the Implementer, and it's not uncommon for the implementation
164160
team to include the Shepherd as well. It's unusual but acceptable for a single
165161
person to fulfill all roles, though this generally only happens when that person
166-
is a long-time committer.
162+
is a long-time contributor.
167163

168164
Submitting the draft
169165
--------------------
170166

171167
Once the idea's been vetted and the roles are filled, a draft DEP should be
172-
presented to django-developers. This gives the author a chance to flesh out the
173-
draft DEP to make sure it's properly formatted, of high quality, and to address
174-
initial concerns about the proposal.
168+
presented to the Django Forum and/or django-developers. This gives the author a
169+
chance to flesh out the draft DEP to make sure it's properly formatted, of high
170+
quality, and to address initial concerns about the proposal.
175171

176-
Following the discussion on django-developers, the proposal should be sent as a
177-
GitHub pull request to the `django/deps <https://github.com/django/deps>`_ repo.
178-
This PR should add a DEP to the ``drafts/`` directory, written in the style
179-
described below. The draft must be written in DEP style; if it isn't the pull
180-
request may be rejected until proper formatting rules are followed.
172+
Following the discussion, the proposal should be sent as a GitHub pull request
173+
to the `django/deps <https://github.com/django/deps>`_ repo. This PR should add
174+
a DEP to the ``drafts/`` directory, written in the style described below. The
175+
draft must be written in DEP style; if it isn't, the pull request may be rejected
176+
until proper formatting rules are followed.
181177

182-
At this point, a core dev will review the pull request. In most cases the
183-
reviewer will be the Shepherd of the DEP, but if that's not possible for some
184-
reason the author may want to ask on django-developers to ensure that this
185-
review happens quickly. The reviewer will do the following:
178+
At this point, contributors will review the pull request. In most cases the reviewer
179+
will be the Shepherd of the DEP, but if that's not possible for some reason the
180+
author may want to ask on django-developers and/or the Django Forum to ensure
181+
that this review happens quickly. A reviewer will do the following:
186182

187183
* Read the DEP to check if it is ready: sound and complete. The ideas
188184
must make technical sense, even if they don't seem likely to be
@@ -224,10 +220,10 @@ reference implementation, and of course updates to the DEP. It's rare for
224220
a DEP to be judged on the first draft; far more common is several rounds
225221
of feedback and updates.
226222

227-
Updates to a DEP can be submitted as pull requests; once again,
228-
a core developer will merge those pull requests (typically they don't
229-
require much if any review). In cases where the Author has commit access
230-
(fairly common), the Author should just update the draft DEP directly.
223+
Updates to a DEP can be submitted as pull requests; once again, someone with
224+
merge access to the DEP repo will merge those pull requests (typically they
225+
don't require much if any review). In cases where the Author has commit access
226+
the Author should just update the draft DEP directly.
231227

232228
Feature DEPs generally consist of two parts, a design document and a
233229
reference implementation. It is generally recommended that at least a
@@ -246,34 +242,34 @@ DEP authors should use their discretion here.
246242
Review & Resolution
247243
-------------------
248244

249-
Once the author has completed a DEP, the shepherd will ask the Technical Board
250-
for review and pronouncement. The final authority for deciding on a DEP rests
251-
with the Technical Board. They may choose to rule on a DEP as a team, or they
252-
may designate one or more board members to review and decide.
245+
Once the author has completed a DEP, the Author or Shepherd will ask the
246+
Steering Council for review and pronouncement. The final authority for deciding
247+
on a DEP rests with the Steering Council. They may choose to rule on a DEP as a
248+
team, or they may designate one or more members to review and decide.
253249

254-
Having the shepherd (i.e. a core dev) rather than the author ask helps ensure
255-
that the DEP meets the basic technical bar before it's called for review. It
256-
also provides a fairly strong fitness test before the board is asked to rule on
257-
it, making board rulings fairly easy. If the core developer shepherd is happy,
258-
the board will likely be as well.
250+
Having the Shepherd (i.e. an experienced contributor) rather than the Author ask
251+
helps ensure that the DEP meets the basic technical bar before it's called for
252+
review. It also provides a fairly strong fitness test before the Steering
253+
Council is asked to rule on it, making rulings fairly easy. If the Shepherd is
254+
happy, the Steering Council will likely be as well.
259255

260256
For a DEP to be accepted it must meet certain minimum criteria. It must be a
261257
clear and complete description of the proposed enhancement. The enhancement must
262258
represent a net improvement. The proposed implementation, if applicable, must be
263259
solid and must not complicate Django unduly. Finally, a proposed enhancement
264260
must "fit" with Django's general philosophy and architecture. This last category
265-
is the most imprecise and takes the most judgment, so if the Board rejects a
266-
DEP for lack of "fit" they should provide a clear explanation for why.
261+
is the most imprecise and takes the most judgment, so if the Steering Council
262+
rejects a DEP for lack of "fit" they should provide a clear explanation for why.
267263

268264
At this point, the DEP will be considered "Accepted" and moved to the
269265
``accepted`` directory in the DEPs repo.
270266

271-
A DEP can also be "Withdrawn". The DEP author or a core developer can assign
272-
the DEP this status when the author is no longer interested in the DEP, or if no
273-
progress is being made on the DEP. Once a DEP is withdrawn, it's moved
274-
to the ``withdrawn`` directory for reference. Later, another author may
275-
resurrect the DEP by opening a pull request, updating (at least) the author,
276-
and moving it back to ``draft``.
267+
A DEP can also be "Withdrawn". The DEP Author or maintainer of the DEPs repo
268+
can assign the DEP this status when the Author is no longer interested in the
269+
DEP, or if no progress is being made on the DEP. Once a DEP is withdrawn, it's
270+
moved to the ``withdrawn`` directory for reference. Later, another author may
271+
resurrect the DEP by opening a pull request, updating (at least) the author, and
272+
moving it back to ``draft``.
277273

278274
Finally, a DEP can also be "Rejected". Perhaps after all is said and done it
279275
was not a good idea. It is still important to have a record of this
@@ -290,7 +286,7 @@ Implementation
290286
Finally, once a DEP has been accepted, the implementation must be completed. In
291287
many cases some (or all) implementation will actually happen during the DEP
292288
process: Feature DEPs will often have fairly complete implementations before
293-
being reviewed by the board. When the implementation is complete and
289+
being reviewed by the Steering Council. When the implementation is complete and
294290
incorporated into the main source code repository, the status will be changed to
295291
"Final" and the DEP moved to the ``final`` directory.
296292

@@ -380,7 +376,7 @@ The headers must contain the following fields:
380376
``Implementation-Team``
381377
The person/people who have committed to implementing this DEP
382378
``Shepherd``
383-
The core developer "on point" for the DEP
379+
A more experienced developer to help mentor and guide the DEP forward
384380
``Requires``
385381
If this DEP depends on another DEP being implemented first,
386382
this should be a link to the required DEP.
@@ -417,7 +413,7 @@ finished DEPs you can submit corrections as GitHub issues or pull requests
417413
against the DEP repository.
418414

419415
When in doubt about where to send your changes, please check first with the DEP
420-
author and/or a core developer.
416+
author and/or the Steering Council.
421417

422418
DEP authors with git push privileges for the DEP repository can update the DEPs
423419
themselves.
@@ -445,6 +441,15 @@ email within a few weeks, contact django-developers.
445441
Differences between DEPs and PEPs
446442
=================================
447443

444+
.. note::
445+
446+
This section is historical, describing the differences between the DEP and
447+
PEP processes when this was originally written in 2014. Since then, the PEP
448+
process has changed -- in particular, there's now a Python Steering Council,
449+
and a mechanism for delegating authority for each specific PEP. This section
450+
hasn't been updated to reflect those changes, nor the changes to the DEP
451+
process either.
452+
448453
As stated in the preamble, the DEP process is more or less a direct copy of
449454
the PEP process (and this document is a modified version of
450455
`PEP 1 <https://www.python.org/dev/peps/pep-0001/>`_).
@@ -469,7 +474,7 @@ Relative to the PEP process, we made the following changes in DEPs:
469474
- DEPs are "edited" (e.g. pull request approved) by any core developer,
470475
rather than an explicit "editor" role like the PEP editors.
471476

472-
- DEPs are pronounced upon by the Technical Board, rather than a BDFL (because
477+
- DEPs are pronounced upon by the Steering Council, rather than a BDFL (because
473478
Django no longer has BDFLs).
474479

475480
- DEPs explicitly require identifying a few roles (Author, Implementation Team,
@@ -490,6 +495,18 @@ Relative to the PEP process, we made the following changes in DEPs:
490495

491496
- DEPs may only be reStructuredText (there is no plain text option).
492497

498+
Revision History
499+
================
500+
501+
2023-10-23
502+
Updates to reflect changes in governance since this document was originally
503+
written, including changes from "Technical Board" to "Steering Council",
504+
the removal of the no-longer-existant "Core Developer" concept, and updates
505+
to reflect the Merger role.
506+
507+
2014-04-14
508+
Initial version
509+
493510
Copyright
494511
=========
495512

accepted/0010-new-governance.rst final/0010-new-governance.rst

+11-2
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,24 @@ DEP 0010: New governance for the Django project
66
:Author: James Bennett
77
:Implementation Team: James Bennett, others to be determined
88
:Shepherd: Aymeric Augustin
9-
:Status: Accepted
9+
:Status: Final
1010
:Type: Process
1111
:Created: 2018-09-22
12-
:Last-Modified: 2021-06-01
12+
:Last-Modified: 2023-10-21
1313

1414
.. contents:: Table of Contents
1515
:depth: 3
1616
:local:
1717

18+
.. note::
19+
20+
This is a historical document, describing the changes from Django's BDFL
21+
structure to its Technical Board leadership, later updated by `DEP 12`_ to
22+
the Steering Council. See Django's documentation for `operational documentation
23+
of the Steering Council and how it works`_.
24+
25+
.. _DEP 12: https://github.com/django/deps/blob/main/final/0012-steering-council.rst
26+
.. _operational documentation of the Steering Council and how it works: https://docs.djangoproject.com/en/dev/internals/organization/#steering-council
1827

1928
Abstract
2029
========

accepted/0012-steering-council.rst final/0012-steering-council.rst

+11-2
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,24 @@ DEP 0012: The Steering Council
66
:Author: Andrew Godwin
77
:Implementation Team: Andrew Godwin
88
:Shepherd: Carlton Gibson
9-
:Status: Accepted
9+
:Status: Final
1010
:Type: Process
1111
:Created: 2022-10-26
12-
:Last-Modified: 2022-12-03
12+
:Last-Modified: 2023-10-21
1313

1414
.. contents:: Table of Contents
1515
:depth: 3
1616
:local:
1717

18+
.. note::
19+
20+
This is a historical document, describing the changes from the Technical
21+
Board stucture described in `DEP 10`_ to a Steering Council. See Django's
22+
documentation for `operational documentation of the Steering Council and how
23+
it works`_.
24+
25+
.. _DEP 10: https://github.com/django/deps/blob/main/final/0010-new-governance.rst
26+
.. _operational documentation of the Steering Council and how it works: https://docs.djangoproject.com/en/dev/internals/organization/#steering-council
1827

1928
Abstract
2029
========

0 commit comments

Comments
 (0)