-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[RFCs] Add rfcs directory #1464
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
33 commits
Select commit
Hold shift + click to select a range
e8aa05b
Add rfcs directory
vossmjp 9e6b4ce
Removed deprecated as cause for archive
vossmjp 6b819a3
Update rfcs/README.md
vossmjp 0bc4bba
Update rfcs/README.md
vossmjp 7e0de37
Update rfcs/README.md
vossmjp 6eddaa5
Update rfcs/template.md
vossmjp f8d7709
Update rfcs/experimental/README.md
vossmjp 86c7031
Update rfcs/template.md
vossmjp 60e7623
Update rfcs/template.md
vossmjp d70a09a
Update rfcs/README.md
vossmjp 640ee5d
Update rfcs/README.md
vossmjp ac8e085
Update rfcs/README.md
vossmjp 2076670
Update rfcs/README.md
vossmjp d329f70
Update rfcs/README.md
vossmjp 06fd104
Update rfcs/template.md
vossmjp 758959a
Update rfcs/template.md
vossmjp 068c26e
Update rfcs/template.md
vossmjp 4d67b5b
Update rfcs/template.md
vossmjp 446927b
Update rfcs/template.md
vossmjp e449916
Made wording changes in response to review.
vossmjp ad8ee51
Update rfcs/README.md
vossmjp 5431310
Update rfcs/README.md
vossmjp 6f309e0
Update rfcs/README.md
vossmjp fd42065
Update rfcs/README.md
vossmjp 344688e
Update rfcs/README.md
vossmjp 074a1e2
Update rfcs/README.md
vossmjp d407d0c
Update rfcs/README.md
vossmjp 207f07d
Update rfcs/README.md
vossmjp 62d9188
Apply suggestions from code review
vossmjp 30c06ca
Fixed line lengths and made suggested changes after review
vossmjp 6fc45a2
Update rfcs/README.md
vossmjp 9286236
Update rfcs/experimental/README.md
vossmjp 1c861eb
Updated based on review; small changes
vossmjp File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| # oneTBB Design Documents/RFCs | ||
|
|
||
| The RFC process intends to: | ||
|
|
||
| - Communicate library-wide changes | ||
| - Collect feedback before implementation | ||
| - Increase transparency in decision-making | ||
| - Align different teams involved in oneTBB development | ||
|
|
||
| This directory contains design documents (RFCs) approved | ||
| or rejected for implementation in oneTBB. | ||
|
|
||
| The possible RFC states are: | ||
|
|
||
| 1. Initial | ||
| 2. Proposed | ||
| 3. Experimental | ||
| 4. Supported | ||
| 5. Archived | ||
|
|
||
| Most modifications or new features will naturally start as a part of a | ||
| GitHub issue or discussion. Small changes do not require a formal RFC. | ||
| However, if the issue or discussion results in an idea for a significant | ||
| change or new feature that affects the library's public API or architecture, | ||
| we recommend opening a PR to add a new RFC to the `rfcs/proposed` directory. | ||
| The RFC should provide a detailed description and design of the proposed feature. | ||
| or new feature that significantly impacts the library's public API or | ||
| architecture, it will be suggested that a PR be opened to add a new rfc | ||
| to the `rfcs/proposed` directory. The RFC contains a more detailed description | ||
| and design for the feature. | ||
|
|
||
| ## General Process | ||
|
|
||
| A template for RFCs is available as [template.md](template.md). Place the modified | ||
| template in the subdirectory of the `rfcs/proposed` with a name | ||
| of the form `<feature>_<extension_description>`. For example, | ||
| a proposal for a new ``my_op`` flow graph node should be put into the | ||
| `rfcs/proposed/flow_graph_my_op_node` directory. Use [template.md](template.md) | ||
| to create the `README.md` file in that directory. The folder can | ||
| contain other files referenced by the `README.md` file, such as figures. | ||
|
|
||
| Once two maintainers approve the PR, it is merged into the `rfcs/proposed` | ||
| directory. Update the RFC document with additional information as the RFC moves | ||
| to different states. | ||
|
|
||
| A proposal that is subsequently implemented and released in oneTBB | ||
| as a preview feature is moved into the `rfcs/experimental` folder. The | ||
| RFC for a preview feature in `rfcs/experimental` should include a description | ||
| of what is required to move from experimental to fully supported -- for | ||
| example, feedback from users, demonstrated performance improvements, etc. | ||
|
|
||
| A proposal that is implemented, added to the oneTBB specification, and | ||
| supported as a full feature appears in the `rfcs/supported` directory. An RFC | ||
| for a fully supported feature in the `rfcs/supported` directory should | ||
| have a link to the section in the oneTBB specification with its | ||
| formal wording. | ||
|
|
||
| A feature that is removed or a proposal that is abandoned or rejected will | ||
| be moved to the `rfcs/archived` folder. | ||
|
|
||
| ## Document Style | ||
|
|
||
| The design documents are stored in the `rfcs` directory, and each RFC is placed | ||
| in its subdirectory under `rfcs/proposed/<feature>_<extension_description>`. | ||
|
|
||
| - There must be a `README.md` file that contains the main RFC itself (or | ||
| links to a file that contains it in the same directory). | ||
| - The RFC should follow the [template.md](template.md) structure. | ||
| - The directory can contain other supporting files, such as images, tex | ||
| formulas, and sub-proposals / sub-RFCs. | ||
| - We highly recommend using a text-based file format like markdown for easy | ||
| collaboration on GitHub, but other formats like PDFs may also be acceptable. | ||
| - For the markdown-written RFC, keep the text width within | ||
| 100 characters, unless there is a reason to violate this rule, e.g., | ||
| long links or wide tables. | ||
| - It is also recommended to read through existing RFCs to better understand the | ||
| general writing style and required elements. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| # Archived Design Documents | ||
|
|
||
| Documents may appear in the `rfcs/archived` directory for one of | ||
| two reasons: | ||
|
|
||
| 1. The document describes a feature or extension that has been deprecated and | ||
| then removed. | ||
| 2. The document describes a proposed feature or extension that have | ||
| not (ultimately) become a fully supported feature. | ||
|
|
||
| Design documents that appear in the `rfcs/archived` folder should describe a | ||
| reason for archiving. Documents may | ||
| remain in this folder indefinitely to serve as a source of information about | ||
| previous proposals and features. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| # Design Documents for Experimental Features | ||
|
|
||
| Experimental proposals describe extensions that are implemented and | ||
| released as preview features in the oneTBB library. A preview | ||
| feature is expected to have an implementation that is of comparable quality | ||
| to a fully supported feature. Sufficient tests are required. | ||
|
|
||
| An experimental feature does not yet appear as part of the oneTBB | ||
| specification. Therefore, the interface and design can change. | ||
| There is no commitment to backward compatibility for a preview | ||
| feature. | ||
|
|
||
| The documents in this directory | ||
| should include a list of the exit conditions that need to be met to move from | ||
| preview to fully supported. These conditions might include demonstrated | ||
| performance improvements, demonstrated interest from the community, | ||
| acceptance of the required oneTBB specification changes, etc. | ||
|
|
||
| For features that require oneTBB specification changes, the document might | ||
| include wording for those changes or a link to any PRs that opened | ||
| against the specification. | ||
|
|
||
| Proposals should not remain in the experimental directory forever. | ||
| It should move either to the | ||
| supported folder when they become fully supported or the archived | ||
| folder if they are not fully accepted. It should be highly unusual for | ||
| a proposal to stay in the experimental folder for longer than a year or | ||
| two. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # Design Documents for Proposed Features | ||
|
|
||
| Proposed features in this directory have reached some level of consensus within the | ||
| community, indicating that they have potential and deserve further development. | ||
| However, the proposed changes have not yet been released as a | ||
| preview or fully supported feature of the library. | ||
|
|
||
| RFCs in the `rfcs/proposed` directory should explain the motivation, | ||
| design, and open questions related to the proposed extension. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| # Design Documents for Supported Features | ||
|
|
||
| Supported proposals describe extensions implemented and | ||
| released as fully supported features of the oneTBB library. A fully supported | ||
| feature has a high-quality implementation. If the proposal impacted the | ||
| public API of the library, it should appear in the oneTBB specification and | ||
| have supporting documentation in the oneTBB Reference as needed. A fully | ||
| supported feature is regularly tested. | ||
|
|
||
| Proposals that appear in `rfcs/supported` may be retained indefinitely to | ||
| provide insight into the design of existing features. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| # Descriptive Name for the Proposal | ||
|
|
||
| ## Introduction | ||
|
|
||
| Short description of the idea proposed with explained motivation. | ||
|
|
||
| The motivation could be: | ||
| - Improved users experience for API changes and extensions. Code snippets to | ||
| showcase the benefits would be nice here. | ||
| - Performance improvements with the data, if available. | ||
| - Improved engineering practices. | ||
|
|
||
| Introduction may also include any additional information that sheds light on | ||
| the proposal, such as history of the matter, links to relevant issues and | ||
| discussions, etc. | ||
|
|
||
| ## Proposal | ||
|
|
||
| A full and detailed description of the proposal with highlighted consequences. | ||
|
|
||
| Depending on the kind of the proposal, the description should cover: | ||
|
|
||
| - New use cases supported by the extension. | ||
| - The expected performance benefit for a modification. | ||
| - The interface of extensions including class definitions or function | ||
| declarations. | ||
|
|
||
| A proposal should clearly outline the alternatives that were considered, | ||
| along with their pros and cons. Each alternative should be clearly separated | ||
| to make discussions easier to follow. | ||
|
|
||
| Pay close attention to the following aspects of the library: | ||
| - API and ABI backward compatibility. The library follows semantic versioning | ||
| so if any of those interfaces are to be broken, the RFC needs to state that | ||
| explicitly. | ||
| - Performance implications, as performance is one of the main goals of the library. | ||
| - Changes to the build system. While the library's primary building system is | ||
| CMake, there are some frameworks that may build the library directly from the sources. | ||
| - Dependencies and support matrix: does the proposal bring any new | ||
| dependencies or affect the supported configurations? | ||
|
|
||
| Some other common subsections here are: | ||
| - Discussion: some people like to list all the options first (as separate | ||
| subsections), and then have a dedicated section with the discussion. | ||
| - List of the proposed API and examples of its usage. | ||
| - Testing aspects. | ||
| - Short explanation and links to the related sub-proposals, if any. Such | ||
| sub-proposals could be organized as separate standalone RFCs, but this is | ||
| not mandatory. If the change is insignificant or doesn't make any sense | ||
| without the original proposal, you can have it in the RFC. | ||
| - Execution plan (next steps), if approved. | ||
|
|
||
| ## Open Questions | ||
|
|
||
| For new proposals (i.e., those in the `rfcs/proposed` directory), list any | ||
| open questions. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to format the boilerplate text int the template to be italicized and maybe put into some brackets?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking at the rendered text, I think it's clear without brackets. But we can revisit later if people are confused.