|
| 1 | +This page contains instructions on how to propose and implement feature changes to Presto. |
| 2 | + |
| 3 | +# The Request for Comments |
| 4 | + |
| 5 | +## Overview of the process |
| 6 | + |
| 7 | +```mermaid |
| 8 | +graph TD; |
| 9 | + id1["Create an RFC"]-->id2["Get feedback on the RFC"]; |
| 10 | + id2["Get feedback on the RFC"]-->id3["RFC is closed"]; |
| 11 | + id2["Get feedback on the RFC"]-->id4["RFC is merged"]; |
| 12 | + id4["RFC is merged"]-->id5["Create a Github issue linking the RFC"]; |
| 13 | + id5["Create a Github issue linking the RFC"]-->id6["Create PRs implementing the RFC (link to the issue)"]; |
| 14 | +``` |
| 15 | + |
| 16 | +## Step 1: Create an RFC |
| 17 | +RFCs are located in their own repository. |
| 18 | + |
| 19 | +To create one: |
| 20 | + |
| 21 | +1. Fork the https://github.com/prestodb/rfcs repository |
| 22 | +2. Copy the template file `RFC-0000-template.md` to `RFC-00xx-your-feature.md` and fill it out with your proposal. |
| 23 | + The template is a guideline, feel free to add sections as appropriate |
| 24 | +3. You may also have the template simply link to another editor, like a Google Docs file, but please ensure that the |
| 25 | + document is publicly visible. This can make the template easier to add edit, but commenting doesn’t scale very well, so |
| 26 | + please use this option with caution. |
| 27 | + |
| 28 | +## Step 2: Get Feedback on the RFC |
| 29 | +1. Submit a pull request [to the main repository](https://github.com/prestodb/rfcs) from your fork titled |
| 30 | +`RFC-00xx-your-feature.md` |
| 31 | +2. Before your PR is ready for review, |
| 32 | + [mark the PR as draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft). |
| 33 | +3. Once it’s ready for review, [move the PR out of draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review). |
| 34 | +4. A committer will review your proposal. |
| 35 | +5. Build consensus. Those committers will review your PR and offer feedback. Revise your proposal as needed until |
| 36 | + everyone agrees on a path forward. Additional forums you can share the proposal on include the |
| 37 | + [the mailing list](https://lists.prestodb.io/g/presto-dev), and the |
| 38 | + [Slack channel in #dev](https://communityinviter.com/apps/prestodb/prestodb). Tagging interested stakeholders |
| 39 | + (identifiable via [CODEOWNERS](https://github.com/prestodb/presto/blob/master/CODEOWNERS)) can help with consensus building. |
| 40 | + |
| 41 | +_(Note: A proposal may get rejected if it comes with unresolvable drawbacks or if it’s against the long term plans of the Presto committers)_ |
| 42 | + |
| 43 | +## Step 3: Implement your Feature |
| 44 | +1. If your RFC PR is accepted then the PR will be merged. |
| 45 | +2. As soon as possible, create an issue in Github in the relevant repository (most likely |
| 46 | + [prestodb/presto](https://github.com/prestodb/presto)) summarizing the RFC and linking to it. |
| 47 | +3. When you submit PRs to implement your proposal, remember to link to your issue that has a link to the RFC |
| 48 | + so that reviewers catch up on the context. |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | +## Implementing an RFC |
| 53 | +Every accepted RFC has an associated issue tracking its implementation in the Presto repository; thus that |
| 54 | +associated issue can be assigned a priority via the triage process that the team uses for all issues. |
| 55 | + |
| 56 | +The author of an RFC is not obligated to implement it. Of course, the RFC |
| 57 | +author (like any other developer) is welcome to post an implementation for |
| 58 | +review after the RFC has been accepted. |
| 59 | + |
| 60 | +If you are interested in working on the implementation for an accepted RFC, but |
| 61 | +cannot determine if someone else is already working on it, feel free to ask |
| 62 | +(e.g. by leaving a comment on the associated issue). |
| 63 | + |
| 64 | + |
| 65 | +## RFC Rejection |
| 66 | +Some RFC pull requests will be closed without the RFC being merged (as part of the rejection process). A closed RFC |
| 67 | +is closed because we would prefer not to evaluate the proposal or implement the described feature |
| 68 | +until some time in the future, and we believe that we can afford to wait until then to do so. |
| 69 | + |
| 70 | +## Inspiration |
| 71 | +Presto's RFC process owes inspiration to the [PyTorch RFC Process](https://github.com/pytorch/rfcs) and [Hudi RFC Process](https://hudi.apache.org/contribute/rfc-process/). |
| 72 | + |
| 73 | +## License |
| 74 | +By contributing to rfcs, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree. |
0 commit comments