バグや今すぐ解決できないが将来的には改善したいことをIssue化しておくことがあると思いますが、現実はIssueをクローズするよりもIssueが増えていくスピードのほうがはやく、残り続けてしまうことがあります。
その結果、現時点で過去に抱えていた問題がすでに解決されていたり、昔過ぎて何に課題感を感じていたのかがわからないIssueが出てきます。
それに対して、自動でIssueをクローズする仕組みを試してみているので、それについて書きます。
古いIssueが残っていることによる課題
古いIssueが残り続けることに、以下のような課題があると考えています。
- Issueが把握できなくなる負のサイクルが生まれる
- 現時点で解決すべき問題が見えにくくなる
問題が把握できなくなる負のサイクルが生まれる
チームや個人が認知できるIssueの数には限界があります。
Issueが認知できる数を超えている状態の場合、すでに同じ課題を解決したいIssueがあるが、それがあることに気が付かず同じ課題を解決するIssueを作成してしまいます。
その結果、Issue数がさらに増加し、より把握できない状態になってしまいます。
そして、同じ課題を解決するIssueが複数あることで、課題の詳細な情報や関連情報、アイディアなどが各Issueに分散してしまい、Issueに情報を蓄積しても無駄になります。
現時点で解決すべき問題が見えにくくなる
Issueの数が多い場合、古くからずっと残っているパターンあります。
古くから残っているIssueは、現時点で価値があるかはわかりません。すでに課題が解決されている場合やIssue作成者が感じていた課題感を忘れてしまっていたりします。
また、膨大なIssueの山に埋もれることで、直近で解決すべき課題が見えづらくなり見落とされてしまいかねません。
上記の問題を解決すべく、直近で解決したいIssueを置く場をつくったとしても、直近で解決したいIssue置き場がIssueで溢れかえってきたり、次の1 ~ 2週間ではやらないけど1ヶ月後にはやるようなIssueをこれまでのIssue置き場に置くしかなくなり、山に埋もれてしまうことが起こると思います。
どう解決するか
一定期間Issueのアクティビティがないものは自動でクローズしていく仕組みが良いのではと思っています。
そう考えている理由は以下です。
- 課題がすでに解決しているかをすべて調べるのに時間を使うのは有用でない
- クローズすべき理由を考える、見つける人が疲弊しないようにする
そして、実際に使えそうなものはGitHubが公開してくれています。
一定期間アクティビティがないものにStale
ラベルを付与し、ラベル付与からさらに一定期間経過したら自動でクローズするようにできます。
クローズ前にStale
ラベルをつけてくれるため、本当に必要なIssueの場合、作成者や他のメンバーがクローズされないようにしたりすると思います。
逆に、ラベル付与されても何もアクティビティがない場合は、本当に解決すべき課題でないことがほとんどなのではと考えています。
そのため、思い切って厳し目のルールで導入してみるのは良いと思います。
さいごに
Issue置き場を定期的に掃除をし、必要なものを取り出せるようにしましょう。