|
| 1 | +# oneCCL Design Document (RFC) |
| 2 | + |
| 3 | +> Please follow the document style requirements listed |
| 4 | +> [here](../README.md#document-style). |
| 5 | +
|
| 6 | +## Introduction |
| 7 | + |
| 8 | +Short description of the idea proposed with explained motivation. The |
| 9 | +motivation could be: |
| 10 | +- Widespread usage of the proposed feature in different frameworks or |
| 11 | + applications. Provide references to support the claim. |
| 12 | +- Improved users experience for API changes and extensions. Code snippets to |
| 13 | + showcase the benefits would be nice here. |
| 14 | +- Performance improvements with the data, if available. |
| 15 | +- Improved engineering practices. |
| 16 | + |
| 17 | +Introduction may also include any additional information that sheds light on |
| 18 | +the proposal, such as history of the matter, links to relevant issues and |
| 19 | +discussions, etc. |
| 20 | + |
| 21 | +## Proposal |
| 22 | + |
| 23 | +A full and detailed description of the proposal, with highlighted consequences. |
| 24 | + |
| 25 | +A proposal should include the alternatives that were considered with listed |
| 26 | +pros and cons. The alternatives should be clearly separated to make possible |
| 27 | +discussions clear. |
| 28 | + |
| 29 | +Pay close attention to the following aspects of the library: |
| 30 | +- API and ABI backwards compatibility. The library follows semantic versioning |
| 31 | + so if any of those interfaces are to be broken we need to state that |
| 32 | + explicitly. |
| 33 | +- Performance implications, as this is one of the main goals of the library. |
| 34 | +- Changes to the build system. While the library's primary building system is |
| 35 | + CMake, there are some frameworks that may build the library directly from the |
| 36 | + sources. |
| 37 | +- Dependencies and support matrix: does the proposal brings any new |
| 38 | + dependencies or affects the supported configurations. |
| 39 | + |
| 40 | +Some other common subsections here are: |
| 41 | +- Discussion: some people like to list all the options first (as separate |
| 42 | + subsections), and then have a dedicated section with the discussion/ |
| 43 | +- Listing of the proposed API and examples of its usage. |
| 44 | +- Testing aspects. |
| 45 | +- Short explanation and links to the related sub-proposals, if any. Such |
| 46 | + sub-proposals could be organized as separate standalone RFCs, but this is |
| 47 | + not mandatory. If the changes is insignificant, or doesn't make any sense |
| 48 | + without the original proposal it is fine to have it in the RFC. The |
| 49 | + sub-proposals are typically kept in a separate files. |
| 50 | +- Execution plan if approved, aka next steps. |
| 51 | + |
| 52 | +## Open Questions |
| 53 | + |
| 54 | +List here the significant uncertainties that are relevant to the proposal. |
| 55 | + |
| 56 | +However, sometimes the answers on these questions won't be found even if the |
| 57 | +proposal is accepted, say, by leaving the current implementation as is. |
0 commit comments