Skip to content

Commit c9c6187

Browse files
authored
Merge pull request #5 from devigned/hips
docs: add HIP docs to describe how to propose broad changes
2 parents e8d4e27 + 6d0a720 commit c9c6187

2 files changed

Lines changed: 79 additions & 5 deletions

File tree

astro.config.mjs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@ export default defineConfig({
2020
],
2121
},
2222
{
23-
label: 'Resources',
24-
items: [
25-
{ label: 'Projects', slug: 'resources/projects' },
26-
{ label: 'Community', slug: 'resources/community' },
27-
],
23+
label: 'Resources', autogenerate: {directory: 'resources'}
2824
},
2925
],
3026
plugins: [starlightBlog({})],
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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

Comments
 (0)