Skip to content

Commit 7ee93c1

Browse files
authored
Merge pull request #812 from qwikifiers/pr-contributing
Added triage guide and automation
2 parents 13e0d53 + 505365c commit 7ee93c1

File tree

14 files changed

+735
-1205
lines changed

14 files changed

+735
-1205
lines changed

.github/ISSUE_TEMPLATE/bug.yaml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: 🐞 Bug Report
2+
description: Something does not work or is flaky! let us know!
3+
labels: ['TYPE: bug', 'STATUS-1: needs triage']
4+
title: '[🐞]'
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to fill out this bug report!
10+
11+
- type: dropdown
12+
id: package
13+
attributes:
14+
label: Which package is affected?
15+
options:
16+
- Headless Kit
17+
- Styled Kit
18+
- Utils
19+
- CLI
20+
- Documentation Website
21+
validations:
22+
required: true
23+
24+
- type: textarea
25+
id: description
26+
attributes:
27+
description: 'A clear and concise description of what you expected to happen instead. If you intend to submit a PR for this issue, tell us in the description. Thanks!'
28+
label: Describe the bug
29+
placeholder: I am doing ... What I expect is ... What actually happening is ...
30+
31+
validations:
32+
required: true
33+
34+
- type: input
35+
id: reproduction
36+
attributes:
37+
label: Reproduction
38+
description: Please provide a link via [qwik.new](https://qwik.new/) or a link to a repo that can reproduce the problem you ran into. `npm create qwik@latest` can be used as a starter template. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided after 14 days, it will be auto-closed.
39+
placeholder: Reproduction URL
40+
validations:
41+
required: true
42+
43+
- type: textarea
44+
id: reproduction-steps
45+
attributes:
46+
label: Steps to reproduce
47+
description: Please provide any reproduction steps that may need to be described. E.g. if it happens only when running the dev or build script make sure it's clear which one to use.
48+
placeholder: Run `npm install` followed by `npm run dev`
49+
50+
- type: textarea
51+
id: system-info
52+
attributes:
53+
label: System Info
54+
description: Output of `npx envinfo --system --npmPackages '{vite,undici,typescript,@builder.io/*,@qwik-ui/*}' --binaries --browsers`
55+
render: shell
56+
placeholder: System, Binaries, Browsers
57+
validations:
58+
required: true
59+
60+
- type: textarea
61+
id: additional_information
62+
attributes:
63+
label: Additional Information
64+
validations:
65+
required: false
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: 📖 Documentation Suggestion
2+
description: Suggestions on how we can improve the documentation.
3+
title: '[📖]'
4+
labels: ['PKG: docs', 'STATUS-1: needs triage']
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to fill out docs suggestion! However, if you think it's something you can fix yourself, please submit a PR instead.
10+
11+
- type: textarea
12+
id: description
13+
attributes:
14+
description: 'A clear and concise description of your suggestion to improve the docs.'
15+
label: Suggestion
16+
validations:
17+
required: true

.github/ISSUE_TEMPLATE/feature.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: ✨ Feature Request
2+
description: Suggest an idea for this project.
3+
labels: ['TYPE: enhancement', 'STATUS-1: needs triage']
4+
title: '[✨]'
5+
body:
6+
- type: textarea
7+
id: use_case
8+
attributes:
9+
label: 'Is your feature request related to a problem?'
10+
description: "A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]"
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: solution
16+
attributes:
17+
label: "Describe the solution you'd like"
18+
description: 'A clear and concise description of what you want to happen.'
19+
validations:
20+
required: true
21+
22+
- type: textarea
23+
id: alternatives
24+
attributes:
25+
label: "Describe alternatives you've considered"
26+
description: "A clear and concise description of any alternative solutions or features you've considered."
27+
validations:
28+
required: true
29+
30+
- type: textarea
31+
id: additional_context
32+
attributes:
33+
label: 'Additional context'
34+
description: 'Add any other context or screenshots about the feature request here.'
35+
validations:
36+
required: false

.github/workflows/closing-issues.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: Closing Issues For Inactivity
2+
3+
on:
4+
schedule:
5+
- cron: '0 0 * * *'
6+
7+
jobs:
8+
close-issues:
9+
if: github.repository == 'qwikifiers/qwik-ui'
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: needs reproduction
13+
uses: actions-cool/issues-helper@v3
14+
with:
15+
actions: 'close-issues'
16+
token: ${{ secrets.GITHUB_TOKEN }}
17+
labels: 'STATUS-2: needs reproduction'
18+
inactive-day: 14
19+
20+
- name: missing info
21+
uses: actions-cool/issues-helper@v3
22+
with:
23+
actions: 'close-issues'
24+
token: ${{ secrets.GITHUB_TOKEN }}
25+
labels: 'STATUS-2: missing info'
26+
inactive-day: 14

.github/workflows/labeling-issues.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Labling Issues
2+
3+
on:
4+
issues:
5+
types: [labeled]
6+
7+
jobs:
8+
handle-labeled:
9+
if: github.repository == 'qwikifiers/qwik-ui'
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: needs reproduction time limit
14+
if: contains(github.event.label.name, 'needs reproduction')
15+
uses: actions-cool/issues-helper@v3
16+
with:
17+
actions: 'create-comment'
18+
token: ${{ secrets.GITHUB_TOKEN }}
19+
issue-number: ${{ github.event.issue.number }}
20+
body: |
21+
Hello @${{ github.event.issue.user.login }}. Please provide a [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) using a GitHub repository or [StackBlitz](https://qwik.new).
22+
Issues marked with `STATUS-2: needs reproduction` will be automatically closed if they have no activity within 14 days.
23+
Thanks 🙏
24+
25+
- name: missing info time limit
26+
if: contains(github.event.label.name, 'missing info')
27+
uses: actions-cool/issues-helper@v3
28+
with:
29+
actions: 'create-comment'
30+
token: ${{ secrets.GITHUB_TOKEN }}
31+
issue-number: ${{ github.event.issue.number }}
32+
body: |
33+
Hello @${{ github.event.issue.user.login }}. Please provide the missing information requested above.
34+
Issues marked with `STATUS-2: missing info` will be automatically closed if they have no activity within 14 days.
35+
Thanks 🙏

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ Please, read and follow our [Code of Conduct](CODE_OF_CONDUCT.md) to help us kee
1111

1212
[Choose an issue template](https://github.com/qwikifiers/qwik-ui/issues/new/choose) to file a bug report / feature request.
1313

14+
## Triaging Issues
15+
16+
If you're interested in helping out with triaging issues, please follow the [Triaging Guide](./contributing/TRIAGE.md).
17+
1418
## Ready to contribute a Pull Request (PR)?
1519

1620
### 1. Make sure you aren't duplicating someone else's efforts.

contributing/TRIAGE.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Triage Guide
2+
3+
Welcome aboard! In this project, we take on bugs and grow enhancements with the expertise of seasoned repo medics.
4+
5+
Our goal is to keep Qwik UI in top shape, ensure the project runs seamlessly, and have a blast while doing it.
6+
7+
## Note about tags prefixes:
8+
9+
1. **STATUS-1**: The initial `needs triage` gets automatically added to newly created issues
10+
2. **STATUS-2**: A "waiting for someone/something" status.
11+
3. **STATUS-3**: The final state of an issue. This is a "resolution" status.
12+
13+
---
14+
15+
👇 _Inspiration for the diagrams below came from the Vite project_
16+
17+
## Bug Triaging Process
18+
19+
Our bug triaging process ensures that every reported issue gets the proper attention it needs. We sort, prioritize, and assign bugs to the right team members for swift resolution.
20+
21+
Here's how we handle bug reports in the Qwik UI repository:
22+
23+
```mermaid
24+
flowchart TD
25+
start{Missing information?}
26+
start --YES--> close1[Tag with\n'STATUS-2: missing info'\n\nBot will auto close if\n no update for 14 days]
27+
start --NO--> dupe{Is duplicate?}
28+
dupe --YES--> close2[Close, point to duplicate\n and tag with\n'STATUS-3: duplication']
29+
dupe --NO--> repro{Has proper\nreproduction?}
30+
repro --NO--> close3[Tag with\n 'STATUS-2: needs reproduction'\nBot will auto close if \nno update for 14 days]
31+
repro --YES--> real{Is actually a bug?}
32+
real --NO--> intended{Is the intended\nbehaviour?}
33+
intended --YES--> explain[Explain and close.\nPoint to docs if needed.\nTag with\n'STATUS-3: works as expected']
34+
intended --NO--> open[Tag with\n'STATUS-2: requires discussion'\nand either\n'WAITING FOR: team'\n'WAITING FOR: user']
35+
real --YES--> real2["1. Tag with 'STATUS-2: team is working on this'\n2. Add related feature label if\napplicable (e.g. 'PKG: headless')\n3. Add priority labels (see below)"]
36+
real2 --> unusable{Does the\nbug make Qwik UI\nunusable?}
37+
unusable --YES--> maj{Does the bug\naffect the majority\nof Qwik UI users?}
38+
maj --YES--> P4[P4: urgent]
39+
maj --NO--> P3[P3: important]
40+
unusable --NO--> workarounds{Are there\nworkarounds for\nthe bug?}
41+
workarounds --NO--> P2[P2: minor bug]
42+
workarounds --YES--> P1[P1: nice to have / fix]
43+
```
44+
45+
---
46+
47+
## Enhancement Triaging Process
48+
49+
Got a fantastic new feature idea or a brilliant improvement to enhance Qwik UI?
50+
51+
We're here to ensure these enhancements are thoroughly evaluated, prioritized, and brought to life.
52+
53+
The team prioritizes work based on the number of 👍 votes from the community on each issue.
54+
55+
Now, let's dive into how we manage enhancement requests in the Qwik UI repository:
56+
57+
```mermaid
58+
flowchart TD
59+
start{Missing information?}
60+
start --YES--> close1[Tag with\n'STATUS-2: missing info'\n\nBot will auto close if\n no update for 14 days]
61+
start --NO--> dupe{Is duplicate?}
62+
dupe --YES--> close2[Close, point to duplicate\n and tag with\n'STATUS-3: duplication']
63+
dupe --NO--> discussion{Requires further\ndiscussion?}
64+
discussion --YES--> close3[Tag with\n 'STATUS-2: requires discussion'\nand 'WAITING FOR: team'\nor 'WAITING FOR: user']
65+
discussion --NO--> implement{Should it be\nimplemented by core?}
66+
implement --NO--> community{Should it be implemented\nby the community?}
67+
community --YES--> incubate[Close and tag with either\n'STATUS-3: incubation'\nor 'STATUS-2: waiting for community PR'\nand 'COMMUNITY: PR is welcomed']
68+
community --NO--> wontfix[Close and tag with\n'STATUS-3: won't be worked on']
69+
implement --YES--> doimplement["1. Tag with 'STATUS-2: team is working on this'\n2. Add related feature label if\napplicable (e.g. 'COMP: runtime')\n3. Add version \nlabels (e.g. 'VERSION: upcoming major')"]
70+
```
71+
72+
## Thank You!
73+
74+
To all our incredible contributors, thank you! Your enthusiasm and hard work keep Qwik UI moving forward with fresh ideas and improvements. We're grateful for every bit of effort you put in 🫶
75+
76+
Together, we're building something special. Let's keep up the momentum and continue making Qwik UI better every day!

0 commit comments

Comments
 (0)