@@ -7,7 +7,7 @@ DEP 1: DEP Purpose and Guidelines
7
7
:Status: Final
8
8
:Type: Process
9
9
:Created: 2014-04-14
10
- :Last-Modified: 2014-11-15
10
+ :Last-Modified: 2023-10-21
11
11
12
12
.. contents :: Table of Contents
13
13
:depth: 3
@@ -62,23 +62,12 @@ DEP submission workflow
62
62
63
63
So, you'd like to submit a DEP? Here's how it works, and what to expect.
64
64
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> `_.
82
71
83
72
At a very high level, the DEP submission process looks like this:
84
73
@@ -94,7 +83,7 @@ At a very high level, the DEP submission process looks like this:
94
83
4. `Discussion, development, and updates `_ — the DEP and reference
95
84
implementation are discussed, improved, and updated as feedback comes in.
96
85
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
98
87
either accepted or rejected.
99
88
100
89
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
110
99
or patches usually don't need a DEP and follow Django's normal `contribution
111
100
process <https://docs.djangoproject.com/en/dev/internals/contributing/> `_.
112
101
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.
117
105
118
106
The DEP Author (see below for the formal definition of an Author)
119
107
should first attempt to ascertain whether the idea is DEP-able. Posting to
@@ -151,38 +139,46 @@ Implementation Team
151
139
DEPs generally don't have implementers, and Process DEPs sometimes will.
152
140
153
141
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
161
157
162
158
It's normal for a single person to fulfill multiple roles -- in most cases the
163
159
Author will be an/the Implementer, and it's not uncommon for the implementation
164
160
team to include the Shepherd as well. It's unusual but acceptable for a single
165
161
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 .
167
163
168
164
Submitting the draft
169
165
--------------------
170
166
171
167
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.
175
171
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.
181
177
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:
186
182
187
183
* Read the DEP to check if it is ready: sound and complete. The ideas
188
184
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
224
220
a DEP to be judged on the first draft; far more common is several rounds
225
221
of feedback and updates.
226
222
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.
231
227
232
228
Feature DEPs generally consist of two parts, a design document and a
233
229
reference implementation. It is generally recommended that at least a
@@ -246,34 +242,34 @@ DEP authors should use their discretion here.
246
242
Review & Resolution
247
243
-------------------
248
244
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.
253
249
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.
259
255
260
256
For a DEP to be accepted it must meet certain minimum criteria. It must be a
261
257
clear and complete description of the proposed enhancement. The enhancement must
262
258
represent a net improvement. The proposed implementation, if applicable, must be
263
259
solid and must not complicate Django unduly. Finally, a proposed enhancement
264
260
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.
267
263
268
264
At this point, the DEP will be considered "Accepted" and moved to the
269
265
``accepted `` directory in the DEPs repo.
270
266
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 ``.
277
273
278
274
Finally, a DEP can also be "Rejected". Perhaps after all is said and done it
279
275
was not a good idea. It is still important to have a record of this
@@ -290,7 +286,7 @@ Implementation
290
286
Finally, once a DEP has been accepted, the implementation must be completed. In
291
287
many cases some (or all) implementation will actually happen during the DEP
292
288
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
294
290
incorporated into the main source code repository, the status will be changed to
295
291
"Final" and the DEP moved to the ``final `` directory.
296
292
@@ -380,7 +376,7 @@ The headers must contain the following fields:
380
376
``Implementation-Team ``
381
377
The person/people who have committed to implementing this DEP
382
378
``Shepherd ``
383
- The core developer "on point" for the DEP
379
+ A more experienced developer to help mentor and guide the DEP forward
384
380
``Requires ``
385
381
If this DEP depends on another DEP being implemented first,
386
382
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
417
413
against the DEP repository.
418
414
419
415
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 .
421
417
422
418
DEP authors with git push privileges for the DEP repository can update the DEPs
423
419
themselves.
@@ -445,6 +441,15 @@ email within a few weeks, contact django-developers.
445
441
Differences between DEPs and PEPs
446
442
=================================
447
443
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
+
448
453
As stated in the preamble, the DEP process is more or less a direct copy of
449
454
the PEP process (and this document is a modified version of
450
455
`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:
469
474
- DEPs are "edited" (e.g. pull request approved) by any core developer,
470
475
rather than an explicit "editor" role like the PEP editors.
471
476
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
473
478
Django no longer has BDFLs).
474
479
475
480
- 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:
490
495
491
496
- DEPs may only be reStructuredText (there is no plain text option).
492
497
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
+
493
510
Copyright
494
511
=========
495
512
0 commit comments