Skip to content
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

[RFCs] Add rfcs directory #1464

Merged
merged 33 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
e8aa05b
Add rfcs directory
vossmjp Aug 1, 2024
9e6b4ce
Removed deprecated as cause for archive
vossmjp Aug 5, 2024
6b819a3
Update rfcs/README.md
vossmjp Aug 16, 2024
0bc4bba
Update rfcs/README.md
vossmjp Aug 16, 2024
7e0de37
Update rfcs/README.md
vossmjp Aug 16, 2024
6eddaa5
Update rfcs/template.md
vossmjp Aug 16, 2024
f8d7709
Update rfcs/experimental/README.md
vossmjp Aug 16, 2024
86c7031
Update rfcs/template.md
vossmjp Aug 16, 2024
60e7623
Update rfcs/template.md
vossmjp Aug 16, 2024
d70a09a
Update rfcs/README.md
vossmjp Sep 3, 2024
640ee5d
Update rfcs/README.md
vossmjp Sep 3, 2024
ac8e085
Update rfcs/README.md
vossmjp Sep 3, 2024
2076670
Update rfcs/README.md
vossmjp Sep 3, 2024
d329f70
Update rfcs/README.md
vossmjp Sep 3, 2024
06fd104
Update rfcs/template.md
vossmjp Sep 3, 2024
758959a
Update rfcs/template.md
vossmjp Sep 3, 2024
068c26e
Update rfcs/template.md
vossmjp Sep 3, 2024
4d67b5b
Update rfcs/template.md
vossmjp Sep 3, 2024
446927b
Update rfcs/template.md
vossmjp Sep 3, 2024
e449916
Made wording changes in response to review.
vossmjp Sep 3, 2024
ad8ee51
Update rfcs/README.md
vossmjp Sep 3, 2024
5431310
Update rfcs/README.md
vossmjp Sep 3, 2024
6f309e0
Update rfcs/README.md
vossmjp Sep 3, 2024
fd42065
Update rfcs/README.md
vossmjp Sep 3, 2024
344688e
Update rfcs/README.md
vossmjp Sep 3, 2024
074a1e2
Update rfcs/README.md
vossmjp Sep 3, 2024
d407d0c
Update rfcs/README.md
vossmjp Sep 3, 2024
207f07d
Update rfcs/README.md
vossmjp Sep 3, 2024
62d9188
Apply suggestions from code review
vossmjp Sep 3, 2024
30c06ca
Fixed line lengths and made suggested changes after review
vossmjp Sep 3, 2024
6fc45a2
Update rfcs/README.md
vossmjp Sep 26, 2024
9286236
Update rfcs/experimental/README.md
vossmjp Sep 26, 2024
1c861eb
Updated based on review; small changes
vossmjp Sep 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions rfcs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# oneTBB Design Documents / RFCs
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

The purpose of the RFC process is to communicate the intent to make
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
library-wide changes, get feedback prior to the actual implementation,
increase the transparency on why and how decisions are made, and improve
the alignment between different teams involved in oneTBB development.

This directory documents design documents (RFCs) that have been approved
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
for implementation in oneTBB.

There are several possible states for an RFC:
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

1. Initial RFC PR
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
2. proposed
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
3. experimental
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
4. supported
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
5. archived
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

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.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
However, if the issue or discussion leads to an idea for a modification
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
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). The modified
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
template should be placed in subdirectory of the `rfcs/proposed` with a name
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
of the form `<feature>_<extension_description>`. For example,
a proposal for a new "my_op" flow graph node might be put into a directory
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
`rfcs/proposed/flow_graph_my_op_node`. The [template.md](template.md) should
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
be used to create the `README.md` file in that directory. The folder can
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
contain other files referenced by the `README.md` file, such as figures.

When two maintainers approve the PR it will be merged to the `rfcs/proposed`
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
directory. As the RFC moves to different states, the RFC document should be
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
updated with additional information.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

A proposal that is subsequently implemented and released in oneTBB
as a preview feature will be moved to the `rfcs/experimental` folder. The
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
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.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
of what is required to move from experimental to fully supported -- for example, feedback from users, demonstrated performance improvements, etc.
of what is required to move from experimental to fully supported. For example, user feedback, 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 support feature in the `rfcs/supported` directory should
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
have a link to the section in the oneTBB specification that has its
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
formal wording.

A feature that is deprecated or removed or a proposal that is abandoned may be moved to the `rfcs/archived` folder.

## Document Style

The design documents are stored in the `rfcs` directory.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

- Each RFC is stored in a separate subdirectory
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
`rfcs/proposed/<feature>_<extension_description>`
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
- 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).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest adding something before the list. Like Key Points or smth

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- 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).
- There must be a `README.md` file that contains the main RFC or links to it within the same directory.

- The body of the RFC should be based on [template.md](template.md)
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
- The directory can contain other supporting files, such as images, tex formulas, and sub-proposals / sub-RFCs.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- The directory can contain other supporting files, such as images, tex formulas, and sub-proposals / sub-RFCs.
- The directory can contain other supporting files (e.g., images, formulas, sub-proposals, etc.)

- It is not required to use the markdown file format based on the exact
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
template file for writing RFCs. However, it is strongly recommended to use
text-based file format that can be rendered by GitHub to allow for easy
collaboration using PR comments. Even so, files such as pdfs may be
acceptable.
- If the RFC is written in markdown. The width of the text should be limited by
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
80 symbols, unless there is a need to violate this rule, e.g. because of
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, we have a line length convention. Then, let's start following it ourselves first.

vossmjp marked this conversation as resolved.
Show resolved Hide resolved
long links or wide tables.
- It is also recommended to read through existing RFCs to better understand the general writing style and required elements.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- It is also recommended to read through existing RFCs to better understand the general writing style and required elements.
- Review existing RFCs to understand the expected writing style and required elements.

13 changes: 13 additions & 0 deletions rfcs/archived/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Archived Design Documents

Documents may appear in the `rfcs/archived` directory for one of
three reasons:
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

1. The document describes a feature or extension that has been deprecated and then removed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. The document describes a feature or extension that has been deprecated and then removed.
1. The document describes a deprecated or removed feature/extension.

2. The document describes a feature or extension that was proposed but did
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
not (ultimately) become a fully support feature.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

Design documents that appear in the `rfcs/archived` folder should include a
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
section that describes why the document has been archived. Documents may
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
remain in this folder indefinitely to serve as a source of information about
previous proposals and features.
28 changes: 28 additions & 0 deletions rfcs/experimental/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Design documents for experimental features
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

Experimental proposals describe extensions that have been implemented and
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
have been released as preview features in the oneTBB library. A preview
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
feature is expected to have an implementation that is of comparable quality
to a fully supported feature. It should also have sufficient tests.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

An experimental feature does not yet appear as part of the oneTBB
specification and therefore its interface and design can still change.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
There is no commitment to backwards compatibility for a preview
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
feature.

Since documents in this directory describe preview features, they
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
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 have been opened
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
against the specification.

Proposals should not remain in the experimental directory forever. The
expectation is that the proposals will eventually move either to the
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
supported folder when they become fully supported or to the archived
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
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.
10 changes: 10 additions & 0 deletions rfcs/proposed/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Design documents for proposed features
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

Proposed features have reached some level of consensus within the
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
community. A proposal appears in this directory because the
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
community believes it has merit and further work should be done.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
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 describe the motivation,
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
design and open questions related to the proposed extension.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
design and open questions related to the proposed extension.
design, and open questions related to the proposed extension.

11 changes: 11 additions & 0 deletions rfcs/supported/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Design documents for supported features
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Design documents for supported features
# Design Documents for Supported Features


Supported proposals describe extensions that have been implemented and
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Supported proposals describe extensions that have been implemented and
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public API of the library it should appear in the oneTBB specification and
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.
68 changes: 68 additions & 0 deletions rfcs/template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Descriptive name for the proposal
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Descriptive name for the proposal
# 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.
Comment on lines +7 to +15
Copy link
Contributor

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?

Copy link
Contributor Author

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.


## Proposal

A full and detailed description of the proposal, with highlighted consequences.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A full and detailed description of the proposal, with highlighted consequences.
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 that are supported by the extension.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- New use cases that are supported by the extension.
- 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 include the alternatives that were considered with listed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

pros and cons. The alternatives should be clearly separated to make possible
discussions clear.

Pay close attention to the following aspects of the library:
- API and ABI backwards compatibility. The library follows semantic versioning
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
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.
- Listing of the proposed API and examples of its usage.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
- 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 changes is insignificant, or doesn't make any sense
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
without the original proposal it is fine to have it in the RFC.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
- Execution plan if approved, aka next steps.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved

## Process Specific Information

Depending on the state of the proposal, additional information should be
included.

For new proposals (i.e., those in the `rfcs/proposed` directory), list any
open questions.

For proposals released as preview features that are in the `rfcs/experimental`
directory, list the exit conditions to move from preview to fully supported.
These conditions might include demonstrated performance improvements,
acceptance of specification changes, etc.

For proposals in the `rfcs/supported` directory, provide a link to the
any section(s) in the oneTBB specification that related to the proposal.
For modifications that do not affect the public API, no link is needed.
vossmjp marked this conversation as resolved.
Show resolved Hide resolved
Loading