|
| 1 | +--- |
| 2 | +title: Hyperlight Improvement Proposals (HIPs) |
| 3 | +description: Hyperlight Improvement Proposals (HIPs) are design documents providing information to the Hyperlight community, or describing a new feature for Hyperlight or its processes or environment. |
| 4 | +--- |
| 5 | + |
| 6 | +Hyperlight Improvement Proposals (HIPs) are design documents that describe significant enhancements to Hyperlight. They provide a consistent and controlled path for proposing substantial changes, ensuring that the community can discuss, refine, and document the motivation and design behind every major improvement. |
| 7 | + |
| 8 | +## Inspired by the Kubernetes Enhancement Proposal (KEP) Process |
| 9 | + |
| 10 | +The HIP process is largely influenced by the [Kubernetes Enhancement Proposal (KEP) process](https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/0000-kep-process/README.md), which provides a standardized development process for enhancements in the Kubernetes ecosystem. Like KEPs, HIPs give contributors a structured way to communicate intent and build consensus before writing code. |
| 11 | + |
| 12 | +However, because Hyperlight is a smaller project with a more focused community, HIPs are intentionally lighter-weight than KEPs. They do not require the same level of metadata or formal lifecycle stages. Instead, HIPs serve two primary purposes: |
| 13 | + |
| 14 | +1. **Communication of intent** — so that maintainers and the community clearly understand what is being proposed and why. |
| 15 | +2. **Historical record** — so that the motivations behind significant architectural decisions are preserved for future contributors. |
| 16 | + |
| 17 | +## When Is a HIP Required? |
| 18 | + |
| 19 | +Not every change needs a HIP. Use the following guidance to decide whether your contribution should go through the HIP process. |
| 20 | + |
| 21 | +### Changes That Do **Not** Require a HIP |
| 22 | + |
| 23 | +- Bug fixes and small patches |
| 24 | +- Minor refactors scoped to a single module |
| 25 | +- Documentation improvements |
| 26 | +- Dependency updates |
| 27 | +- Test additions or improvements |
| 28 | +- Trivial feature enhancements that don't change APIs or architecture |
| 29 | + |
| 30 | +For these kinds of changes, open a pull request directly against the [Hyperlight repository](https://github.com/hyperlight-dev/hyperlight). |
| 31 | + |
| 32 | +### Changes That **Should** Have a HIP |
| 33 | + |
| 34 | +- Large refactoring efforts that span multiple modules |
| 35 | +- Significant new features or capabilities |
| 36 | +- Breaking changes to public APIs |
| 37 | +- Changes to the project's build, release, or governance processes |
| 38 | +- Architectural shifts that affect how Hyperlight is used or extended |
| 39 | + |
| 40 | +When in doubt, ask yourself: *"Would someone reviewing this PR benefit from a written explanation of why this change is being made and what alternatives were considered?"* If the answer is yes, write a HIP. |
| 41 | + |
| 42 | +## What Does a HIP Contain? |
| 43 | + |
| 44 | +Every HIP follows a standard template with the following sections: |
| 45 | + |
| 46 | +| Section | Purpose | |
| 47 | +|---|---| |
| 48 | +| **Summary** | A high-level overview of the enhancement, suitable for release notes or roadmap communication. | |
| 49 | +| **Motivation** | Why the change is important, including goals and explicit non-goals. | |
| 50 | +| **Proposal** | What the enhancement does at a conceptual level, including user stories, constraints, and risks. | |
| 51 | +| **Design Details** | The technical specifics — API designs, implementation notes, and a test plan covering unit, integration, and e2e tests. | |
| 52 | +| **Implementation History** | A timeline of major milestones in the HIP's lifecycle. | |
| 53 | +| **Drawbacks** | Honest assessment of reasons not to pursue the change. | |
| 54 | +| **Alternatives** | Other approaches considered and why they were ruled out. | |
| 55 | + |
| 56 | +Not every section is required in the initial draft. Start with **Summary**, **Motivation**, and **Proposal** to gather early feedback before filling in the rest. |
| 57 | + |
| 58 | +## How to Author a HIP |
| 59 | + |
| 60 | +Follow these steps to create and land a HIP: |
| 61 | + |
| 62 | +1. **Create a directory** under [`proposals/`](https://github.com/hyperlight-dev/hyperlight/tree/main/proposals) named `NNNN-hip-${hip_name}`, where `NNNN` is the next available number. For example, if `0001` is the current highest, your HIP might be `0002-hip-make-me-a-sandwich`. |
| 63 | + |
| 64 | +2. **Copy the template.** Create a `README.md` inside your new directory using the [HIP template](https://github.com/hyperlight-dev/hyperlight/blob/main/proposals/NNNN-hip-template/README.md) as a starting point. |
| 65 | + |
| 66 | +3. **Write the initial sections.** Fill out the **Summary**, **Motivation**, and **Proposal** sections first. |
| 67 | + |
| 68 | +4. **Open a draft pull request.** Socialize the proposal early and gather feedback from maintainers and the community. |
| 69 | + |
| 70 | +5. **Complete the remaining sections.** Incorporate feedback and flesh out **Design Details**, **Drawbacks**, **Alternatives**, and the rest. |
| 71 | + |
| 72 | +6. **Mark the PR as ready for review.** Remove the draft status once the proposal is complete. |
| 73 | + |
| 74 | +7. **Implement the enhancement.** After the HIP is merged, begin implementation work, referencing the HIP in related pull requests. |
| 75 | + |
| 76 | +## Existing HIPs |
| 77 | + |
| 78 | +You can browse all current proposals in the [`proposals/` directory](https://github.com/hyperlight-dev/hyperlight/tree/main/proposals) of the Hyperlight repository. The first HIP, [HIP-0000](https://github.com/hyperlight-dev/hyperlight/tree/main/proposals/0000-hip-process), defines the HIP process itself. |
0 commit comments