Vector uses the RFC process to formalize discussion around substantial changes to Vector. The general goals are:
- Properly spec and plan features to prevent re-work
- Formalize discussion
- Obtain consensus
- Share responsibility
- Record the decision for posterity
Examples of changes that require a RFC:
- An architectural change.
- A data model change.
- A new component that introduces new behavior.
- Removing a feature.
- Complicated tech-debt projects.
- A substantial user-visible change.
- A change that is questionably outside of the scope of Vector.
Examples of changes that do not require a RFC:
- Reorganizing code that otherwise does not change its functional behavior.
- Quantitative improvements. Such as performance improvements.
- Simple improvements to existing features.
- Search Github for previous issues and RFCs on this topic.
- Open an issue representing the change for light discussion.
- In the issue, obtain a consensus that an RFC is necessary.
- The change might get quickly rejected.
- The change might be on our long term roadmap and get deferred.
- The change might be blocked by other work.
- Create a new branch with the
rfcs/YYYY-MM-DD-issue#-title.md
file.- Example:
rfcs/2020-02-10-445-internal-observability.md
- Example:
- Submit your RFC as a pull request for discussion.
- At least 3 other team members must approve your RFC.
- Create issues representing the individual changes.
- Virtual high-five your team members and begin work.