Giter Club home page Giter Club logo

design-cfps's Introduction

This directory contains CFP design proposals for features impacting repos across the Cilium Github organization.

Purpose of CFPs

The purpose of a Cilium Feature Proposal (CFP) is to allow community members to gain feedback on their designs from the Committers before the community member commits to executing on the design. By going through the design process, developers gain a high level of confidence that their designs are viable and will be accepted.

NOTE: This process is not mandatory. Anyone can execute on their own design without going through this process and submit code to the respective repos. However, depending on the complexity of the design and how experienced the developer is within the community, they could greatly benefit from going through this design process first. The risk of not getting a design proposal approved is that a developer may not arrive at a viable architecture that the community will accept.

How to create CFPs

To create a CFP, it is recommended to use the CFP-003-template.md file as an outline. The structure of this template is meant to provide a starting point for people. Feel free to edit and modify your outline to best fit your needs when creating a proposal. When you are ready to submit your CFP please:

  1. Create a CFP issue in the repo your design applies to if you haven't already
  2. Create the file in this repo, with a path of <repo>/CFP-###-subject.md where the number is the CFP issue number

For example, if your issue is filed in https://github.com/cilium/hubble with the issue number 000, and the subject of that CFP is to "Change foo to bar", the path would be hubble/CFP-000-change-foo-to-bar.md.

Many design docs also begin their life as a Google doc or other shareable file for easy commenting and editing when still in the early stages of discussion. Once your proposal is done, submit it as a PR to the design-cfps folder.

Promote awareness about your CFP in the community:

Getting a design approved

For a CFP to be considered viable, a Cilium committer needs to aprove it. After the approval, the design can be merged. A merged design proposal means the proposal is viable to be executed on, but not that there is a 100% chance it will be accepted.

Design proposal drift

After a design proposal is merged, it's likely that the actual implementation will begin to drift slightly from the original design. This is expected and there is no expectation that the original design proposal needs to be updated to reflect these differences.

The code and our documentation are the ultimate sources of truth. CFPs are merely the starting point for the implementation.

design-cfps's People

Contributors

xmulligan avatar squeed avatar joestringer avatar youngnick avatar chancez avatar michi-covalent avatar learnitall avatar vakalapa avatar

Stargazers

horlar avatar bells17 avatar thewayma avatar Paul Arah avatar Mike Morris avatar Lucas Fernando Cardoso Nunes avatar  avatar Chris Sinjakli avatar  avatar David Bimmler avatar Christian Posta avatar  avatar  avatar Tobias Klauser avatar Martynas Pumputis avatar Michael Kashin avatar Sandalots avatar George Kontridze avatar pg2000 avatar  avatar  avatar Aleksandr Razumov avatar Bryan A. S. avatar

Watchers

Kornilios Kourtis avatar James Cloos avatar Eloy Coto avatar Mike Morris avatar  avatar John Fastabend avatar Robin Hahling avatar Maciej Kwiek avatar Hemanth Malla avatar  avatar Nicolas Busseneau avatar Louis DeLosSantos avatar Antonio Ojea avatar Jarno Rajahalme avatar Marco Hofstetter avatar  avatar Aditi Ghag avatar Julian Wiedmann avatar  avatar  avatar

design-cfps's Issues

Add DCO checker on PRs

It doesn't look like we have any bot to ensure the Developer's Certificate of Origin is signed on commits. It would be good to set this up.

CFP Template

It would be great to have a template we can base other CFPs on

Improve contribution guidelines

From our Cilium community call, there can be some helpful follow up tasks to improve contributions to this repo

  • Update the main README.md to have a FAQ or similar on how to find which SIG to get in touch with
  • Maybe look into having groups in the community sig groups be taggable in CFP PRs with Github?

Clarify CFP process around status, feature maturity

It is useful to understand the status of CFPs as they make their way into this repository, so that stakeholders involved in the discussions are aligned around the degree of agreement on various aspects of each CFP.

Part of solving this issue would be to draw up a process that describes the expectations regarding "merged" CFPs, perhaps at multiple levels such as alpha, beta, etc. We can likely draw inspiration from Kubernetes upstream, Gateway API, and others to inform best practices here.

Questions that this process should solve:

  • What does it mean if a CFP is merged into this repository?
  • How does an author iterate on a CFP if there is uncertainty or the implementation details impact the design over time?
  • How does an author drive a feature towards becoming a generally available / stable feature?

Add "State" to the template

Having some form of "State" field (like "provisional", "implementable", "implemented") is useful because it allows us to merge an early design and update it later if we want. (We can just go straight to implemented though).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.