+1 for standardizing the PIP workflow! The proposal looks good!
- Sijie On Wed, Aug 18, 2021 at 10:46 PM Matteo Merli <mme...@apache.org> wrote: > This is a proposal that I promised to send out for a long time. > It should be considered as a draft and I'd love to hear feedback on this. > > The motivations to improve the current PIP process are: > * When PIPs were introduced, the process was intentionally left as very > lightweight and not very strict. It was about the time when the first > contributors outside of Yahoo started to join the project. Now we are in > a different situation, with a much larger community. > > * The current process doesn't specify a few important things: > - When is a PIP required? > - What is the process of creating a PIP? > - When can we consider the discussion about a PIP to be "done" and what > is > the outcome? > > The goal of this proposal is not to add bureaucracy or slow-down the > development, rather just ensure a set of clear and precise guidelines for > contributors that want to submit proposals and clarification about what > they > can expect. > > This below is the text that I'm proposing. When the proposal is accepted > and > the text finalized, it would be included in the Pulsar website, to give > clear > guidelines to every contributor. > > --------------------------------------------- > > ## What is a PIP? > > The PIP is a "Pulsar Improvement Proposal" and it's the mechanism used to > propose changes to the Apache Pulsar codebases. > > The changes might be in terms of new features, large code refactoring, > changes > to APIs. > > In practical terms, the PIP defines a process in which developers can > submit > a design doc, receive feedback and get the "go ahead" to execute. > > ## What is the goal of a PIP? > > There are several goals for the PIP process: > > 1. Ensure community technical discussion of major changes to the Apache > Pulsar > codebase > > 2. Provide clear and thorough design documentation of the proposed > changes. > Make sure every Pulsar developer will have enough context to > effectively > perform a code review of the Pull Requests. > > 3. Use the PIP document to serve as the starting base on which to create > the > documentation for the new feature. > > 4. Have greater scrutiny to changes are affecting the public APIs to > reduce > chances of introducing breaking changes or APIs that are not > expressing > an ideal semantic. > > > It is not a goal for PIP to add undue process or slow-down the development. > > ## When is a PIP required? > > * Any new feature for Pulsar brokers or client > * Any change to the public APIs (Client APIs, REST APIs, Plugin APIs) > * Any change to the wire protocol APIs > * Any change to the API of Pulsar CLI tools (eg: new options) > * Any change to the semantic of existing functionality, even when current > behavior is incorrect. > * Any large code change that will touch multiple components > > ## When is a PIP *not* required? > > * Bug-fixes > * Simple enhancements that won't affect the APIs or the semantic > * Documentation changes > * Website changes > * Build scripts changes (except: a complete rewrite) > > ## Who can create a PIP? > > Any person willing to contribute to the Apache Pulsar project is welcome to > create a PIP. > > ## How does the PIP process work? > > A PIP proposal can be in these states: > 1. **DRAFT**: (Optional) This might be used for contributors to > collaborate and > to seek feedback on an incomplete version of the proposal. > > 2. **DISCUSSION**: The proposal has been submitted to the community for > feedback and approval. > > 3. **ACCEPTED**: The proposal has been accepted by the Pulsar project. > > 4. **REJECTED**: The proposal has not been accepted by the Pulsar project. > > 5. **IMPLEMENTED**: The implementation of the proposed changes have been > completed and everything has been merged. > > 5. **RELEASED**: The proposed changes have been included in an official > Apache Pulsar release. > > The process works in the following way: > > 1. The author(s) of the proposal will create a GitHub issue ticket > choosing the > template for PIP proposals. > 2. The author(s) will send a note to the dev@pulsar.apache.org mailing > list > to start the discussion, using subject prefix `[PIP] xxx`. > 3. Based on the discussion and feedback, some changes might be applied by > authors to the text of the proposal. > 4. Once some consensus is reached, there will be a vote to formally > approve > the proposal. > The vote will be held on the dev@pulsar.apache.org mailing list. > Everyone > is welcome to vote on the proposal, though it will considered to be > binding > only the vote of PMC members. > I would be required to have a lazy majority of at least 3 binding +1s > votes. > The vote should stay open for at least 48 hours. > 5. When the vote is closed, if the outcome is positive, the state of the > proposal is updated and the Pull Requests associated with this > proposal can > start to get merged into the master branch. > > All the Pull Requests that are created, should always reference the > PIP-XXX in the > commit log message and the PR title. > > ## Labels of a PIP > > In addition to its current state, the GitHub issue for the PIP will also be > tagged with other labels. > > Some examples: > * Execution status: In progress, Completed, Need Help, ... > * Targeted Pulsar release: 2.9, 2.10, ... > > > ## Template for a PIP design doc > > ``` > ## Motivation > > Explain why this change is needed, what benefits it would bring to Apache > Pulsar > and what problem it's trying to solve. > > ## Goal > > Define the scope of this proposal. Given the motivation stated above, what > are > the problems that this proposal is addressing and what other items will be > considering out of scope, perhaps to be left to a different PIP. > > ## API Changes > > Illustrate all the proposed changes to the API or wire protocol, with > examples > of all the newly added classes/methods, including Javadoc. > > ## Implementation > > This should be a detailed description of all the changes that are > expected to be made. It should be detailed enough that any developer that > is > familiar with Pulsar internals would be able to understand all the parts > of the > code changes for this proposal. > > This should also serve as documentation for any person that is trying to > understand or debug the behavior of a certain feature. > > > ## Reject Alternatives > > If there are alternatives that were already considered by the authors or, > after the discussion, by the community, and were rejected, please list them > here along with the reason why they were rejected. > > ``` > > --------------------------------------------- > > Thanks, > Matteo >