docs/rfcs/20220410-rfc-process.md
This doc proposes the standard way to make design decisions in Taichi. The “RFC” (request for comments) process is intended to provide a consistent and controlled path for new features to land in Taichi, so that all stakeholders can be confident about the evolving direction.
Throughout the development of Taichi, we often hear new developers complaining about the steep learning curve of Taichi's codebase. One reason is that, currently the design decisions are spread across different places and hard to track.
RFC process is a well-established mechanism in the open source communities to solve this problem. It provides a common place for developers to discuss design decisions publicly. It also serves as a doc library for people who want to learn about Taichi's architecture, evolving history, etc.
yyyymmdd-rfc-template.md, fill in all the required sections.Relevant Issue.RFC is not the only documentation system. We do have other forms of documentation, including docsite, technical blogs and design docs. Unlike RFCs, design docs will be written in a retrospective way to cover existing system's design and implementation.
Instead of using date, there are other options for the RFC ID:
Date can conflict if multiple RFCs are proposed on the same day. However, given that 1) date is not the only identifier of the RFC (title is also included), and 2) TensorFlow is using date, this should be fine.
When should I initiate a new RFC?
There isn't a standard answer here. Rust's RFC guideline summarizes the situation pretty well:
You need to follow this process if you intend to make "substantial" changes to Rust, Cargo, Crates.io, or the RFC process itself. What constitutes a "substantial" change is evolving based on community norms and varies depending on what part of the ecosystem you are proposing to change...