Skip to content

Automated backlog grooming #22351

@BillWagner

Description

@BillWagner

The dotnet/docs repo has more than 1500 open issues in our backlog. That's not manageable for us to track work. We're building a plan to bulk close stale issues based on five variables. That will trim the active backlog to a set of issues that we intend to address.

This plan is not intended to avoid the tasks identified in the issues being closed. Rather, it is to organize our backlog so we can effectively manage it. Many of the issues are stale. Many reflect plans that have changed. Others reflect work that has become unnecessary because of other completed tasks. Our intent is to run this process once, with a commitment to stay current on our backlog grooming.

Process

We are building a query script to do the following:

  • Find all issues matching any of the criteria listed below.
  • Add a "won't fix" label to each of those issues. That will help us find any of these later to understand why they were closed.
  • Add a comment that points to this issue clarifying that the issue author may re-open the issue if they feel it should not have been closed.
  • Close the issue.

Variables

There are five variables we will use to close issues:

  • "P?" priority labels (P0, P1, P2, P3): These have been added by people examining the issue in the past. When none have been set, the script will behave as though "P2" was set.
  • "Pri?" Automated labels (Pri1, Pri2, Pri3) set by our label bot: These are added based on the traffic to an article. When none have been set, the script will behave as though "Pri2" was set for any article that has the "document details" codeblock. (Any issue without that codeblock should have "Pri3" assigned, unless assigned a different priority manually):
  • Author: We create different criteria for those issues opened by our team and partners, and customers.
  • Age: Different criteria are applied to issues based on when it was opened.

Criteria

The following table has our first pass at the criteria. Headers are:

  • P: "P?" priority label
  • Pri: "Pri?" priority label
  • CodeBlock: The presence or absence of a "Document details" block. Its presence indicates an issue filed from the live article.
  • Author: Indicates if the author is a team member, or a partner.
  • Age: This column indicates how old an issue must be for it to be automatically closed.

The rows with a strikethrough should never occur. The labeling bot should always assign "Pri3" to any issue that does not contain the document details block when no other priority label has been set. The script will process any rows that do occur.

The ? in the priority column indicates an issue where no priority label has been applied.

To make suggested changes to the criteria, copy the table below, and make a comment changing the values in the Age column. Add Bold to any you change to help us spot your edits.

P Pri Author CodeBlock Age
0 1 External Yes No
0 1 External No No
0 1 Internal Yes No
0 1 Internal No No
0 2 External Yes No
0 2 External No No
0 2 Internal Yes No
0 2 Internal No No
0 3 External Yes No
0 3 External No No
0 3 Internal Yes No
0 3 Internal No No
0 ? External Yes No
0 ? External No No
0 ? Internal Yes No
0 ? Internal No No
1 1 External Yes 24m
1 1 External No No
1 1 Internal Yes No
1 1 Internal No 24m
1 2 External Yes 18m
1 2 External No 12m
1 2 Internal Yes 12m
1 2 Internal No 18m
1 3 External Yes 12m
1 3 External No 12m
1 3 Internal Yes 12m
1 3 Internal No 12m
1 ? External Yes 18m
1 ? External No 12m
1 ? Internal Yes 12m
1 ? Internal No 18m
2 1 External Yes 18m
2 1 External No 12m
2 1 Internal Yes 12m
2 1 Internal No 18m
2 2 External Yes 12m
2 2 External No 9m
2 2 Internal Yes 9m
2 2 Internal No 12m
2 3 External Yes 9m
2 3 External No 9m
2 3 Internal Yes 9m
2 3 Internal No 9m
2 ? External Yes 12m
2 ? External No 9m
2 ? Internal Yes 9m
2 ? Internal No 12m
3 1 External Yes 9m
3 1 External No 9m
3 1 Internal Yes 9m
3 1 Internal No 12m
3 2 External Yes 9m
3 2 External No 6m
3 2 Internal Yes 6m
3 2 Internal No 9m
3 3 External Yes 6m
3 3 External No 6m
3 3 Internal Yes 3m
3 3 Internal No 6m
3 ? External Yes 9m
3 ? External No 6m
3 ? Internal Yes 6m
3 ? Internal No 9m
2 1 External Yes 18m
? 1 External No 12m
? 1 Internal Yes 12m
? 1 Internal No 18m
? 2 External Yes 12m
? 2 External No 9m
2 2 Internal Yes 9m
? 2 Internal No 12m
? 3 External Yes 9m
? 3 External No 9m
? 3 Internal Yes 6m
? 3 Internal No 9m
? ? External Yes 12m
? ? External No 9m
? ? Internal Yes 9m
? ? Internal No 12m

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions