Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/4-project-proposal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

name: Project proposal
description: Propose a new project or significant change.
title: "New Project: <short sentence describing proposal>"
labels: ["project-proposal"]
title: "Project: <short sentence describing proposal>"
labels: ["project"]
body:
- type: markdown
attributes:
Expand Down
65 changes: 43 additions & 22 deletions projects/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,24 @@ SPDX-License-Identifier: Apache-2.0

This directory contains the **projects process** for proposing, designing, and implementing significant changes to this repository. The process is lightweight, async-first, and uses GitHub Issues and Pull Requests.

```
┌──────────────────────────────────────────┐
│ ▼
┌─────────┴────────┐ ┌───────────────────┐ ┌──────────┐ ┌────────────────┐ ┌─────────┐
│ Proposal (Issue) │──▶│ Design (Markdown) │──▶│ Accepted │──▶│ In Development │──▶│ Shipped │
└─────────┬────────┘ └───────────────────┘ └──────────┘ └────────────────┘ └─────────┘
│ ┌──────────┐
└───────────▶│ Rejected │
└──────────┘
```

## Overview

The projects process consists of three key artifacts:

1. **Project proposal** ([GitHub Issue](../.github/ISSUE_TEMPLATE/4-project-proposal.yml)) – A structured issue that outlines a new project or major change.
2. **Project design** ([Markdown document](./_project-design-template.md)) – A detailed technical design document for accepted proposals.
3. **Projects project board** ([GitHub Project](https://github.com/orgs/NVIDIA/projects/157)) – A tracking board that provides visibility into proposal status and progress.
3. **Project board** ([GitHub Project](https://github.com/orgs/NVIDIA/projects/157)) – A tracking board that provides visibility into proposal status and progress.

## When to Use a Project Proposal

Expand All @@ -49,27 +60,38 @@ For smaller, localized changes, a normal issue and pull request are sufficient a

The projects process has four stages, tracked via the **Stage** field in the Projects project board. Only OSMO team members can change the Stage field in the Projects board. This ensures proper governance and tracking of proposals through their lifecycle.

### Stage 1 – Project Proposal (Issue)
### Stage: Proposal (Issue)

**Goal:** Propose a new project and gather initial feedback.

1. **Search for existing proposals** – Before creating a new proposal, search existing issues with the `project-proposal` label to avoid duplication.
2. **Open a project proposal** – Use the [Project Proposal issue template](../.github/ISSUE_TEMPLATE/4-project-proposal.yml) to create a new issue.
2. **Open a project proposal** – Use the [Project Proposal issue template](https://github.com/NVIDIA/OSMO/issues/new?template=4-project-proposal.yml) to create a new issue.
- Fill out all required fields.
- The issue will automatically be labeled with `project-proposal`.
3. **Add to the Projects board** – The issue will be automatically added to the **Projects** GitHub Project with **Stage = Proposed**.
4. **Discuss and refine** – Maintainers, the PIC, and the community discuss the proposal asynchronously in the issue comments.
- The issue will automatically be added to the [Project Board](https://github.com/orgs/NVIDIA/projects/157) with **Stage: Proposal**.
3. **Discuss and refine** – Maintainers, the PIC, and the community discuss the proposal asynchronously in the issue comments.
- Clarify scope and goals.
- Identify risks and alternatives.
- Determine if a detailed design is needed.

**Possible outcomes:**

- **Accepted** – The proposal is approved by OSMO team members. For significant projects, proceed to Stage 2 (Project Design). For smaller projects, skip to Stage 3 (Implementation).
- **Rejected** – The proposal is declined by OSMO team members. OSMO team updates **Stage = Rejected** and closes the issue with an explanation.
- **Needs more detail** – The proposal needs further refinement or a detailed design. Provide feedback and iterate.

### Stage 2 – Project Design (Markdown)
**Possible stage outcomes:**

- **Design**
- The proposal is approved by OSMO team members.
- The proposal requires a design.
- The issue is moved to **Stage: Design**.
- Proceed to Stage: Design (Markdown).
- **Accepted**
- The proposal is approved by OSMO team members.
- The proposal does not require a design.
- The issue is moved to **Stage: Accepted**.
- Proceed to Stage: In Development.
- **Rejected**
- The proposal is declined by OSMO team members.
- OSMO team updates closes the issue with an explanation.
- The issue is moved to **Stage: Rejected**.

### Stage: Design (Markdown)

**Goal:** Create a detailed technical design for accepted proposals.

Expand All @@ -82,7 +104,7 @@ For proposals that are significant or complex, a project design document provide
Use the proposal issue number (e.g., `PROJ-123`, `PROJ-456`) and a short, descriptive slug.

2. **Fill out the design** – Complete the template, expanding on the proposal:
- **Copy content from the proposal** – The early sections (Summary, Problem / Opportunity, Goals, Non-Goals) should align closely with the project proposal fields. Copy and refine as needed.
- **Copy content from the proposal** – The Overview should align closely with the project proposal fields. Copy and refine as needed.
- **Add detailed design** – Include API designs, architecture diagrams, data models, component interactions, and examples.
- **Document alternatives** – Explain what alternatives were considered and why this design was chosen.
- **Address impact** – Discuss backwards compatibility, performance, operations, security, and documentation.
Expand All @@ -93,16 +115,15 @@ For proposals that are significant or complex, a project design document provide

4. **Review and iterate** – Discuss the design in the PR comments. Revise as needed.
- Key decisions should be summarized back in the project proposal issue for visibility.
- Once the design is approved, merge the PR.
- Once the PR has received approvals, merge the PR.

5. **Update the project board** – OSMO team sets **Stage = Accepted** in the Projects project.
5. **Update the project board** – OSMO team sets **Stage: Accepted**.

### Stage 3 – Implementation
### Stage: In Development

**Goal:** Build the project according to the design.

1. **Create implementation issues** – Break the project into concrete tasks and open issues for each.
- Link issues back to the project proposal (e.g., "Part of #123").
1. **Create sub-issues** – Break the project into concrete tasks and open sub-issues for each.
- Use the implementation plan from the project design to organize work.

2. **Submit pull requests** – Implement the project in PRs, linking back to the relevant issues.
Expand All @@ -111,10 +132,10 @@ For proposals that are significant or complex, a project design document provide
3. **Update the project design** – As implementation progresses, update the project design document if decisions change or new details emerge.
- Submit PRs to update the design document as needed.

4. **Track progress** – OSMO team updates the **Stage** field to **In Development** in the Projects project board.
- Assign issues and PRs to milestones or link them to the project board for visibility.
4. **Track progress** – OSMO team updates the **Stage** field to **Stage: In Development** in the Projects project board.
- Create sub-issues and link them to PRs for visibility.

### Stage 4 – Shipped
### Stage: Shipped

**Goal:** Mark the project as complete and communicate the outcome.

Expand All @@ -126,7 +147,7 @@ For proposals that are significant or complex, a project design document provide
- Links to the project design, key PRs, and documentation.
- Any follow-up work or future considerations.

3. **Update the project board** – OSMO team sets **Stage = Shipped** in the Projects project.
3. **Update the project board** – OSMO team sets **Stage: Shipped** in the Projects project.

> [!NOTE]
> The project will be included in the next release of OSMO.
Expand Down
12 changes: 4 additions & 8 deletions projects/_project-design-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,12 @@ limitations under the License.
SPDX-License-Identifier: Apache-2.0
-->

---
title: "Project Title"
author: "@username"
pic: "@username"
related_issues:
- "#123"
---

# \<Project Title\>

**Author**: @username<br>
**PIC**: @username<br>
**Proposal Issue**: [#123](https://github.com/nvidia/osmo/issues/123)

## Overview

_The Overview section should be largely identical to the project proposal issue._
Expand Down