Re-order and flesh out what belongs in a PEP (#909)
This commit is contained in:
parent
584befc79d
commit
c3e468c2e8
85
pep-0001.txt
85
pep-0001.txt
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue