Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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
190 changes: 190 additions & 0 deletions .github/ISSUE_TEMPLATE/jep-proposal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
name: "JEP: Enhancement Proposal"
description: Propose a substantial change to the Jumpstarter project
title: "JEP: "
labels: ["jep"]
body:
- type: markdown
attributes:
value: |
# Jumpstarter Enhancement Proposal (JEP)

Use this template to propose substantial changes to Jumpstarter.
See [JEP-0000](https://github.com/jumpstarter-dev/jumpstarter/blob/main/jeps/JEP-0000-jep-process.md) for when a JEP is needed and the full process.

**Tip:** Not every change needs a JEP. Bug fixes, new drivers following existing patterns, docs improvements, and dependency bumps should use a regular issue or PR instead.

- type: dropdown
id: type
attributes:
label: JEP Type
options:
- Standards Track (new feature or implementation change)
- Informational (guidelines or background)
- Process (development process or governance change)
validations:
required: true

- type: dropdown
id: status
attributes:
label: Status
description: Set to "Proposed" when this issue is ready for review
options:
- Draft
- Proposed
default: 0
validations:
required: true

- type: textarea
id: abstract
attributes:
label: Abstract
description: One paragraph (3-5 sentences) summarizing the proposal
placeholder: A reader should be able to decide whether this JEP is relevant to them from the abstract alone.
validations:
required: true

- type: textarea
id: motivation
attributes:
label: Motivation
description: |
Why is this change needed? What problem does it solve? Who benefits?
Describe the problem in concrete terms. Include specific scenarios that Jumpstarter users, driver authors, or operators encounter today. Do not describe the solution here.
placeholder: |
Describe the problem, not the solution.

### User Stories (optional)
- **As a** CI pipeline author, **I want to** ..., **so that** ...
validations:
required: true

- type: textarea
id: proposal
attributes:
label: Proposal
description: |
Explain the proposal as if it were already implemented and you are teaching it to another Jumpstarter contributor.
Show CLI commands, config files, Python API calls, YAML manifests, etc.
placeholder: |
Introduce new concepts by name. Use code examples and diagrams where they help.

### API / Protocol Changes (if applicable)
Show before/after of any changed message types, RPCs, or CRD fields.

### Hardware Considerations (if applicable)
What hardware is required or affected? Timing constraints? Privilege requirements?
validations:
required: true

- type: textarea
id: design-details
attributes:
label: Design Details
description: |
The technical heart of the JEP. Cover architecture, data flow, error handling, concurrency, and security implications.
placeholder: Use diagrams (Mermaid, ASCII art) for complex interactions.
validations:
required: true

- type: textarea
id: test-plan
attributes:
label: Test Plan
description: How will this feature be tested?
placeholder: |
### Unit Tests
What can be tested in isolation without hardware?

### Integration Tests
What requires a running Jumpstarter environment?

### Hardware-in-the-Loop Tests
What requires physical hardware? Specify the hardware needed.

### Manual Verification
What requires manual testing?
validations:
required: true

- type: textarea
id: backward-compatibility
attributes:
label: Backward Compatibility
description: |
Does this change break existing users, drivers, exporters, or deployments?
What is the migration path?
placeholder: Describe impact on existing deployments, wire format compatibility, operator upgrade path, etc.
validations:
required: true

- type: textarea
id: rejected-alternatives
attributes:
label: Rejected Alternatives
description: What other designs were considered and why were they not chosen?
placeholder: This section helps future contributors understand why the chosen approach was preferred.
validations:
required: true

- type: textarea
id: graduation-criteria
attributes:
label: Graduation Criteria
description: For features introduced incrementally (behind a feature flag, as experimental, etc.)
placeholder: |
### Experimental
What signals indicate readiness for broader testing?

### Stable
What criteria must be met before removing the experimental designation?
validations:
required: false

- type: textarea
id: prior-art
attributes:
label: Prior Art
description: Are similar features present in other HiL frameworks, testing tools, or infrastructure projects?
placeholder: "Consider: dSPACE, NI TestStand, LAVA, Robot Framework, pytest-embedded, Kubernetes patterns, etc."
validations:
required: false

- type: textarea
id: unresolved-questions
attributes:
label: Unresolved Questions
description: What aspects of the design are still open?
placeholder: List specific questions to be resolved during the JEP review process.
validations:
required: false

- type: textarea
id: future-possibilities
attributes:
label: Future Possibilities
description: What natural extensions or follow-up work does this proposal enable?
placeholder: Be explicit that these are NOT part of the current proposal.
validations:
required: false

- type: textarea
id: implementation-history
attributes:
label: Implementation History
description: Updated as the implementation progresses
placeholder: |
- YYYY-MM-DD: JEP proposed (this issue)
- YYYY-MM-DD: JEP accepted
- YYYY-MM-DD: Initial implementation merged (PR #NNN)
validations:
required: false

- type: textarea
id: references
attributes:
label: References
description: Links to related issues, PRs, external docs, or discussions
validations:
required: false
Loading
Loading