2021-03-05 00:12:12 -08:00
|
|
|
# DataHub RFC Process
|
2020-07-28 16:43:40 -07:00
|
|
|
|
|
|
|
## What is an RFC?
|
|
|
|
|
|
|
|
The "RFC" (request for comments) process is intended to provide a consistent and controlled path for new features,
|
|
|
|
significant modifications, or any other significant proposal to enter DataHub and its related frameworks.
|
|
|
|
|
|
|
|
Many changes, including bug fixes and documentation improvements can be implemented and reviewed via the normal GitHub
|
|
|
|
pull request workflow.
|
|
|
|
|
|
|
|
Some changes though are "substantial", and we ask that these be put through a bit of a design process and produce a
|
|
|
|
consensus among the DataHub core teams.
|
|
|
|
|
|
|
|
## The RFC life-cycle
|
|
|
|
|
|
|
|
An RFC goes through the following stages:
|
|
|
|
|
2025-04-16 16:55:51 -07:00
|
|
|
- _Discussion_ (Optional): Create an issue with the "RFC" label to have a more open ended, initial discussion around
|
|
|
|
your proposal (useful if you don't have a concrete proposal yet). Consider posting to #rfc in [Slack](./slack.md)
|
|
|
|
for more visibility.
|
|
|
|
- _Pending_: when the RFC is submitted as a PR. Please add the "RFC" label to the PR.
|
|
|
|
- _Active_: when an RFC PR is merged and undergoing implementation.
|
|
|
|
- _Landed_: when an RFC's proposed changes are shipped in an actual release.
|
|
|
|
- _Rejected_: when an RFC PR is closed without being merged.
|
2020-07-28 16:43:40 -07:00
|
|
|
|
2022-12-06 13:03:15 -08:00
|
|
|
[Pending RFC List](https://github.com/datahub-project/rfcs/pulls?q=is%3Apr+is%3Aopen)
|
2020-07-28 16:43:40 -07:00
|
|
|
|
|
|
|
## When to follow this process
|
|
|
|
|
|
|
|
You need to follow this process if you intend to make "substantial" changes to any components in the DataHub git repo,
|
|
|
|
their documentation, or any other projects under the purview of the DataHub core teams. What constitutes a "substantial"
|
|
|
|
change is evolving based on community norms, but may include the following:
|
|
|
|
|
|
|
|
- A new feature that creates new API surface area, and would require a feature flag if introduced.
|
|
|
|
- The removal of features that already shipped as part of the release channel.
|
|
|
|
- The introduction of new idiomatic usage or conventions, even if they do not include code changes to DataHub itself.
|
|
|
|
|
|
|
|
Some changes do not require an RFC:
|
|
|
|
|
|
|
|
- Rephrasing, reorganizing or refactoring
|
|
|
|
- Addition or removal of warnings
|
|
|
|
- Additions that strictly improve objective, numerical quality criteria (speedup)
|
|
|
|
|
|
|
|
If you submit a pull request to implement a new, major feature without going through the RFC process, it may be closed
|
|
|
|
with a polite request to submit an RFC first.
|
|
|
|
|
|
|
|
## Gathering feedback before submitting
|
|
|
|
|
|
|
|
It's often helpful to get feedback on your concept before diving into the level of API design detail required for an
|
|
|
|
RFC. You may open an issue on this repo to start a high-level discussion, with the goal of eventually formulating an RFC
|
|
|
|
pull request with the specific implementation design. We also highly recommend sharing drafts of RFCs in #rfc on the
|
2021-03-05 00:12:12 -08:00
|
|
|
[DataHub Slack](./slack.md) for early feedback.
|
2020-07-28 16:43:40 -07:00
|
|
|
|
|
|
|
## The process
|
|
|
|
|
|
|
|
In short, to get a major feature added to DataHub, one must first get the RFC merged into the RFC repo as a markdown
|
|
|
|
file. At that point the RFC is 'active' and may be implemented with the goal of eventual inclusion into DataHub.
|
|
|
|
|
2022-12-06 13:03:15 -08:00
|
|
|
- Fork the [datahub-project/rfc repository](https://github.com/datahub-project/rfcs).
|
|
|
|
- Copy the `000-template.md` template file to `rfc/active/000-my-feature.md`, where `my-feature` is more
|
2025-04-16 16:55:51 -07:00
|
|
|
descriptive. Don't assign an RFC number yet.
|
|
|
|
- Fill in the RFC. Put care into the details. _RFCs that do not present convincing motivation, demonstrate understanding
|
|
|
|
of the impact of the design, or are disingenuous about the drawback or alternatives tend to be poorly-received._
|
2020-07-28 16:43:40 -07:00
|
|
|
- Submit a pull request. As a pull request the RFC will receive design feedback from the larger community, and the
|
2025-04-16 16:55:51 -07:00
|
|
|
author should be prepared to revise it in response.
|
2020-07-28 16:43:40 -07:00
|
|
|
- Update the pull request to add the number of the PR to the filename and add a link to the PR in the header of the RFC.
|
|
|
|
- Build consensus and integrate feedback. RFCs that have broad support are much more likely to make progress than those
|
2025-04-16 16:55:51 -07:00
|
|
|
that don't receive any comments.
|
2020-07-28 16:43:40 -07:00
|
|
|
- Eventually, the DataHub team will decide whether the RFC is a candidate for inclusion.
|
|
|
|
- RFCs that are candidates for inclusion will entire a "final comment period" lasting 7 days. The beginning of this
|
2025-04-16 16:55:51 -07:00
|
|
|
period will be signaled with a comment and tag on the pull request. Furthermore, an announcement will be made in the
|
|
|
|
\#rfc Slack channel for further visibility.
|
2020-07-28 16:43:40 -07:00
|
|
|
- An RFC acan be modified based upon feedback from the DataHub team and community. Significant modifications may trigger
|
2025-04-16 16:55:51 -07:00
|
|
|
a new final comment period.
|
2020-07-28 16:43:40 -07:00
|
|
|
- An RFC may be rejected by the DataHub team after public discussion has settled and comments have been made summarizing
|
2025-04-16 16:55:51 -07:00
|
|
|
the rationale for rejection. The RFC will enter a "final comment period to close" lasting 7 days. At the end of the "FCP
|
|
|
|
to close" period, the PR will be closed.
|
2020-07-28 16:43:40 -07:00
|
|
|
- An RFC author may withdraw their own RFC by closing it themselves. Please state the reason for the withdrawal.
|
|
|
|
- An RFC may be accepted at the close of its final comment period. A DataHub team member will merge the RFC's associated
|
2025-04-16 16:55:51 -07:00
|
|
|
pull request, at which point the RFC will become 'active'.
|
2020-07-28 16:43:40 -07:00
|
|
|
|
|
|
|
## Details on Active RFCs
|
|
|
|
|
|
|
|
Once an RFC becomes active then authors may implement it and submit the feature as a pull request to the DataHub repo.
|
|
|
|
Becoming 'active' is not a rubber stamp, and in particular still does not mean the feature will ultimately be merged; it
|
|
|
|
does mean that the core team has agreed to it in principle and are amenable to merging it.
|
|
|
|
|
|
|
|
Furthermore, the fact that a given RFC has been accepted and is 'active' implies nothing about what priority is assigned
|
|
|
|
to its implementation, nor whether anybody is currently working on it.
|
|
|
|
|
|
|
|
Modifications to active RFC's can be done in followup PR's. We strive to write each RFC in a manner that it will reflect
|
|
|
|
the final design of the feature; but the nature of the process means that we cannot expect every merged RFC to actually
|
|
|
|
reflect what the end result will be at the time of the next major release; therefore we try to keep each RFC document
|
|
|
|
somewhat in sync with the language feature as planned, tracking such changes via followup pull requests to the document.
|
|
|
|
|
|
|
|
## Implementing an RFC
|
|
|
|
|
|
|
|
The author of an RFC is not obligated to implement it. Of course, the RFC author (like any other developer) is welcome
|
|
|
|
to post an implementation for review after the RFC has been accepted.
|
|
|
|
|
|
|
|
An active RFC should have the link to the implementation PR(s) listed, if there are any. Feedback to the actual
|
|
|
|
implementation should be conducted in the implementation PR instead of the original RFC PR.
|
|
|
|
|
|
|
|
If you are interested in working on the implementation for an 'active' RFC, but cannot determine if someone else is
|
|
|
|
already working on it, feel free to ask (e.g. by leaving a comment on the associated issue).
|
|
|
|
|
|
|
|
## Implemented RFCs
|
|
|
|
|
|
|
|
Once an RFC has finally be implemented, first off, congratulations! And thank you for your contribution! Second, to
|
2022-12-06 13:03:15 -08:00
|
|
|
help track the status of the RFC, please make one final PR to move the RFC from `rfc/active` to
|
|
|
|
`rfc/finished`.
|
2020-07-28 16:43:40 -07:00
|
|
|
|
|
|
|
## Reviewing RFCs
|
|
|
|
|
|
|
|
Most of the DataHub team will attempt to review some set of open RFC pull requests on a regular basis. If a DataHub
|
|
|
|
team member believes an RFC PR is ready to be accepted into active status, they can approve the PR using GitHub's
|
|
|
|
review feature to signal their approval of the RFCs.
|
|
|
|
|
2025-04-16 16:55:51 -07:00
|
|
|
_DataHub's RFC process is inspired by many others, including [Vue.js](https://github.com/vuejs/rfcs) and
|
|
|
|
[Ember](https://github.com/emberjs/rfcs)._
|