Replies: 3 comments 2 replies
-
This looks great to me. One question: Where is the PEP status (Proposed, Provisional, etc.) tracked? In the PEP content itself or elsewhere? (In the GitHub PR?) |
Beta Was this translation helpful? Give feedback.
-
Two questions (1) Where does Owner come up in the lifecycle? I think the preamble metadata should include the status for the PEP and refer to lifecycle stages (unless status is tracked elsewhere ?) In the motivation section, can we add something about the who is impacted by the PEP? This might not be the right section for this, but just thinking "with a community hat on" .. if I'm reading a PEP and it tells me upfront who the impact is for, consumer of bundles, bundle author, etc that may be helpful. |
Beta Was this translation helpful? Give feedback.
-
I have created a repository for proposals. Our first proposal will be the PEP process. 😀 I am working on that today and should have it ready soon. Here is my PEP to add a PEP process. 😀 |
Beta Was this translation helpful? Give feedback.
-
Background
I have been thinking about how I can improve how proposals are handled going forward. Right now, people make proposals either in an issue or on our forum or slack messages, etc, we hash it out there, sometimes making a new issue to track the final set of work, and then start on it.
I’m finding that it’s really hard to engage with these discussions and give people a proper turnabout time. It takes a while to read through them, understand the use cases, potential impact of the change, understand if there are gaps or unintended consequences, etc and that usually ends up looking like no response from me for too long. I think it would help if we created a single process for proposals, so that I can quickly weigh in on “Is this worth pursuing” without implicitly giving people the impression that I have done all the mentioned due diligence and a false impression that it’s approved or ready to start on.
I’m hoping that if we define a process and identity what due diligence needs to happen before it’s finally considered and approved, it would help us make changes more safely, and collaborate on a design.
Below is a suggestion for a PEP process. It would be great if contributors can look it over and let us know if it seems okay or not. Once I get feedback on this, I'll turn this into a document in Porter's repo.
Porter Enhancement Proposal (PEP)
I would like to do a lightweight version of the Python Enhancement Proposal.
PEP Roles
When is a PEP required?
A PEP is helpful when we need to have an agreed upon design, analysis of risk/scope, or evaluation of user experience up-front. Based on that a PEP is required when altering:
In general it isn't necessary for bug fixes, documentation updates, website tweaks, build changes or meta project concerns. A maintainer may ask for a PEP when they feel that a change would benefit from
the PEP process.
PEP Contents
Every PEP should have the following sections:
Each PEP should have the following parts/sections (modified from Python's PEP):
Preamble -- Meta-data about the PEP, including the PEP number, a short descriptive title (limited to a maximum of 44 characters), the names of the author(s) and status.
Abstract -- a short (~200 word) description of the technical issue being addressed.
Motivation -- It should clearly explain why Porter's existing functionality is inadequate to address the problem that the PEP solves and the impacted audience(s) (mixin developers, bundle authors, end-users). PEP submissions without sufficient motivation may be rejected outright. This is the most important part at the beginning and is required before moving forward.
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.
The rationale should provide evidence of consensus within the community and discuss important objections or concerns raised during discussion.
Specification -- The technical specification should describe the command and/or configuration syntax and semantics of any new feature.
porter COMMAND --help
would look like: description of command, arguments, flags, default behavior and error handling.Backwards Compatibility -- All PEPs that introduce backwards incompatibilities must include a section describing these
incompatibilities and their severity. The PEP must explain how to deal with these incompatibilities, possibly with defaulting or migrations. PEP submissions without a sufficient backwards compatibility treatise may be rejected outright.
Security Implications -- If there are security concerns in relation to the PEP, those concerns should be explicitly written out to make sure reviewers of the PEP are aware of them.
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.
Open Issues -- While a PEP is in draft, ideas can come up which warrant further discussion. Those ideas should be recorded so people know that they are being thought about but do not have a concrete resolution. This helps make sure all issues required for the PEP to be ready for consideration are complete complete and reduces people duplicating prior discussion.
PEP Lifecycle
We are using the process from Kubernetes Enhancement Proposal for our status's because they work better for our implementation than Python (Porter isn't a spec like python, so Kubernetes process fits us better).
This is the happy path, where a PEP is accepted.
implementable
.Resting States
rejected
and reiterate the rejection, including enough context that someone can understand it without going back to old pull requests. The status is REJECTED.replaced
. If the original PEP was implemented, wait to update it to replaced until the new PEP is implemented. For in-progress PEPs, it can be merged immediately. The status is now REPLACED.Beta Was this translation helpful? Give feedback.
All reactions