Contribute Ideas
This page covers the full ideas-to-design journey: sharing a raw idea in a discussion, converting it into a formal feature request, and proposing the technical design once a feature is approved.
Share an Idea
All features start with a problem worth solving. Two paths exist depending on how well-formed the idea is:
Discussion
Use when the idea needs refinement or community input. Problem needs exploration before a formal request.
Feature Issue
Use when you have a clear, well-defined problem with answers to: What? Why? Who?
When in doubt: Start with a discussion. You can always create an issue later.
Writing a good feature issue
Before opening an issue, make sure you can answer these three questions:
What Happens After You File an Issue
Maintainers will triage the issue (review strategic fit, assess scope, add labels) then decide whether it's approved for work. If approved, it's open for anyone — including you — to pick up.
Creating a well-defined feature issue is a complete contribution. You don't need to design or implement it yourself.
Propose a Design
Once a feature issue is approved and assigned to you, create a design discussion to propose how you'll solve it.
Go to GitHub Discussions, select the "Design" category, and outline your high-level approach to solving the assigned problem.
Open Design Discussion →The community will ask clarifying questions, identify edge cases, and suggest alternatives. Respond promptly and be open to feedback. Most discussions reach clarity within 1–2 weeks.
Maintainers formally review the proposal. Outcome: Approved → move to implementation; Needs Revision → address feedback and iterate; Rejected → explained and closed.
Once approved, you (or someone else) can implement the feature. You're credited as the design author regardless.
See Contribute Code →Review Outcomes
| Outcome | Meaning | Next step |
|---|---|---|
| ✅ Approved | Design is sound | Move to Contribute Code |
| 🔄 Needs Revision | Good direction, changes needed | Address feedback, iterate (typically 1–2 cycles) |
| ❌ Rejected | Fundamental issues found | Maintainer explains; discussion closed with documentation |
Rejection is not a reflection on you — it's how the process protects the codebase. Better to catch issues during design than implementation.