|
| 1 | +--- |
| 2 | +title: RFC Process |
| 3 | +--- |
| 4 | + |
| 5 | +Below is an overview of the RFC process[^mep], it is designed to be simple and structured as well as help document the evolving decisions and scope for OXA. |
| 6 | + |
| 7 | +[^mep]: This process is based on MyST Enhancement Proposals (<https://mep.mystmd.org>) and others in the Jupyter and Python ecosystem. |
| 8 | + |
| 9 | +## Step 1: Open an Issue |
| 10 | + |
| 11 | +Open an issue in [oxa-dev/rfc](https://github.com/oxa-dev/rfc) and discuss in Discord. The issue should roughly describe the proposal and help others understand your idea and get informal alignment around it. It will also serve as an early signal if the proposal is not well-suited for the RFC process, saving you from investing too much time! |
| 12 | + |
| 13 | +## Step 2: Open a Pull Request |
| 14 | + |
| 15 | +Use a Markdown template below to structure your proposal. Here's a proposed template: |
| 16 | + |
| 17 | +```yaml |
| 18 | +--- |
| 19 | +title: Title of the RFC |
| 20 | +--- |
| 21 | + |
| 22 | +## Context |
| 23 | + |
| 24 | +<!-- provide context needed to understand this proposal. Describe the problem or opportunity that this RFC addresses. --> |
| 25 | + |
| 26 | +## Proposal |
| 27 | + |
| 28 | +<!-- describe your proposed change in concrete terms. Include a layperson's description of this change if relevant. --> |
| 29 | + |
| 30 | +## Examples |
| 31 | + |
| 32 | +<!-- provide examples of what this change would look like in the real world (e.g., code examples, API designs, architecture diagrams). --> |
| 33 | + |
| 34 | +<!-- reference other examples you're using for inspiration or to help others learn and understand the proposal. --> |
| 35 | + |
| 36 | +## Implementation implications |
| 37 | + |
| 38 | +<!-- describe how this would improve the system or functionality. Describe any deprecations or migration steps that would be needed. --> |
| 39 | + |
| 40 | +## Questions or Objections |
| 41 | + |
| 42 | +<!-- as conversation takes place, list common questions/objections with responses. --> |
| 43 | +``` |
| 44 | + |
| 45 | +Update the `myst.yml` in the folder to include the RFC authors, date. Repeat authors can be added to the `rfc.yml`. Look to the initial RFC for a guide. The Steering Council should do a quick review, and add a `draft` label to the Pull Request. A comment will appear with the draft of the rendered content. |
| 46 | + |
| 47 | +## Step 3: Discuss and Iterate |
| 48 | + |
| 49 | +Invite discussion from others in the community, incorporate new ideas and improve the clarity of the RFC. Discussion can take place in the GitHub Pull Request, in the [Discord](https://discord.oxa.dev) `#rfc` channel, or in other appropriate forums. |
| 50 | + |
| 51 | +## Step 4: Activate Decision Making |
| 52 | + |
| 53 | +Once the proposal has stabilized and the author wishes to move forward, do the following: |
| 54 | + |
| 55 | +- The [Steering Council](#steering-council-members) changes to an `active` label to the Pull Request. |
| 56 | +- The [Steering Council](#steering-council-members) should review the RFC and approve if they wish to accept it. |
| 57 | + - To approve, click `Approve` the GitHub Pull Request UI. |
| 58 | + - To request blocking changes, then click `Request Changes` in the GitHub UI. |
| 59 | +- An RFC may be accepted when the following conditions are met: |
| 60 | + - More than five (5) weekdays have passed since the proposal was marked as `active`. |
| 61 | + - At least two `PR Approvals` from [Steering Council](#steering-council-members). |
| 62 | + - No `Request Changes` from a Steering Council member. |
| 63 | +- If there are **unresolved objections** (via `Request Changes` in GitHub) |
| 64 | + - The RFC author may restart the decision making process after incorporating feedback to resolve the objection. |
| 65 | + - The RFC author or the Steering Council may also set the label to `rejected`, and merge to maintain a record for the community. |
| 66 | +- When accepted, merge the Pull Request and close the issue. 🎉 |
| 67 | + |
| 68 | +## Step 5: Implement the RFC |
| 69 | + |
| 70 | +When an RFC has been accepted, work can begin on implementation. |
| 71 | +Implementation should follow the project's standard [development practices](./practices.md). |
0 commit comments