|
| 1 | +# ORC Enhancement Process |
| 2 | + |
| 3 | +This document describes the process for proposing significant changes to ORC. |
| 4 | +The process is intentionally lightweight, inspired by the [Kubernetes |
| 5 | +Enhancement Proposal (KEP)][kep] process but tailored to ORC's scope and |
| 6 | +community size. |
| 7 | + |
| 8 | +[kep]: https://github.com/kubernetes/enhancements/tree/master/keps |
| 9 | + |
| 10 | +## When to Write an Enhancement |
| 11 | + |
| 12 | +Write an enhancement proposal when you want to: |
| 13 | + |
| 14 | +- Add a significant new feature or capability |
| 15 | +- Make breaking changes to existing APIs |
| 16 | +- Deprecate or remove functionality |
| 17 | +- Make cross-cutting architectural changes |
| 18 | +- Change behavior that users depend on |
| 19 | + |
| 20 | +You do **not** need an enhancement for: |
| 21 | + |
| 22 | +- Bug fixes |
| 23 | +- Small improvements or refactoring |
| 24 | +- Documentation updates |
| 25 | +- Adding support for additional OpenStack resource fields |
| 26 | +- Test improvements |
| 27 | + |
| 28 | +When in doubt, open a GitHub issue first to discuss whether an enhancement |
| 29 | +proposal is needed. |
| 30 | + |
| 31 | +## Enhancement Lifecycle |
| 32 | + |
| 33 | +Enhancements move through the following statuses: |
| 34 | + |
| 35 | +| Status | Description | |
| 36 | +|--------|-------------| |
| 37 | +| `implementable` | The enhancement has been approved and is ready for implementation. | |
| 38 | +| `implemented` | The enhancement has been fully implemented and merged. | |
| 39 | +| `withdrawn` | The enhancement is no longer being pursued. | |
| 40 | + |
| 41 | +## How to Submit an Enhancement |
| 42 | + |
| 43 | +1. **Copy the template** from [TEMPLATE.md](TEMPLATE.md) to a new file named |
| 44 | + after your feature: |
| 45 | + ``` |
| 46 | + enhancements/your-feature-name.md |
| 47 | + ``` |
| 48 | + |
| 49 | + If your enhancement requires supporting files (images, diagrams), create a |
| 50 | + directory instead: |
| 51 | + ``` |
| 52 | + enhancements/your-feature-name/ |
| 53 | + ├── your-feature-name.md |
| 54 | + └── diagram.png |
| 55 | + ``` |
| 56 | + |
| 57 | +2. **Fill out the template** with your proposal details. |
| 58 | + |
| 59 | +3. **Open a pull request** with your enhancement proposal. Use a descriptive |
| 60 | + title like: `Enhancement: Add support for feature X` |
| 61 | + |
| 62 | +4. **Iterate based on feedback**. Discussion happens on the PR. |
| 63 | + |
| 64 | +5. **Create a tracking issue** once the enhancement is merged. Label the issue |
| 65 | + with `enhancement` and link it in your enhancement's metadata table. |
| 66 | + |
| 67 | +## Review Process |
| 68 | + |
| 69 | +- Any community member can propose an enhancement |
| 70 | +- Maintainers review proposals and provide feedback on the PR |
| 71 | +- Enhancements are approved using lazy consensus: if no maintainer has objected |
| 72 | + after a reasonable review period (typically one week), the enhancement can be |
| 73 | + merged |
| 74 | +- The enhancement author is typically expected to drive implementation, though |
| 75 | + others may volunteer |
| 76 | + |
| 77 | +## Directory Structure |
| 78 | + |
| 79 | +``` |
| 80 | +enhancements/ |
| 81 | +├── README.md # This document |
| 82 | +├── TEMPLATE.md # Template for new enhancements |
| 83 | +├── your-feature-name.md # Simple enhancement (single file) |
| 84 | +└── complex-feature/ # Enhancement with supporting files |
| 85 | + ├── complex-feature.md |
| 86 | + └── architecture.png |
| 87 | +``` |
| 88 | + |
| 89 | +## Tips for Writing Good Enhancements |
| 90 | + |
| 91 | +1. **Be concise but complete**. Include enough detail for reviewers to |
| 92 | + understand the proposal without unnecessary verbosity. |
| 93 | + |
| 94 | +2. **Focus on the "why"**. Motivation is often more important than |
| 95 | + implementation details. |
| 96 | + |
| 97 | +3. **Think about edge cases**. The Risks and Edge Cases section is where you |
| 98 | + demonstrate you've thought through the implications. |
| 99 | + |
| 100 | +4. **Consider alternatives**. Showing that you've evaluated other approaches |
| 101 | + strengthens your proposal. |
| 102 | + |
| 103 | +5. **Keep it updated**. As implementation progresses, update the Implementation |
| 104 | + History section. |
0 commit comments