|
| 1 | +# oneTBB Design Documents/RFCs |
| 2 | + |
| 3 | +The RFC process intends to: |
| 4 | + |
| 5 | +- Communicate library-wide changes |
| 6 | +- Collect feedback before implementation |
| 7 | +- Increase transparency in decision-making |
| 8 | +- Align different teams involved in oneTBB development |
| 9 | + |
| 10 | +This directory contains design documents (RFCs) approved |
| 11 | +or rejected for implementation in oneTBB. |
| 12 | + |
| 13 | +The possible RFC states are: |
| 14 | + |
| 15 | +1. Initial |
| 16 | +2. Proposed |
| 17 | +3. Experimental |
| 18 | +4. Supported |
| 19 | +5. Archived |
| 20 | + |
| 21 | +Most modifications or new features will naturally start as a part of a |
| 22 | +GitHub issue or discussion. Small changes do not require a formal RFC. |
| 23 | +However, if the issue or discussion results in an idea for a significant |
| 24 | +change or new feature that affects the library's public API or architecture, |
| 25 | +we recommend opening a PR to add a new RFC to the `rfcs/proposed` directory. |
| 26 | +The RFC should provide a detailed description and design of the proposed feature. |
| 27 | +or new feature that significantly impacts the library's public API or |
| 28 | +architecture, it will be suggested that a PR be opened to add a new rfc |
| 29 | +to the `rfcs/proposed` directory. The RFC contains a more detailed description |
| 30 | +and design for the feature. |
| 31 | + |
| 32 | +## General Process |
| 33 | + |
| 34 | +A template for RFCs is available as [template.md](template.md). Place the modified |
| 35 | +template in the subdirectory of the `rfcs/proposed` with a name |
| 36 | +of the form `<feature>_<extension_description>`. For example, |
| 37 | +a proposal for a new ``my_op`` flow graph node should be put into the |
| 38 | +`rfcs/proposed/flow_graph_my_op_node` directory. Use [template.md](template.md) |
| 39 | +to create the `README.md` file in that directory. The folder can |
| 40 | +contain other files referenced by the `README.md` file, such as figures. |
| 41 | + |
| 42 | +Once two maintainers approve the PR, it is merged into the `rfcs/proposed` |
| 43 | +directory. Update the RFC document with additional information as the RFC moves |
| 44 | +to different states. |
| 45 | + |
| 46 | +A proposal that is subsequently implemented and released in oneTBB |
| 47 | +as a preview feature is moved into the `rfcs/experimental` folder. The |
| 48 | +RFC for a preview feature in `rfcs/experimental` should include a description |
| 49 | +of what is required to move from experimental to fully supported -- for |
| 50 | +example, feedback from users, demonstrated performance improvements, etc. |
| 51 | + |
| 52 | +A proposal that is implemented, added to the oneTBB specification, and |
| 53 | +supported as a full feature appears in the `rfcs/supported` directory. An RFC |
| 54 | +for a fully supported feature in the `rfcs/supported` directory should |
| 55 | +have a link to the section in the oneTBB specification with its |
| 56 | +formal wording. |
| 57 | + |
| 58 | +A feature that is removed or a proposal that is abandoned or rejected will |
| 59 | +be moved to the `rfcs/archived` folder. |
| 60 | + |
| 61 | +## Document Style |
| 62 | + |
| 63 | +The design documents are stored in the `rfcs` directory, and each RFC is placed |
| 64 | +in its subdirectory under `rfcs/proposed/<feature>_<extension_description>`. |
| 65 | + |
| 66 | +- There must be a `README.md` file that contains the main RFC itself (or |
| 67 | +links to a file that contains it in the same directory). |
| 68 | + - The RFC should follow the [template.md](template.md) structure. |
| 69 | + - The directory can contain other supporting files, such as images, tex |
| 70 | + formulas, and sub-proposals / sub-RFCs. |
| 71 | + - We highly recommend using a text-based file format like markdown for easy |
| 72 | + collaboration on GitHub, but other formats like PDFs may also be acceptable. |
| 73 | +- For the markdown-written RFC, keep the text width within |
| 74 | + 100 characters, unless there is a reason to violate this rule, e.g., |
| 75 | + long links or wide tables. |
| 76 | +- It is also recommended to read through existing RFCs to better understand the |
| 77 | +general writing style and required elements. |
0 commit comments