-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC Process #47
Comments
Btw this is meta-RFC or the RFC of all RFCs or something… but I tried to use the template above to create this issue and hope this issue can be preparing the initial work of then creating the first PR on the empty |
+1 from me. We started to introduce something like this in the past. The remnants of which are in https://github.com/Kuadrant/architecture I like the more formal open/discuss/final says/close as it keeps things moving. Once concern is if we feel we need a particular reviewer for something. I don't think we can close if they haven't had chance yet. |
See this PR here |
Summary
This is an attempt at streamlining and formalizing the addition of features to Kuadrant and its components:
Authorino
,Limitador
and possible more to come. It describes a process, Request For Comment (RFC). That process would be followed by contributors to Kuadrant in order to add features to the platform. The process aims at enabling the teams to deliver better defined software with a better experience for our end-users.Motivation
As I went through the process of redefining the syntax for
Condition
s inLimitador
, I found it hard to seed people's mind with the problem's space as I perceived it. I started by asking questions on the issues itself that didn't get the traction I had hoped for until the PR was eventually opened.This process should help the author to consider the proposed change in its entirety: the change, its pros & cons, its documentation and the error cases. Making it easier for reviewers to understand the impact of the change being considered.
Further more, this keeps a "written" record of "a decision log" of how a feature came to be. It would help the ones among us who tend to forget about things, but would be of incommensurate value for future contributors wanting to either understand a feature deeply or build upon certain features to enable a new one.
Guide-level explanation
A contributor would start by following the template for a new Request For Comment (RFC). Eventually opening a pull request with the proposed change explained. At which point it automatically becomes a point of discussion for the next upcoming technical discussion weekly call.
Anyone is free to add ideas, raise issues, point out possible missing bits in the proposal before the call on the PR itself. The outcome of the technical discussion call is recorded on the PR as well, for future reference.
Once the author feels the proposal is in a good shape and has addressed the comments provided by the team and community, they can label the RFC as FCP, entering the Final Comment Period_. From that point on, there is another week left for commenters to express any remaining concerns. After which, the RFC is merged and going into active status, ready for implementation.
Reference-level explanation
Creating a
Kuadrant/rfcs
repository, with theREADME
below and a template to start a new RFC from:README.md
and0000-template.md
files below for more details.Drawbacks
The process proposed here adds overhead to addition of new features onto our stack. It will require more upfront specification work. It may require doing a few proof of concepts along the initial authoring, to enable the author to better understand the problem space.
Rationale and alternatives
What we've done until now,
investigation
s have been less formal, but I'm unsure how much of their value got properly and entirely captured. By formalizing the process and having a clear outcome: a implementable piece of documentation, that address all aspects of the user's experience look like a better result.Prior art
The entire idea isn't new. This very proposal is based on prior art by
rust-lang
andpony-lang
. This process isn't perfect, but has been proven over and over again to work.Unresolved questions
Kuadrant/rfcs
?kcp-glbc
?Future possibilities
I certainly see this process itself evolving overtime. I like to think that this process can itself be supporting its future changes…
README.md
Kuadrant RFCs
The RFC (Request For Comments) process is aiming at providing a consistent and well understood way of adding new features or introducing breaking changes in the Kuadrant stack. It provides a mean for all stakeholders and community at large to provide feedback and be confident about the evolution of our solution.
Many, if not most of the changes will not require to follow this process. Bug fixes, refactoring, performance improvements or documentation additions/improvements can be implemented using the tradition PR (Pull Request) model straight to the targeted repositories on Github.
Additions or any other changes that impact the end user experience will need to follow this process.
When is an RFC required?
This process is meant for any changes that affect the user's experience in any way: addition of new APIs, changes to existing APIs - whether they are backwards compatible or not - and any other change to behaviour that affects the user of any components of Kuadrant.
When no RFC is required?
The RFC process
The first step in adding a new feature to Kuadrant, or a starting a major change, is the having a RFC merged into the repository. One the file has been merged, the RFC is considered active and ready to be worked on.
0000-template.md
to copy and rename it into therfcs
directory. Change thetemplate
suffix to something descriptive. But this is still a proposal and as no assigned RFC number to it yet.The RFC lifecycle
Implementation
The work is itself tracked in a "master" issue with all the individual, manageable implementation tasks tracked.
The state of that issue is initially "open" and ready for work, which doesn't mean it'd be worked on immediately or by the RFC's author. That work will be planned and integrated as part of the usual release cycle of the Kuadrant stack.
Amendments
It isn't expected for an RFC to change, once it has become active. Minor changes are acceptable, but any major change to an active RFC should be treated as an independent RFC and go through the cycle described here.
EOF
0000-template.md
RFC Template
new_feature
)Summary
One paragraph explanation of the feature.
Motivation
Why are we doing this? What use cases does it support? What is the expected outcome?
Guide-level explanation
Explain the proposal as if it was implemented and you were teaching it to Kuadrant user. That generally means:
Reference-level explanation
This is the technical portion of the RFC. Explain the design in sufficient detail that:
The section should return to the examples given in the previous section, and explain more fully how the detailed proposal makes those examples work.
Drawbacks
Why should we not do this?
Rationale and alternatives
Prior art
Discuss prior art, both the good and the bad, in relation to this proposal.
A few examples of what this can include are:
This section is intended to encourage you as an author to think about the lessons from other tentatives - successful or not, provide readers of your RFC with a fuller picture.
Note that while precedent set by other projects is some motivation, it does not on its own motivate an RFC.
Unresolved questions
Future possibilities
Think about what the natural extension and evolution of your proposal would be and how it would affect the platform and project as a whole. Try to use this section as a tool to further consider all possible interactions with the project and its components in your proposal. Also consider how this all fits into the roadmap for the project and of the relevant sub-team.
This is also a good place to "dump ideas", if they are out of scope for the RFC you are writing but otherwise related.
Note that having something written down in the future-possibilities section is not a reason to accept the current or a future RFC; such notes should be in the section on motivation or rationale in this or subsequent RFCs. The section merely provides additional information.
EOF
The text was updated successfully, but these errors were encountered: