Once an issue has enough information for us to triage it, here is our basic flow:
High priority issues
First, we determine if the issue is "P0" (priority 0). This includes issues that result in data loss, involve critical security/performance problems, or a UI problem that makes a feature unusable. If the issue is "P0", we assign it directly to the current milestone and get it fixed as soon as possible.
To be closed
Second, we determine if the issue is "by design" or "won't fix". The former means we intended it to be that way and the latter means there is some other reason preventing us from addressing the issue, for example a high cost-to-value ratio making it unreasonable for our team to implement and maintain going forward. If the issue falls into either category, we will explain our reasoning and close it immediately.
Backlog candidates
Finally, all other issues get put in our "Backlog Candidates" milestone. Periodically we go through this milestone and choose issues to move to our current and/or vNext milestones based on what we think is important and what we have time to fix. In an ideal world, we think all issues in this milestone are worth addressing, but unfortunately there is always more work than people to do it. To keep this milestone manageable, we have a bot that will warn when an issue is becoming stale (6 months with little activity) and give the community 60 days to upvote the issue. If it receives 5 upvotes (specifically a +1
/"👍" reaction), we will keep the issue open and take another look.