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
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
list](http://gunicorn.org/#community) before starting to code -
especially for more ambitious contributions. This gives other
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.
We use [GitHub Discussions](https://github.com/benoitc/gunicorn/discussions)
as the starting point for all bug reports, feature requests, and questions.
This allows for proper triage before creating formal issues.
### 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
issue](https://github.com/benoitc/gunicorn/issues) before anybody starts
working on it.
After discussion and triage, maintainers will create issues for confirmed
bugs and approved features.
### ...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
never hurts to add a quick "+1" or "I have this problem too". This will
help prioritize the most common problems and requests.