Excellent proposal. Inline below.
Sent from my iPhone > On Feb 26, 2023, at 3:19 AM, Asaf Mesika <asaf.mes...@gmail.com> wrote: > > Hi, > > I would like to suggest two changes I'd like to make to the PIP design > template: > 1. Remove the form - just have a markdown template fill the issue body as > it is created. > 2. Change the PIP template structure > > == Removing the form > > Today, when you want to submit a PIP, you are required to fill out a form > with boxes composed of 3-4 lines length. > It's not good because: > * It broadcasts to the author: we want a very small PIP, something that > fits those small boxes. > * It makes the PIP look like a bug, where you fill out fields. > * It doesn't allow having H2 headings, only H1 headings, thus limiting the > structure. > > A PIP is a design essentially, something 1-3 pages long. Thus, > people take the time to write it down. Preferably, they copy paste the body > of the PIP issue, and use it to fill in sections. > > My suggestion is to define an issue template using only markdown, without a > form. > > == Changing PIP Structure > > Today the structure of the PIP doc (pasted below), is missing a section and > generally aims to jump directly into API changes / code / implementation. > This results in lots of back and forth emails in an attempt to get the > following essentials: > * All required background knowledge to understand the proposal > * A high level overview of the proposed solution > * Understanding how this proposal will be monitored > * What steps exactly I need to take if I revert to the previous version. > > The structure I propose below aims to reduce that friction and get all PIP > aligned to provide that information. > > === Today's structure > > # 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" Yes this is important as api and similar changes are what triggers requiring small pips. > # 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." > # Alernatives > * "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" > # Anything else? > > > === My suggestion > > # Motivation and Background information > * Give a high level explanation on all concepts you will be using > throughout this document. For example, if you want to talk about Persistent > Subscriptions, explain briefly (1 paragraph) what this is. If you're going > to talk about Transaction Buffer, explain briefly what this is. If you're > going to change something specific, that goes into a bit more detail about > it and how it works. The Litmus test: I can read the design document and > understand the problem statement and what you plan to change *without* > resorting to a couple of hours of code reading just to start having a high > level understanding of the change. > * Provide links where possible if a person wants to dig deeper into the > background information. > * Explain what is the problem you're trying to solve - current situation. > * This section is the "Why" of your proposal. > > # Goals > ## Scope > * Describe the goals of your proposal, and why it benefits Apache Pulsar > ## Out of Scope > * Describe what you have decided to keep out of scope, perhaps left for a > different PIP/s. > > # High-level Design > * Describe in high level, end-to-end, the solution. This should be a few > paragraphs long as a guideline. > * Reading this would allow me to understand the solution from a bird's eye > view, end to end. > * DON'T put all the design in a Google Doc and share the link here, as it > won't last the test of time. +1000! A Google doc hides details and obfuscates the design and motivation. Google docs are not searchable within GitHub. We should reject all new PIPs that include Google Docs. Best, Dave > > # Detailed Design > * Describe in detail what you plan to do to achieve your high level design > * It should include the following if applicable: > * REST API Changes > * Protocol Changes > > # Monitoring > * Describe exactly what you will add to Pulsar allowing you to > monitor/observe this proposal? > * If those are metrics, provide the names, description, labels and units > * Explain what constitutes abnormal that I should pay attention to > > # Backward Compatibility > * Describe exact instructions if someone needs to revert from a version > containing it to a previous version > > # Alternatives > * Describe alternative design decisions and why you have not opted for them > > # General notes > * Any general notes you wish to make > > # Links (Updated afterwards) > * Mailing List discussion thread: > * Mailing List voting thread: > > == > Would love to hear what you think about it, before opening a PR about this.