Skip to content

Commit b92dd90

Browse files
authored
Merge pull request #1 from tdcmeehan/initial
Add the initial RFC template and instructions
2 parents 435f1eb + 2bffaa7 commit b92dd90

File tree

3 files changed

+158
-2
lines changed

3 files changed

+158
-2
lines changed

CONTRIBUTING.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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.

README.md

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,27 @@
1-
# rfcs
2-
Presto RFCs
1+
# Presto RFCs
2+
3+
Presto uses RFCs to propose major features.
4+
5+
## Proposing a Feature to Presto
6+
7+
To propose a new feature, you’ll submit a Request For Comments (RFC). This RFC is basically a design proposal where
8+
you can share a detailed description of what change you want to make, why it’s needed, and how you propose to implement
9+
it.
10+
11+
It’s easier to make changes while your feature is in the ideation phase vs the PR phase, and this doc gives committers
12+
an opportunity to suggest refinements before you start code. For example, they may know of other planned efforts that
13+
your work would otherwise collide with, or they may suggest implementation changes that make your feature more broadly
14+
usable.
15+
16+
Smaller changes, including bug fixes and documentation improvements can be implemented and reviewed via the normal
17+
GitHub pull request workflow on the main Presto repo.
18+
19+
RFCs are more suitable for design proposals that are too large to discuss on a feature-request issue, like adding new
20+
functionality to Presto, or if a discussion about the tradeoffs involved in a new addition are non-trivial.
21+
22+
If you are unsure whether something should be an RFC or a feature-request issue, you can ask by opening an issue in the
23+
main [prestodb/presto](https://github.com/prestodb/presto) repository.
24+
25+
## How to add an RFC
26+
27+
See [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on how to propose an RFC.

RFC-0000-template.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# **RFC0 for Presto**
2+
3+
See [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on creating your RFC and the process surrounding it.
4+
5+
## [Title]
6+
7+
Proposers
8+
9+
*
10+
*
11+
12+
## [Related Issues]
13+
14+
Related issues may include Github issues, PRs or other RFCs.
15+
16+
## Summary
17+
18+
Briefly describe what you intend to propose
19+
20+
## Background
21+
22+
Brief description of any existing issues, user requests or feature comparison with competitors which explains why the proposed feature might be needed. How the proposed feature helps our users? Explain the impact and value of this feature.
23+
24+
### [Optional] Goals
25+
26+
### [Optional] Non-goals
27+
28+
## Proposed Implementation
29+
30+
How do you intend to implement the feature? This section can be as detailed as possible with large subsections of its own, or may be a few sentences depending on the scope of the feature proposed. Explain the design in enough detail for existing users/contributors to understand. Design should include all the corner cases you can think of. Feel free to include any new SPI method signatures, class hierarchies or system contracts here. It is recommended to mention any methods, variables, classes, or SQL language additions which you think are needed to provide a broader view of the code changes. Please mention/describe the below on a high level -
31+
32+
1. What modules are involved
33+
2. Any new terminologies/concepts/SQL language additions
34+
3. Method/class/interface contracts which you deem fit for implementation.
35+
4. Code flow using bullet points or pseudo code as applicable
36+
5. Any new user facing metrics that can be shown on CLI or UI.
37+
38+
## [Optional] Metrics
39+
40+
How can we measure the impact of this feature?
41+
42+
## [Optional] Other Approaches Considered
43+
44+
Based on the discussion, this may need to be updated with feedback from reviewers.
45+
46+
## Adoption Plan
47+
48+
- What impact (if any) will there be on existing users? Are there any new session parameters, configurations, SPI updates, client API updates, or SQL grammar?
49+
- If we are changing behaviour how will we phase out the older behaviour?
50+
- If we need special migration tools, describe them here.
51+
- When will we remove the existing behaviour, if applicable.
52+
- How should this feature be taught to new and existing users? Basically mention if documentation changes/new blog are needed?
53+
- What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
54+
55+
## Test Plan
56+
57+
How do we ensure the feature works as expected? Mention if any functional tests/integration tests are needed. Special mention for product-test changes. If any PoC has been done already, please mention the relevant test results here that you think will bolster your case of getting this RFC approved.

0 commit comments

Comments
 (0)