@@ -132,9 +132,11 @@ Each PEP must have a champion -- someone who writes the PEP using the style
132
132
and format described below, shepherds the discussions in the appropriate
133
133
forums, and attempts to build community consensus around the idea. The PEP
134
134
champion (a.k.a. Author) should first attempt to ascertain whether the idea is
135
- PEP-able. Posting to the comp.lang.python newsgroup
136
-
137
- mailing list is the best way to go about this.
135
+ PEP-able. Posting to the `Python-Ideas`_ mailing list or the
136
+ `Ideas category`_ of the `Python Discourse`_ is usually
137
+ the best way to go about this, unless a more specialized venue is appropriate,
138
+ such as `Typing-SIG`_ for static typing or the `Packaging category`_ of the
139
+ Python Discourse for packaging issues.
138
140
139
141
Vetting an idea publicly before going as far as writing a PEP is meant
140
142
to save the potential author time. Many ideas have been brought
@@ -149,15 +151,16 @@ mean it will work for most people in most areas where Python is used.
149
151
150
152
Once the champion has asked the Python community as to whether an
151
153
idea has any chance of acceptance, a draft PEP should be presented to
152
- python-ideas. This gives the author a chance to flesh out the draft
154
+ the appropriate venue mentioned above.
155
+ This gives the author a chance to flesh out the draft
153
156
PEP to make properly formatted, of high quality, and to address
154
157
initial concerns about the proposal.
155
158
156
159
157
160
Submitting a PEP
158
161
----------------
159
162
160
- Following a discussion on python-ideas , the workflow varies based on whether
163
+ Following the above initial discussion , the workflow varies based on whether
161
164
any of the PEP's co-authors are core developers. If one or more of the PEP's
162
165
co-authors are core developers, they are responsible for following the process
163
166
outlined below. Otherwise (i.e. none of the co-authors are core developers),
@@ -242,37 +245,86 @@ on GitHub.
242
245
243
246
As updates are necessary, the PEP author can check in new versions if they
244
247
(or a collaborating developer) have write access to the `PEP repository`_.
245
-
246
- After a PEP number has been assigned, a draft PEP may be discussed further on
247
- python-ideas (getting a PEP number assigned early can be useful for ease of
248
+ Getting a PEP number assigned early can be useful for ease of
248
249
reference, especially when multiple draft PEPs are being considered at the
249
- same time). Eventually, all Standards Track PEPs must be sent to the
250
- `python-dev list <mailto:
[email protected] >`__ for review as described
251
- in the next section.
250
+ same time.
252
251
253
252
Standards Track PEPs consist of two parts, a design document and a
254
253
reference implementation. It is generally recommended that at least a
255
254
prototype implementation be co-developed with the PEP, as ideas that sound
256
255
good in principle sometimes turn out to be impractical when subjected to the
257
256
test of implementation.
258
257
258
+
259
+ Discussing a PEP
260
+ ----------------
261
+
262
+ As soon as a PEP number has been assigned
263
+ and the draft PEP is committed to the `PEP repository`_,
264
+ a discussion thread for the PEP should be created
265
+ to provide a central place to discuss and review its contents, and the
266
+ PEP should be updated so that the ``Discussions-To`` header links to it.
267
+
268
+ The PEP authors (or sponsor, if applicable) may select any reasonable venue
269
+ for the discussion, so long as the the following criteria are met:
270
+
271
+ * The forum is appropriate to the PEP's topic.
272
+ * The thread is publicly available on the web so that all interested parties
273
+ can participate.
274
+ * The discussion is subject to the `Python Community Code of Conduct
275
+ <https://www.python.org/psf/conduct/>`_.
276
+ * A direct link to the current discussion thread is provided in the PEP
277
+ under the ``Discussions-To`` header.
278
+
279
+ Typically, the `Python-Dev`_ mailing list and the
280
+ `PEPs category`_ of the `Python Discourse`_ are good choices for most PEPs,
281
+ while some specialized topics have specific venues, such as
282
+ `Typing-SIG`_ for typing PEPs or the `Packaging category`_ on the Python
283
+ Discourse for packaging PEPs. If the PEP authors are unsure of the best venue,
284
+ the PEP Sponsor and PEP editors can advise them accordingly.
285
+
286
+ If the chosen venue is not the `Python-Dev`_ mailing list,
287
+ a brief announcement should be posted there when the draft PEP is
288
+ committed to the PEP repository and available on the PEP website,
289
+ with a link to the rendered PEP and the to canonical Discussions-To thread.
290
+
291
+ If a PEP undergoes a significant re-write or other major, substantive
292
+ changes to its proposed specification, a new thread should typically be created
293
+ in the chosen venue to solicit additional feedback. If this occurs, the
294
+ ``Discussions-To`` link and ``Post-History`` in the PEP must be updated to
295
+ reflect this new thread, and (if not the discussion venue) a further
296
+ announcement sent to `Python-Dev`_ containing the same information as above
297
+ and at least briefly summarizing the major changes.
298
+
259
299
PEP authors are responsible for collecting community feedback on a PEP
260
- before submitting it for review. However, wherever possible, long
261
- open-ended discussions on public mailing lists should be avoided.
262
- Strategies to keep the discussions efficient include: setting up a
263
- separate SIG mailing list for the topic, having the PEP author accept
264
- private comments in the early design phases, setting up a wiki page, etc.
300
+ before submitting it for review. However, to avoid long-winded and
301
+ open-ended discussions, strategies such as soliciting private or more
302
+ narrowly-tailored feedback in the early design phase,
303
+ collaborating with other community members with expertise in the PEP's
304
+ subject matter, and picking an appropriately-specialized discussion for the
305
+ PEP's topic (if applicable) should be considered.
265
306
PEP authors should use their discretion here.
266
307
308
+ Once the PEP is assigned a number and committed to the PEP repository,
309
+ substantive issues should generally be discussed on the canonical public
310
+ thread, as opposed to private channels, GitHub pull request reviews or
311
+ unrelated venues. This ensures everyone can follow and contribute,
312
+ avoids fragmenting the discussion,
313
+ and makes sure it is fully considered as part of the PEP review process.
314
+ Comments, support, concerns and other feedback on this designated thread
315
+ are a critical part of what the Steering Council or PEP-Delegate will
316
+ consider when reviewing the PEP.
317
+
267
318
268
319
PEP Review & Resolution
269
320
-----------------------
270
321
271
322
Once the authors have completed a PEP, they may request a review for
272
323
style and consistency from the PEP editors.
273
-
274
- However, content review of the PEP must be requested of the
275
- core developers, usually via an email to the python-dev mailing list.
324
+ However, content review and acceptance of the PEP is ultimately the
325
+ responsibility of the Steering Council, which is formally initiated by
326
+ opening a `Steering Council issue`_ once the authors (and sponsor, if any)
327
+ determine the PEP is ready for final review and resolution.
276
328
277
329
To expedite the process in selected cases (e.g. when a change is clearly
278
330
beneficial and ready to be accepted, but the PEP hasn't been formally submitted
@@ -325,13 +377,6 @@ replacement can be found). In the event that a PEP-Delegate is asked to step
325
377
down, this will overrule any prior acceptance or rejection of the PEP, and it
326
378
will revert to Draft status.
327
379
328
- With the approval of the Steering Council, PEP review and resolution may also
329
- occur on a list other than python-dev (for example, distutils-sig for packaging
330
- related PEPs that don't immediately affect the standard library). In these
331
- cases, the "Discussions-To" heading in the PEP will identify the appropriate
332
- alternative list where discussion, review and pronouncement on the PEP will
333
- occur.
334
-
335
380
When such standing delegations are put in place, the Steering Council will
336
381
maintain sufficient public records to allow subsequent Councils, the core
337
382
developers, and the wider Python community to understand the delegations that
@@ -348,6 +393,11 @@ the interpreter unduly. Finally, a proposed enhancement must be
348
393
the Steering Council. This logic is intentionally circular.) See :pep:`2`
349
394
for standard library module acceptance criteria.
350
395
396
+ Except where otherwise approved by the Steering Council, pronouncements
397
+ of PEP resolution will be posted to the `Python-Dev`_ mailing list,
398
+ and may be mirrored on the official "Discussions-To" thread and other venues,
399
+ as appropriate.
400
+
351
401
Once a PEP has been accepted, the reference implementation must be
352
402
completed. When the reference implementation is complete and incorporated
353
403
into the main source code repository, the status will be changed to "Final".
@@ -379,9 +429,10 @@ themselves has decided that the PEP is actually a bad idea, or has
379
429
accepted that a competing proposal is a better alternative.
380
430
381
431
When a PEP is Accepted, Rejected or Withdrawn, the PEP should be updated
382
- accordingly. In addition to updating the status field, at the very least
432
+ accordingly. In addition to updating the Status field, at the very least
383
433
the Resolution header should be added with a link to the relevant post
384
- in the python-dev mailing list archives.
434
+ in the `Python-Dev`_ mailing list
435
+ `archives <https://mail.python.org/archives/list/
[email protected] />`_.
385
436
386
437
PEPs can also be superseded by a different PEP, rendering the original
387
438
obsolete. This is intended for Informational PEPs, where version 2 of
@@ -543,15 +594,15 @@ optional and are described below. All other headers are required.
543
594
Author: <list of authors' real names and optionally, email addrs>
544
595
* Sponsor: <real name of sponsor>
545
596
* PEP-Delegate: <PEP delegate's real name>
546
- * Discussions-To: <email address or URL >
597
+ Discussions-To: <URL of current canonical discussion thread >
547
598
Status: <Draft | Active | Accepted | Provisional | Deferred | Rejected |
548
599
Withdrawn | Final | Superseded>
549
600
Type: <Standards Track | Informational | Process>
550
601
* Content-Type: <text/x-rst | text/plain>
551
602
* Requires: <pep numbers>
552
603
Created: <date created on, in dd-mmm-yyyy format>
553
604
* Python-Version: <version number>
554
- Post-History: <dates of postings to python-ideas and/or python-dev >
605
+ Post-History: <dates of postings to Python-Dev and/or the Discussions-To thread, in dd-mmm-yyyy format >
555
606
* Replaces: <pep number>
556
607
* Superseded-By: <pep number>
557
608
* Resolution: <url>
@@ -588,16 +639,13 @@ limitation in the email address masking for reStructuredText PEPs)
588
639
589
640
*Note: The Resolution header is required for Standards Track PEPs
590
641
only. It contains a URL that should point to an email message or
591
- other web resource where the pronouncement about the PEP is made.*
642
+ other web resource where the pronouncement about
643
+ (i.e. approval or rejection of) the PEP is made.*
592
644
593
- For a PEP where final pronouncement will be made on a list other than
594
- python-dev, a Discussions-To header will indicate the mailing list
595
- or URL where the pronouncement will occur. A temporary Discussions-To header
596
- may also be used when a draft PEP is being discussed prior to submission for
597
- pronouncement. No Discussions-To header is necessary if the PEP is being
598
- discussed privately with the author, or on the python-list, python-ideas
599
- or python-dev mailing lists. Note that email addresses in the
600
- Discussions-To header will not be obscured.
645
+ The Discussions-To header provides the URL to the current
646
+ canonical discussion thread for the PEP.
647
+ For email lists, this should be a direct link to the thread in the list's
648
+ archives, rather than just a mailto: or hyperlink to the list itself.
601
649
602
650
The Type header specifies the type of PEP: Standards Track,
603
651
Informational, or Process.
@@ -611,8 +659,8 @@ Content-Type header is present.
611
659
612
660
The Created header records the date that the PEP was assigned a
613
661
number, while Post-History is used to record the dates of when new
614
- versions of the PEP are posted to python-ideas and/or python-dev. Both
615
- headers should be in dd-mmm-yyyy format, e.g. 14-Aug-2001.
662
+ versions of the PEP are posted to Python-Dev and/or the Discussions-To thread.
663
+ Both headers should be in dd-mmm-yyyy format, e.g. 14-Aug-2001.
616
664
617
665
Standards Track PEPs will typically have a Python-Version header which
618
666
indicates the version of Python that the feature will be released with.
@@ -803,12 +851,26 @@ Footnotes
803
851
804
852
.. _PEP repository: https://github.com/python/peps
805
853
806
- .. _`GitHub pull request` : https://github.com/python/peps/pulls
854
+ .. _GitHub pull request: https://github.com/python/peps/pulls
807
855
808
- .. _`GitHub issue` : https://github.com/python/peps/issues
856
+ .. _GitHub issue: https://github.com/python/peps/issues
809
857
810
858
.. _Steering Council issue: https://github.com/python/steering-council/issues/new/choose
811
859
860
+ .. _Python-Ideas: https://mail.python.org/mailman3/lists/python-ideas.python.org/
861
+
862
+ .. _Python-Dev: https://mail.python.org/mailman3/lists/python-dev.python.org/
863
+
864
+ .. _Python Discourse: https://discuss.python.org/
865
+
866
+ .. _Ideas category: https://discuss.python.org/c/ideas/
867
+
868
+ .. _PEPs category: https://discuss.python.org/c/peps/
869
+
870
+ .. _Typing-SIG: https://mail.python.org/mailman3/lists/typing-sig.python.org/
871
+
872
+ .. _Packaging category: https://discuss.python.org/c/packaging/
873
+
812
874
813
875
Copyright
814
876
=========
0 commit comments