From 8354ac937c8e6946bd4008dbce9e7725ee53a03f Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Mon, 15 Nov 2021 13:26:07 +0200 Subject: [PATCH 1/4] Introduce the Flux RFC template The RFC template is heavily inspired by Rust RFCs and Kubernetes KEPs. Signed-off-by: Stefan Prodan --- rfcs/README.md | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 rfcs/README.md diff --git a/rfcs/README.md b/rfcs/README.md new file mode 100644 index 0000000000..2378ac47e7 --- /dev/null +++ b/rfcs/README.md @@ -0,0 +1,102 @@ +# Flux RFCs + +In many cases, new features and enhancements are proposed on [flux2/discussions](https://github.com/fluxcd/flux2/discussions). +A proposal is discussed in public by maintainers, contributors, users and other interested parties. +After some form of consensus is reached between participants, the proposed changes go through the +pull request process where the implementation details are reviewed, approved or rejected by maintainers. + +Some proposals may be **substantial**, and for these we ask for a design process to be followed +so that all stakeholders can be confident about the direction Flux is evolving in. + +The "RFC" (request for comments) process is intended to provide a consistent and +controlled path for substantial changes to enter Flux. + +Examples of substantial changes: + +- API additions (new kinds of resources, new relationships between existing APIs) +- API breaking changes (new required fields, field removals) +- Security related changes (Flux controllers permissions, tenant isolation and impersonation) +- Impactful UX changes (new required inputs to the bootstrap process) +- Drop capabilities (sunset an existing integration with an external service due to security concerns) + +## RFC Template + +```text +# RFC-NNNN Title + + + +## Summary + + + +## Motivation + + + +### Goals + + + +### Non-Goals + + + +## Proposal + + + +### User Stories + + + +### Alternatives + + + +## Design Details + + + +## Implementation History + + +``` From c5b2c6709a76d5fc0cb6cfc37934c19ad71b483c Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Tue, 30 Nov 2021 14:54:02 +0200 Subject: [PATCH 2/4] Add status, creation and last update date fields to RFC template Signed-off-by: Stefan Prodan --- rfcs/README.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/rfcs/README.md b/rfcs/README.md index 2378ac47e7..16b9d039a8 100644 --- a/rfcs/README.md +++ b/rfcs/README.md @@ -28,6 +28,17 @@ Examples of substantial changes: The title must be short and descriptive. --> +**Status:** provisional + + + +**Creation Date:** YYYY-MM-DD + +**Last update:** YYYY-MM-DD + ## Summary ## Design Details @@ -83,7 +95,7 @@ motivate why the current proposal is superior. This section should contain enough information that the specifics of your change are understandable. This may include API specs and code snippets. -The design details should answer the following questions: +The design details should address at least the following questions: - How can this feature be enabled / disabled? - Does enabling the feature change any default behavior? - Can the feature be disabled once it has been enabled? From 99a0c47277b0501a9d399b943286a3b9fda068be Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Tue, 30 Nov 2021 15:01:57 +0200 Subject: [PATCH 3/4] Add RFC process Signed-off-by: Stefan Prodan --- rfcs/README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/rfcs/README.md b/rfcs/README.md index 16b9d039a8..e13b2984e9 100644 --- a/rfcs/README.md +++ b/rfcs/README.md @@ -19,6 +19,31 @@ Examples of substantial changes: - Impactful UX changes (new required inputs to the bootstrap process) - Drop capabilities (sunset an existing integration with an external service due to security concerns) +## RFC Process + +- Before submitting an RFC please discuss the proposal with the Flux community. + Start a discussion on GitHub and ask for feedback at the weekly dev meeting. + You must find a maintainer willing to sponsor the RFC. +- Submit an RFC by opening a pull request using RFC-0000 as template. +- The sponsor will assign the PR to themselves, will label the PR with `area/RFC` and + will request other maintainers to begin the review process. +- Integrate feedback by adding commits without overriding the history. +- At least two maintainers have to approve the proposal before it can be merged. + Approvers must be satisfied that an + [appropriate level of consensus](https://github.com/fluxcd/community/blob/main/GOVERNANCE.md#decision-guidelines) + has been reached. +- Before the merge, an RFC number is assigned by the sponsor and the PR branch must be rebased with main. +- Once merged, the proposal may be implemented in Flux. + The progress could be tracked using the RFC number (used as prefix for issues and PRs). +- After the proposal implementation is available in a release candidate or final release, + the RFC should be updated with the Flux version added to the "Implementation History" section. +- During the implementation phase, the RFC could be discarded due to security or performance concerns. + In this case, the RFC "Implementation History" should state the rejection motives. + Ultimately the decision on the feasibility of a particular implementation, + resides with the maintainers that reviewed the code changes. +- A new RFC could be summited with the scope of replacing an RFC rejected during implementation. + The new RFC must come with a solution for the rejection motives of the previous RFC. + ## RFC Template ```text From 2c3cb1a664a12df0c4a2b2abf102eb6c578c98a3 Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Tue, 30 Nov 2021 16:28:29 +0200 Subject: [PATCH 4/4] Add template to RFC-0000 Signed-off-by: Stefan Prodan --- rfcs/README.md | 96 +---------------------------------------- rfcs/RFC-0000/README.md | 92 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 95 deletions(-) create mode 100644 rfcs/RFC-0000/README.md diff --git a/rfcs/README.md b/rfcs/README.md index e13b2984e9..07a049fdac 100644 --- a/rfcs/README.md +++ b/rfcs/README.md @@ -24,7 +24,7 @@ Examples of substantial changes: - Before submitting an RFC please discuss the proposal with the Flux community. Start a discussion on GitHub and ask for feedback at the weekly dev meeting. You must find a maintainer willing to sponsor the RFC. -- Submit an RFC by opening a pull request using RFC-0000 as template. +- Submit an RFC by opening a pull request using [RFC-0000](RFC-0000/README.md) as template. - The sponsor will assign the PR to themselves, will label the PR with `area/RFC` and will request other maintainers to begin the review process. - Integrate feedback by adding commits without overriding the history. @@ -43,97 +43,3 @@ Examples of substantial changes: resides with the maintainers that reviewed the code changes. - A new RFC could be summited with the scope of replacing an RFC rejected during implementation. The new RFC must come with a solution for the rejection motives of the previous RFC. - -## RFC Template - -```text -# RFC-NNNN Title - - - -**Status:** provisional - - - -**Creation Date:** YYYY-MM-DD - -**Last update:** YYYY-MM-DD - -## Summary - - - -## Motivation - - - -### Goals - - - -### Non-Goals - - - -## Proposal - - - -### User Stories - - - -### Alternatives - - - -## Design Details - - - -## Implementation History - - -``` diff --git a/rfcs/RFC-0000/README.md b/rfcs/RFC-0000/README.md new file mode 100644 index 0000000000..b935b064d5 --- /dev/null +++ b/rfcs/RFC-0000/README.md @@ -0,0 +1,92 @@ +# RFC-NNNN Title + + + +**Status:** provisional + + + +**Creation date:** YYYY-MM-DD + +**Last update:** YYYY-MM-DD + +## Summary + + + +## Motivation + + + +### Goals + + + +### Non-Goals + + + +## Proposal + + + +### User Stories + + + +### Alternatives + + + +## Design Details + + + +## Implementation History + +