github: Add discussions-first triage workflow

Redirect issue creation to GitHub Discussions for proper triage:
- Disable blank issues, redirect to discussion categories
- Add structured discussion templates for bugs, features, questions
- Add preapproved issue template for maintainer use only
- Update CONTRIBUTING.md to reflect new workflow
This commit is contained in:
Benoit Chesneau 2026-01-23 02:13:34 +01:00
parent e021e3e93f
commit 6a46d66a56
6 changed files with 282 additions and 13 deletions

View File

@ -0,0 +1,120 @@
title: "[Bug] "
labels:
- bug
- triage
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug!
Before submitting, please:
- Search [existing discussions](https://github.com/benoitc/gunicorn/discussions) and [issues](https://github.com/benoitc/gunicorn/issues) for duplicates
- Check the [FAQ](https://docs.gunicorn.org/en/latest/faq.html) and [documentation](https://docs.gunicorn.org/)
- type: textarea
id: description
attributes:
label: Bug Description
description: A clear description of what the bug is
placeholder: What happened? What did you expect to happen?
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: Minimal steps to reproduce the behavior
placeholder: |
1. Create a simple app with...
2. Run gunicorn with...
3. Send request...
4. See error...
validations:
required: true
- type: textarea
id: config
attributes:
label: Configuration
description: Your gunicorn configuration (command line or config file)
render: bash
placeholder: |
gunicorn --workers 4 --bind 0.0.0.0:8000 myapp:app
# Or config file contents
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs / Error Output
description: Relevant logs or error messages (use --log-level debug for more detail)
render: text
validations:
required: false
- type: input
id: gunicorn-version
attributes:
label: Gunicorn Version
description: Output of `gunicorn --version`
placeholder: gunicorn 24.0.0
validations:
required: true
- type: input
id: python-version
attributes:
label: Python Version
description: Output of `python --version`
placeholder: Python 3.12.0
validations:
required: true
- type: dropdown
id: worker-class
attributes:
label: Worker Class
description: Which worker type are you using?
options:
- sync (default)
- gthread
- gevent
- eventlet
- tornado
- asgi (beta)
- custom
validations:
required: true
- type: input
id: os
attributes:
label: Operating System
description: Your OS and version
placeholder: Ubuntu 22.04, macOS 14.0, etc.
validations:
required: true
- type: textarea
id: additional
attributes:
label: Additional Context
description: Any other context about the problem (proxy setup, Docker, etc.)
validations:
required: false
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I have searched existing discussions and issues for duplicates
required: true
- label: I have checked the documentation and FAQ
required: true
- label: I have included the minimal configuration to reproduce this issue
required: true

View File

@ -0,0 +1,74 @@
title: "[Feature] "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Thanks for suggesting a feature!
Before submitting, please:
- Search [existing discussions](https://github.com/benoitc/gunicorn/discussions) and [issues](https://github.com/benoitc/gunicorn/issues) for similar requests
- Check if this is already possible with existing configuration
- type: textarea
id: problem
attributes:
label: Problem Statement
description: What problem does this feature solve? What's the use case?
placeholder: I'm trying to... but currently...
validations:
required: true
- type: textarea
id: solution
attributes:
label: Proposed Solution
description: How would you like this to work?
placeholder: |
I'd like a new setting `--my-option` that...
Example usage:
gunicorn --my-option value myapp:app
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: What other solutions have you considered or tried?
validations:
required: false
- type: dropdown
id: scope
attributes:
label: Feature Scope
description: What area does this feature affect?
options:
- Configuration / Settings
- Worker behavior
- HTTP handling
- Logging / Instrumentation
- Signals / Process management
- Documentation
- Other
validations:
required: true
- type: checkboxes
id: contribution
attributes:
label: Contribution
options:
- label: I would be willing to contribute a PR for this feature
required: false
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I have searched existing discussions and issues for similar requests
required: true

View File

@ -0,0 +1,50 @@
title: "[Question] "
body:
- type: markdown
attributes:
value: |
Have a question about Gunicorn?
Before asking, please check:
- [Documentation](https://docs.gunicorn.org/)
- [FAQ](https://docs.gunicorn.org/en/latest/faq.html)
- [Settings Reference](https://docs.gunicorn.org/en/latest/settings.html)
- [Existing discussions](https://github.com/benoitc/gunicorn/discussions)
- type: textarea
id: question
attributes:
label: Question
description: What would you like to know?
validations:
required: true
- type: textarea
id: context
attributes:
label: Context
description: Any relevant context (your setup, what you've tried, etc.)
placeholder: |
I'm running gunicorn with...
I've tried...
validations:
required: false
- type: textarea
id: config
attributes:
label: Configuration (if relevant)
description: Your gunicorn configuration
render: bash
validations:
required: false
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I have checked the documentation and FAQ
required: true
- label: I have searched existing discussions
required: true

11
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Bug Report
url: https://github.com/benoitc/gunicorn/discussions/new?category=q-a
about: Report a bug or unexpected behavior (starts as a discussion for triage)
- name: Feature Request
url: https://github.com/benoitc/gunicorn/discussions/new?category=ideas
about: Suggest a new feature or improvement
- name: Question
url: https://github.com/benoitc/gunicorn/discussions/new?category=q-a
about: Ask a question about configuration, deployment, or usage

16
.github/ISSUE_TEMPLATE/preapproved.md vendored Normal file
View File

@ -0,0 +1,16 @@
---
name: Pre-Discussed and Approved Topics
about: Only for topics already discussed and approved in GitHub Discussions
title: ''
labels: ''
assignees: ''
---
**Only for topics already discussed and approved in the GitHub Discussions section.**
DO NOT OPEN A NEW ISSUE. PLEASE USE THE DISCUSSIONS SECTION.
Link to approved discussion:
---

View File

@ -21,24 +21,22 @@ to do everything for everybody. This means that we might decide against
incorporating a new feature. However, there might be a way to implement incorporating a new feature. However, there might be a way to implement
that feature *on top of* Gunicorn. that feature *on top of* Gunicorn.
### Discuss your design on the mailing list ### Start with a Discussion
We recommend discussing your plans [on the mailing We use [GitHub Discussions](https://github.com/benoitc/gunicorn/discussions)
list](http://gunicorn.org/#community) before starting to code - as the starting point for all bug reports, feature requests, and questions.
especially for more ambitious contributions. This gives other This allows for proper triage before creating formal issues.
contributors a chance to point you in the right direction, give feedback
on your design, and maybe point out if someone else is working on the
same thing.
### Create issues... - **Bug reports**: Start in [Q&A](https://github.com/benoitc/gunicorn/discussions/categories/q-a)
- **Feature requests**: Start in [Ideas](https://github.com/benoitc/gunicorn/discussions/categories/ideas)
- **Questions**: Start in [Q&A](https://github.com/benoitc/gunicorn/discussions/categories/q-a)
Any significant improvement should be documented as [a github After discussion and triage, maintainers will create issues for confirmed
issue](https://github.com/benoitc/gunicorn/issues) before anybody starts bugs and approved features.
working on it.
### ...but check for existing issues first! ### Check for existing discussions first!
Please take a moment to check that an issue doesn't already exist Please take a moment to check that a discussion or issue doesn't already exist
documenting your bug report or improvement proposal. If it does, it documenting your bug report or improvement proposal. If it does, it
never hurts to add a quick "+1" or "I have this problem too". This will never hurts to add a quick "+1" or "I have this problem too". This will
help prioritize the most common problems and requests. help prioritize the most common problems and requests.