|
| 1 | +# OpenEnv RFCs |
| 2 | + |
| 3 | +This directory contains Requests for Comments (RFCs) for the OpenEnv framework. RFCs are used to propose, discuss, and document significant changes, new features, or architectural decisions. |
| 4 | + |
| 5 | +## RFC Process |
| 6 | + |
| 7 | +### 1. Proposing an RFC |
| 8 | + |
| 9 | +When you want to propose a significant change or feature: |
| 10 | + |
| 11 | +1. **Create a new RFC file** in this directory named `NNN-short-title.md` where `NNN` is the next available RFC number based on open RFCs (e.g., `002-render-api.md`) |
| 12 | +2. **Use the RFC template** structure outlined below |
| 13 | +3. **Submit for review** by submitting a PR |
| 14 | +4. **Iterate based on feedback** until consensus is reached |
| 15 | + |
| 16 | +### 2. RFC Lifecycle |
| 17 | + |
| 18 | +RFCs go through several stages: |
| 19 | + |
| 20 | +- **In Review**: Open for feedback and discussion |
| 21 | +- **Accepted**: Consensus reached, ready for implementation |
| 22 | +- **Implemented**: Changes have been merged |
| 23 | +- **Rejected**: Proposal was not accepted (document why) |
| 24 | +- **Superseded**: Replaced by a newer RFC |
| 25 | + |
| 26 | +### 3. What Requires an RFC? |
| 27 | + |
| 28 | +You should write an RFC for: |
| 29 | + |
| 30 | +- **New core APIs** (e.g., new methods on `Environment` or `HTTPEnvClient`) |
| 31 | +- **Breaking changes** to existing interfaces |
| 32 | +- **Major architectural decisions** (e.g., communication protocol changes) |
| 33 | +- **New abstractions** or design patterns |
| 34 | + |
| 35 | +You generally don't need an RFC for: |
| 36 | + |
| 37 | +- Bug fixes |
| 38 | +- Documentation improvements |
| 39 | +- Minor refactoring |
| 40 | +- New example environments (unless they introduce new patterns) |
| 41 | + |
| 42 | +## RFC Template |
| 43 | + |
| 44 | +Each RFC should include the following sections: |
| 45 | + |
| 46 | +### Required Sections |
| 47 | + |
| 48 | +1. **Header** |
| 49 | + ```markdown |
| 50 | + # RFC: [Title] |
| 51 | + |
| 52 | + **Status**: [Draft|In Review|Accepted|Implemented|Rejected|Superseded] |
| 53 | + **Created**: [Date] |
| 54 | + **Authors**: [@username1, @username2] |
| 55 | + **RFC ID**: [NNN] |
| 56 | + ``` |
| 57 | + |
| 58 | +2. **Summary** |
| 59 | + - Brief 1-2 paragraph overview of the proposal |
| 60 | + - Should be clear enough for someone to understand the essence without reading the full RFC |
| 61 | + |
| 62 | +3. **Motivation** |
| 63 | + - **Problem Statement**: What problem are you solving? |
| 64 | + - **Goals**: What are you trying to achieve? |
| 65 | + - Clear explanation of why this change is needed |
| 66 | + |
| 67 | +4. **Design** |
| 68 | + - **Architecture Overview**: High-level view (diagrams encouraged) |
| 69 | + - **Core Abstractions**: Key interfaces, classes, or concepts |
| 70 | + - **Key Design Decisions**: For each significant decision: |
| 71 | + - **Chosen Approach**: What you're proposing |
| 72 | + - **Rationale**: Why this approach |
| 73 | + - **Trade-offs**: What are the pros/cons if any |
| 74 | + |
| 75 | +5. **Examples** |
| 76 | + - Code examples showing how the feature would be used |
| 77 | + - Should demonstrate common use cases |
| 78 | + - Include both client and server perspectives where relevant |
| 79 | + |
| 80 | +## Current RFCs |
| 81 | + |
| 82 | +- [001-openenv-spec.md](./001-openenv-spec.md) - OpenEnv Framework Specification (baseline APIs, HTTP communication, Docker isolation) |
| 83 | + |
| 84 | +## Questions? |
| 85 | + |
| 86 | +For questions about the RFC process, reach out to the core team or open a discussion in the project repository. |
0 commit comments