+1,lgtm Best Regards.
Jia Zhai Beijing, China Mobile: +86 15810491983 On Thu, Aug 19, 2021 at 4:20 PM PengHui Li <peng...@apache.org> wrote: > +1, the proposal looks good to me! > > Thanks, > Penghui > > On Thu, Aug 19, 2021 at 3:49 PM Enrico Olivelli <eolive...@gmail.com> > wrote: > > > Matteo, > > Overall the proposal looks good to me. > > I have a couple of points, about the 'VOTE' and about what is subject to > a > > PIP or not. > > I will add my comments inline below > > > > Shall we need a "meta PIP" for this PIP ? Just joking, this discussion is > > probably enough. > > > > Thank you very much, we really needed this ! > > > > I hope we can move the results of this email to the website or to the > > wiki. > > > > Enrico > > > > Il giorno gio 19 ago 2021 alle ore 07:52 Sijie Guo <guosi...@gmail.com> > ha > > scritto: > > > > > +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) > > > > > > > I agree that the CLI is really an API, but sometimes we add options in a > > very straightforward way, > > I am not sure we must require a PIP for every option, especially if we > are > > simply exposition some Pulsar Client feature that is not available on the > > CLI tools. > > > > > * 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 > > > > > > > I believe that this 'simple' is the key to understanding why a PIP is > > required. > > Probably it is better to keep this document simple and leave to the > > judgment of the reviewers to ask for a PIP or not. > > I am afraid that we will need too many PIPs even for small changes that > > formally are touching the APIs > > > > > > > > * 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. > > > > > > > This is too hard from my point of view. > > We need PMC members to vote on a release, this is the ASF rules and this > is > > needed to guarantee the quality (at every level, legal, code...) of a > > release. > > I believe that even for an API change when you have 2 or 3 "committers" > > that are supporting the change it is enough. > > Otherwise the process will become like a "release", that usually is > > perceived as a "heavy weight" process. > > If you approve a PIP, and even if you commit some patch about it you can > > always "git revert", so the committer role is enough to approve this kind > > of decisions. > > > > so my proposal is to change "PMC members" to "committers" > > > > Enrico > > > > > > > > 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 > > > > > > > > > >