閉じるタイミングに困ったり閉じる事ができない Issue ってありますよね?質問や提案などバグ報告ではないものです(参考 Github issue で質問してはいけない)。質問は回答したら閉じればいいじゃないかと思うかもしれませんが、閉じてしまったら他の人が探し辛くなりますしもう終わった話なんだと思われてしまいます。何度も同じ質問されても困るのでナレッジベースとして閉じずにためて起きたいわけです。その結果閉じれない Issue が残り続けてしまいます。ラベルである程度対応できるとは言え管理が面倒なことに変わりはありません。
ということで、それを解決する機能が GitHub Discussions です(参考 有効化されてるリポジトリ例 vercel)。現在は限定パブリックベータ版ということで、一部の選ばれたリポジトリのみしか使用できないと思いきや、簡単な条件を満たしていれば使えるようなので申し込んでみました。
なお現在はベータ版の状態なのでここに書いた内容は将来変わる可能性が高いですし機能にはバグがあるかもしれないので注意してください。ロードマップによると正式公開は 2020 Q4 (10月~12月)とのことです。
申込方法
申し込みはここ(Can one apply for GitHub Discussions Beta?)からしました。申込ページではなく誰かが GitHub サポートに作成したトピック(でいいのかな?)が半ば公式化されてるようです。検索したらすぐ見つかりますし、ここで申し込むことに対して特に問題視している感じもないので紹介します。(が状況は変わるかもしれませんので最新の書き込みをちゃんと読むようにしてください。)
ベータ版の利用条件は(現時点では)3人以上の Contributors がいるパブリック(公開)リポジトリです。非公開のリポジトリでは使えません。人数が足りなくて却下された場合でも「追加したぜ!」って書いて OK なぐらいゆるいです。組織全体ではなくリポジトリ単位の申込みで組織毎に最大2つのリポジトリまでという制限もあるようです。申込時にフィードバックの連絡先となるユーザーを一人指定する必要がありますが、通常は申込者でよいでしょう。Discussions の機能を有効にするためにリポジトリの管理者の権限が必要です。申し込むと数時間~数日以内にスタッフから手続きをしたよとトピックにコメントがつき、その次の日ぐらいには使えているはずです。まあ一連の流れはトピックを見ればわかるかと
Discussions 機能が有効になると連絡先に指定した人に GitHub Discussions フィードバックリポジトリへの参加の招待が届きますので参加しましょう。GitHub Discussions の最新情報を得られたりフィードバックを返せるようになります。また今は全員有効化されましたが、私が登録した直後はカテゴリの機能は無効になっており、フィードバックリポジトリでさらに申し込みが必要でした。これからも追加で申し込みが必要な機能がでてくるかもしれないのでフィードバックリポジトリ の Discussions を眺めてみましょう。
設定方法
特に難しいところはないと思いますが少しだけ説明します。Discussions 機能が有効になってもすぐに画面が変わるわけではなく、有効になったリポジトリの Settings から Discussions 機能を表示する必要があります。表示するにチェックを入れるとプロジェクトの上部に Discussions のタブが増えます。最初に「Welcome ~」のディスカッションを作るような画面になるので、そのまま or 適当に内容を修正して作成しましょう。もちろん内容は後から変更できます。カテゴリの追加・削除・編集はカテゴリ一覧ページの左、カテゴリの「Browse」の鉛筆マークから行えます。
機能について
(有効化されてるリポジトリを眺めてみれば大体わかると思いますが・・・)
ディスカッションは Issue とは違いスレッド形式を採用しており、それぞれのコメントへコメントができるので話の流れを後から追いやすくなります。
主に質問タイプのようなディスカッションに使うと思いますが、質問に回答したらそのコメントを「Answer」としてマークする事ができます。ディスカッションの検索では回答の有無で絞り込むこともできます。
最大3つのディスカッションを上部に置いて目立たせる事ができる「Spotlight discussion」という機能があります。Issue にある「Pin Issue」の Discussions 版です
既存の Issue から ディスカッションへ変換する事ができます。(Issue のページの右下に「Convert to discussion」のリンクがあります)。これで既存の Issue や Issue として建てられてしまったけどこれディスカッションだなみたいなものを閉じる代わりに変換する事ができます。ただしラベルなど一部の情報は消えるので注意してください。
ディスカッションから Issue への変換はありませんが、ディスカッションの内容を元に(編集を加えつつ)新しい Issue を作成する事ができます。ディスカッションを行ってる中でこれは対応する必要があるなみたな時に使うのを想定しているのだと思います。この機能はディスカッションのそれぞれのコメントの右上にある「・・・」の中の「Reference in new issue」から実行できます。
所感
外部の本格的なサービスに比べたらそれほど多機能というわけではないと思いますが、ニーズが多いと思われる機能をシンプルにまとめてあり Issue をごちゃごちゃになるのを防ぐには十分だと思います。Issue じゃないだろこれって思うものは Close せずにディスカッションに移動してしまえば Issue はクリーンなままです(笑)
まだ積極的に開発中なので、これから公開までに機能が大きく変更、追加される可能性があると思います。個人的には投票機能が実装されれば嬉しいですね(優先して実装して欲しい機能を聞いたりしたいので)。