Add community triage infrastructure: CI lint, stale bot, CODEOWNERS, docs#1450
Open
benhillis wants to merge 1 commit into
Open
Add community triage infrastructure: CI lint, stale bot, CODEOWNERS, docs#1450benhillis wants to merge 1 commit into
benhillis wants to merge 1 commit into
Conversation
…docs
The repository has accumulated a large backlog (~669 open issues, 12 PRs
with no recent activity, ~344 issues unupdated since 2024). This change
adds the lightweight infrastructure needed to keep the queue from
drifting further without committing the maintainer team to heavy
ongoing work.
Workflows:
* .github/workflows/lint.yml runs hadolint on the Dockerfile,
shellcheck on shell scripts, actionlint (pinned to v1.7.7 with a
checksum) on workflows, and a non-blocking yamllint pass on YAML.
These run only on pull requests to main and on pushes to main, and
do not duplicate any work done by the production Azure Pipelines
build.
* .github/workflows/stale.yml runs daily and applies a conservative
inactivity policy:
- Issues: 365 days no activity -> 'stale', then 30 days -> close.
'enhancement', 'help wanted', 'good first issue', 'fixinbound',
'weston-upstream-bug', 'pinned', and 'security' are exempt so
that top-voted feature requests and known upstream tracking
issues are not auto-closed.
- Pull requests: 120 days -> stale, then 30 days -> close. Draft
PRs are exempt.
- A second job acts on 'Waiting User Info' issues with a tighter
30 + 14 day cycle and a distinct 'waiting-user-info-stale'
label so the two policies cannot collide.
operations-per-run is intentionally low (30 / 20) so the first
runs do not flood subscriber inboxes.
Docs and routing:
* .github/CODEOWNERS makes @benhillis the default reviewer on new
PRs so review pings have a defined recipient. Existing open PRs
are not affected.
* .github/SUPPORT.md documents the response-time expectations,
required information for bug reports, and where to send WSL
(non-WSLg) reports.
* .github/TRIAGE.md documents the existing label taxonomy and the
cross-cutting issue clusters that account for a large share of
duplicate reports.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds community triage infrastructure to microsoft/wslg: a CI lint workflow, a conservatively-tuned stale bot, a minimal CODEOWNERS, and two new docs (SUPPORT.md, TRIAGE.md). The intent is to slow the growth of the issue/PR backlog without touching production code or existing items. All additions are isolated to .github/ and do not affect builds, packaging, or runtime.
Changes:
- New lint CI (hadolint, shellcheck, version+SHA-pinned actionlint, non-blocking yamllint) on PRs/pushes to
main. - New stale workflow with two jobs: generic 365+30 / 120+30 sweep and a dedicated 30+14 sweep for
Waiting User Infoissues using a distinct label. - New
CODEOWNERS(everything →@benhillis), plusSUPPORT.mdandTRIAGE.mddocumenting response expectations, label taxonomy, workflow, and known duplicate clusters.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/lint.yml | Adds hadolint / shellcheck / actionlint / yamllint jobs, with actionlint pinned by version + SHA256. |
| .github/workflows/stale.yml | Adds two-job daily stale workflow with separate labels and conservative operations-per-run. |
| .github/CODEOWNERS | Routes all paths to @benhillis; also lists per-area paths explicitly. |
| .github/SUPPORT.md | Documents bug-report required info, response-time expectations, and routing for non-WSLg issues. |
| .github/TRIAGE.md | Documents label taxonomy, triage workflow, and known cross-cutting duplicate clusters. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+5
to
+31
| # when no later rule matches. | ||
| # | ||
| # See: https://docs.github.com/en/repositories/managing-your-repositories-settings-and-customization/customizing-your-repository/about-code-owners | ||
|
|
||
| * @benhillis | ||
|
|
||
| # Build / packaging | ||
| /Dockerfile @benhillis | ||
| /azure-pipelines.yml @benhillis | ||
| /devops/ @benhillis | ||
| /package/ @benhillis | ||
| /msi/ @benhillis | ||
| /Microsoft.WSLg.nuspec @benhillis | ||
| /Microsoft.WSLg.targets @benhillis | ||
| /build-and-export.sh @benhillis | ||
|
|
||
| # Source components | ||
| /WSLGd/ @benhillis | ||
| /WSLDVCPlugin/ @benhillis | ||
| /rdpapplist/ @benhillis | ||
|
|
||
| # Docs / community | ||
| /docs/ @benhillis | ||
| /README.md @benhillis | ||
| /CONTRIBUTING.md @benhillis | ||
| /SECURITY.md @benhillis | ||
| /.github/ @benhillis |
Comment on lines
+58
to
+61
| - name: Lint YAML files (non-blocking) | ||
| run: | | ||
| yamllint -d "{extends: relaxed, rules: {line-length: disable, document-start: disable, truthy: {check-keys: false}}}" \ | ||
| .github azure-pipelines.yml devops || true |
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Run shellcheck | ||
| uses: ludeeus/action-shellcheck@2.0.0 |
| # `enhancement` is exempted because top-voted feature requests | ||
| # often stay valid forever; the team prefers to close those | ||
| # manually with `wontfix` rather than via the bot. | ||
| exempt-issue-labels: 'pinned,security,help wanted,good first issue,fixinbound,weston-upstream-bug,enhancement' |
| days-before-issue-stale: 30 | ||
| days-before-issue-close: 14 | ||
| days-before-pr-stale: -1 | ||
| days-before-pr-close: -1 |
| * Your distribution and version (`lsb_release -r` on Debian/Ubuntu). | ||
| * WSLg logs from `\\wsl$\<Distro>\mnt\wslg` (`weston.log`, `stderr.log`, | ||
| and `pulseaudio.log` where applicable). | ||
| * Crash dumps from `%TEMP%\wsl-crashes` if WSLg crashed. |
| Please include: | ||
|
|
||
| * The output of `wsl --version` from a Windows command prompt. | ||
| * Your Windows build number (`[Environment]::OSVersion` in PowerShell). |
Comment on lines
+5
to
+7
| branches: [main] | ||
| push: | ||
| branches: [main] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds the minimum viable triage infrastructure for
microsoft/wslg:Dockerfile, shellcheck on*.sh, actionlint (pinned to v1.7.7 + checksum) on workflows, non-blocking yamllint pass. Runs on PRs and pushes tomain. Does not duplicate any work done by the production Azure Pipelines build.stale, +30 d → close. Exemptsenhancement,help wanted,good first issue,fixinbound,weston-upstream-bug,pinned,security.stale, +30 d → close. Drafts exempt.Waiting User Infoissues use a tighter 30 + 14 cycle and a separatewaiting-user-info-stalelabel so the two policies cannot collide.operations-per-runis intentionally low (30 / 20) so the first runs do not flood subscriber inboxes.@benhillisas default reviewer on new PRs. Does not retroactively affect the 12 currently-open PRs.SUPPORT.md— response-time expectations, required info for bug reports, routing for non-WSLg issues.TRIAGE.md— documents the existing label taxonomy (which previously lived only in maintainer heads) and the cross-cutting issue clusters (network-change focus loss, mstsc focus stealing, HiDPI, Ubuntu 24.04 regressions) responsible for the bulk of duplicate reports.Why
The repo has ~669 open issues, 12 open PRs (oldest from 2022, 7 of them >100 days stale), and ~344 issues with no activity since 2024, but no automated triage support and no CODEOWNERS. Maintainers are shipping releases but cannot keep up with the issue queue. This PR is the cheapest possible step toward sustainability — it does not close any existing issue or PR, but it stops the bleeding going forward.
Safety notes
operations-per-runis deliberately small. If the first few runs look noisy, the workflow can be disabled from the Actions tab or the thresholds raised in a follow-up PR.enhancementexemption. If you want to be even more conservative, addbugto the exempt list and use the bot for PRs only.CODEOWNERSis intentionally minimal (everything routes to@benhillis). Expand it once other reviewers' aliases are known.Follow-up plan (separate PRs / issues)
TRIAGE.md.Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com