Re-order and flesh out what belongs in a PEP (#909)

This commit is contained in:
Brett Cannon 2019-03-04 17:13:32 -08:00 committed by GitHub
parent 584befc79d
commit c3e468c2e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 54 additions and 31 deletions

View File

@ -401,7 +401,7 @@ these cases will depend on the nature and purpose of the PEP being updated.
What belongs in a successful PEP? What belongs in a successful PEP?
================================= =================================
Each PEP should have the following parts: Each PEP should have the following parts/sections:
1. Preamble -- RFC 822 style headers containing meta-data about the 1. Preamble -- RFC 822 style headers containing meta-data about the
PEP, including the PEP number, a short descriptive title (limited PEP, including the PEP number, a short descriptive title (limited
@ -411,40 +411,48 @@ Each PEP should have the following parts:
2. Abstract -- a short (~200 word) description of the technical issue 2. Abstract -- a short (~200 word) description of the technical issue
being addressed. being addressed.
3. Copyright/public domain -- Each PEP must either be explicitly 3. Motivation -- The motivation is critical for PEPs that want to
labeled as placed in the public domain (see this PEP as an change the Python language, library, or ecosystem. It should
example) or licensed under the `Open Publication License`_. clearly explain why the existing language specification is
inadequate to address the problem that the PEP solves. PEP
submissions without sufficient motivation may be rejected outright.
4. Specification -- The technical specification should describe the 4. Rationale -- The rationale fleshes out the specification by
describing why particular design decisions were made. It should
describe alternate designs that were considered and related work,
e.g. how the feature is supported in other languages.
The rationale should provide evidence of consensus within the
community and discuss important objections or concerns raised
during discussion.
5. Specification -- The technical specification should describe the
syntax and semantics of any new language feature. The syntax and semantics of any new language feature. The
specification should be detailed enough to allow competing, specification should be detailed enough to allow competing,
interoperable implementations for at least the current major Python interoperable implementations for at least the current major Python
platforms (CPython, Jython, IronPython, PyPy). platforms (CPython, Jython, IronPython, PyPy).
5. Motivation -- The motivation is critical for PEPs that want to 6. Backwards Compatibility -- All PEPs that introduce backwards
change the Python language. It should clearly explain why the
existing language specification is inadequate to address the
problem that the PEP solves. PEP submissions without sufficient
motivation may be rejected outright.
6. Rationale -- The rationale fleshes out the specification by
describing what motivated the design and why particular design
decisions were made. It should describe alternate designs that
were considered and related work, e.g. how the feature is supported
in other languages.
The rationale should provide evidence of consensus within the
community and discuss important objections or concerns raised
during discussion.
7. Backwards Compatibility -- All PEPs that introduce backwards
incompatibilities must include a section describing these incompatibilities must include a section describing these
incompatibilities and their severity. The PEP must explain how the incompatibilities and their severity. The PEP must explain how the
author proposes to deal with these incompatibilities. PEP author proposes to deal with these incompatibilities. PEP
submissions without a sufficient backwards compatibility treatise submissions without a sufficient backwards compatibility treatise
may be rejected outright. may be rejected outright.
7. Security Implications -- If there are security concerns in relation
to the PEP, those concerns should be expliciltly written out to make
sure reviewers of the PEP are aware of them.
8. Reference Implementation -- The reference implementation must be 8. How to Teach This -- For a PEP that adds new functionality or changes
language behavior, it is helpful to include a section on how to
teach users, new and experienced, how to apply the PEP to their
work.
This section may include key points and recommended documentation
changes that would help users adopt a new feature or migrate their
code to use a language change.
9. Reference Implementation -- The reference implementation must be
completed before any PEP is given status "Final", but it need not completed before any PEP is given status "Final", but it need not
be completed before the PEP is accepted. While there is merit be completed before the PEP is accepted. While there is merit
to the approach of reaching consensus on the specification and to the approach of reaching consensus on the specification and
@ -455,15 +463,30 @@ Each PEP should have the following parts:
The final implementation must include test code and documentation The final implementation must include test code and documentation
appropriate for either the Python language reference or the appropriate for either the Python language reference or the
standard library reference. standard library reference.
10. Rejected Ideas -- Throughout the discussion of a PEP, various ideas
will be proposed which are not accepted. Those rejected ideas should
be recorded along with the reasoning as to why they were rejected.
This both helps record the thought process behind the final version
of the PEP as well as preventing people from bringing up the same
rejected idea again in subsequent discussions.
In a way this section can be thought of as a breakout section of the
Rationale section that is focused specifically on why certain ideas
were not ultimately pursued.
9. How to Teach This -- For a PEP that adds new functionality or changes 11. Open Issues -- While a PEP is in draft, ideas can come up which
language behavior, it is helpful to include a section on how to warrant further discussion. Those ideas should be recorded so people
teach users, new and experienced, how to apply the PEP to their know that they are being thought about but do not have a concrete
work. resolution. This helps make sure all issues required for the PEP to be
ready for consideration are complete complete and reduces people
This section may include key points and recommended documentation duplicating prior discussion.
changes that would help users adopt a new feature or migrate their
code to use a language change. 12. References -- A collection of URLs used as references through the PEP.
13. Copyright/public domain -- Each PEP must either be explicitly
labeled as placed in the public domain (see this PEP as an
example) or licensed under the `Open Publication License`_.
PEP Formats and Templates PEP Formats and Templates