「今後の変更」の紹介:コミュニティにおける新機能と既存機能の変更を管理するシステム

Discourseの改善を続けていく中で、管理者がDiscourseにどのような変更が予定されているかを理解し、それらの変更がコミュニティにどのように導入されるかを管理できるよう、新しい「今後の変更」設定ページを作成しました。このシステムにより、Discourseを安全かつ透明な方法で改善し続けられると信じています。

このトピックでは、この新しいシステムの仕組みと、コミュニティに新しい機能やその他の変更を安全に導入する方法について説明します。

「今後の変更」の仕組みの概要

新機能やその他の変更を開発する際、それらを/admin/config/upcoming-changesの「今後の変更」設定ページに追加していきます。各変更には、説明、ステータス、影響を受けるユーザーの指標、およびコミュニティ内で有効になっているユーザー(該当する場合)が含まれます。

変更のステータスに応じて、コミュニティに対してそれを有効にするか無効にするかを選択できます。ただし、一時的な措置であり、一部の変更は最終的に恒久的に有効になります。

変更を一時的に無効にすることで、影響を受けるサイトのカスタマイズやプロセスなどを対処する時間や、メンバーに変更について知らせる時間、または特定のメンバーグループにテストを任せる時間が確保できます。

「今後の変更」の詳細

「今後の変更」を分解し、各セクションで表示される情報を定義しましょう。

1. 名前と説明

名前と説明は、変更に関する簡潔な説明を提供し、追加情報やフィードバック収集のための関連するMetaトピックへのリンクが含まれます。

2. ステータス

ステータスは、開発ライフサイクルにおけるその位置を示します。ステータスは、変更がオプトイン(デフォルトではオフですが、有効にできます)、オプトアウト(デフォルトではオンですが、無効にできます)、または強制オン(オンで、無効にできません)かどうかを直接影響します。

「今後の変更」では以下のステータスを使用しています:

  • Experimental:初期開発/テスト段階にある可能性のある変更で、急速に進化すると予想され、実験を終了した場合完全に削除される可能性もあります(その場合、Inactiveステータスに移動します。以下を参照)。Experimental変更をオプトインしてテストすることができます。
  • Alpha:使用が安全なテスト済みの変更ですが、デザインや機能に若干の更新がある可能性があります。Alpha変更をオプトインして早期に使用することができます。
  • Beta:使用が安全なテスト済みの変更で、StableまたはPermanentステータスに移行するまで大きく変わる可能性は低いです。
    • :information_source: 多くのホスティングサイトやセルフホストサイトでは、Beta変更は自動的に全員に対して有効になります(以前に有効にしていない場合)。ただし、オプトアウトすることは可能です。
  • Stable:完了した変更[1]ですが、まだオプトアウト可能です(つまり、管理者が無効にできます)。管理者はStable変更をオプトアウトした場合、ダッシュボードで警告を受けます。
  • Permanent:テストが完了した変更で、強制オンです(つまり、管理者は無効にできません)。恒久的な変更は今後の変更リストには表示されなくなり、代わりに/admin/whats-newページに表示されます。
  • Inactive:中止された実験です。オプトインすることはできません。

変更はこれらのステータスを通じて線形的に進むことがありますが(つまり、Experimentalから始まりPermanentで終わる)、必ずしもそうとは限りません。一部の変更はAlphaBetaステータスで導入され、一部はStableステータスで終了します。「サイト設定のデフォルト値」タイプの変更は、既存の設定のデフォルト値のみを変更するため、Permanentには移行されません。

特定の変更がステータス間で進行するのにかかる時間は決まっていませんが、以下の場合に管理者に通知されます:

  • 新しい変更が試せるようになった場合
    • 通知疲れを避けるため、これらの通知は最大で週1回送信されます。これらの通知を受け取りたくない場合は、/my/preferences/notificationsで無効にできます。
  • 変更が自動的に有効になった場合
  • 間もなく強制オンになる変更を無効にした場合
    • これは管理者ダッシュボードの警告として表示されます。

3. 影響を受けるユーザー

影響を受けるユーザータグは、コミュニティ内のどのユーザーが変更を閲覧したり、何らかの形で相互作用したりできるかを説明します。簡単に言うと、この変更に気づく可能性があるのは誰でしょうか?影響を受けるユーザーにはいくつかのタイプがあります:

  • Admins:変更は管理者のみが閲覧できます。
  • Staff:変更は管理者とモデレーターのみが閲覧できます。
  • All members:変更はサイト内のすべてのメンバーが閲覧できます。
  • Developers:まれなケースでは、変更はコア、テーマ、またはプラグインのコードと相互作用している人々しか気づかないことがあります。

影響のタイプ

影響を受けるユーザーのサブセットであり、リストには表示されない影響のタイプがあります。影響のタイプは、変更がコミュニティに与える広範な影響を説明します:

  • Feature:変更は新しい機能やコミュニティの機能性を導入するか、既存の機能性を修正します。
  • Site setting default:変更は既存のサイト設定のデフォルト値を修正します。すでに設定を古いデフォルトから変更した管理者は影響を受けません。この変更がStableに達しても、管理者ダッシュボードの警告は表示されません。
  • Other:上記のカテゴリに当てはまらないその他の変更。

4. 有効にする対象…

このドロップダウンは、サイト管理者として、変更をコミュニティにどのように導入するかを制御できる場所です。有効にする対象は以下の通りです:

  • No one:サイト内のすべてのユーザーに対して変更を無効にします。
  • Everyone:サイト内のすべてのユーザー、匿名ユーザーを含む、に対して変更を有効にします。変更が自動的に有効になった場合(通常はBetaステータス)、Everyoneになります。
  • Staff only:サイトスタッフ(つまり、管理者とモデレーター)に対して変更を有効にします。
  • Specific groups:選択されたグループに対して変更を有効にします。

:information_source: 一部の今後の変更では、「有効にする対象」のオプションが制限されている場合があります。「有効にする対象」ドロップダウンの利用可能なオプションは、変更の構成によって決定されます。例えば、一部の変更では、限られたグループでのテストが不可能なため、EveryoneNo oneのオプションのみが許可される場合があります。


現在、/admin/config/experimentalの大部分のExperimental変更を「今後の変更」に移動し、まもなく新しい更新がここに表示されるようになります。この変更がコミュニティに与える影響についてお聞きできることを楽しみにしており、質問やフィードバックを歓迎します!


  1. ソフトウェアが完全に完了しているという意味ではありません! ↩︎

「いいね!」 43

興味があるのですが、変更の展開をどのように制御するのですか?機能が導入された後に変更することは可能ですか?ありがとうございます。

「いいね!」 2

ネイティブのフィーチャーフラグ!素晴らしいです :clap:

プラグイン用のAPIがあると最高です。

「いいね!」 5

それは待ち望んでいた機能です!ありがとうございます!

「いいね!」 3

これは素晴らしいですね。私のような最先端を行く人間、特にテーマを開発している者にとっては、このようにフラグを変更できる機能は驚異的です。

ただ、「今後の変更 (upcoming changes)」という名前は本当に最善でしょうか?例えば、HomeAssistantは「ラボ (labs)」を使用していますし、他の多くの人は「実験 (experiments)」のようなものを使っており、これらは「今後の変更」よりも良い響きに感じます。

「いいね!」 4

早期に試すことができる状態(オプトイン)で、問題が発生した場合に一時的にオフにできる(オプトアウト)ように、新機能が通知されます。変更がPermanent(恒久的に、つまりオプトアウトできなくなる)になる場合で、現在オフにしている場合は、その旨をお知らせします。

このセクションでは、その点をもう少し詳しく説明しています。

現在、設定エリアから「今後の変更」に移行した実験的な変更のみが表示されていますが、将来的には非実験的な更新もここに表示されるようになります。そのため、このシステムの使用方法としては「ラボ」という名称は適切ではないと感じています。

「いいね!」 3

プラグインはこのシステムをすでに利用できます。OP(元の投稿者)は技術的な詳細には踏み込んでいませんが、今後の変更を追加するために必要なことはあまりありません。

簡単な要約は次のとおりです。

  • hidden: true および client: true のサイト設定を追加する

  • server.en.yml に設定の説明を追加する

  • オプションで、public/images/upcoming_changes/SETTING_NAME.png にスクリーンショットを追加する

  • 設定に upcoming_change メタデータを追加する。これは次のような外観です。

# upcoming_change       - /admin/config/upcoming-changes ページに表示するための次のオプションを含む追加のメタデータ:
#                          - status: experimental | alpha | beta | stable
#                          - impact: コンマで区切られた2つの部分 - feature|other , staff|admins|moderators|all_members|developers
#                          - learn_more_url: 詳細情報へのURL

ただし、ここでは注意点として、サードパーティのプラグイン開発者がこのシステムを使用することを想定していなかったことです。これは主に私たち自身の目的のためでした。時間をかけて、このユースケースについてもっと検討できるかもしれません。

「いいね!」 7

気に入りました!ありがとうございます :raising_hands:

もし関連する設定があれば、その設定へのリンク/ショートカットを設けることは可能でしょうか?例えば、カスタムスプラッシュスクリーンには、機能させるために設定する必要がある追加の設定(SVGのアップロードなど)がありますが、それを見つけに積極的に移動しなければなりません。有効にしている場所の隣にそれらがあると便利だと思います。

「いいね!」 8

はい、その通りです!現在その変更に取り組んでおり、1、2日中には利用可能になるはずです。ホストされているサイトをデプロイして、すぐにアップデートを受け取れるようにメモしておきますね :slight_smile:

編集:完了しました!:rocket:

「いいね!」 6

自分でデプロイしたDiscourseで、「近日公開の変更」を管理画面に表示させるにはどうすればよいか教えてください。

@lindsey

この機能は、非表示のグローバルサイト設定である enable_upcoming_changes の背後にまだ隠されています。そのため、サイトの Rails コンソールで rails c を使用して有効にすることができます。最終的にはこれを削除し、その必要がなくなります。

わかりました、ありがとうございます。では、待ちますね〜〜〜〜〜〜〜〜

明確でなかったかもしれないので、再度申し上げます。「今後の変更」のメニュー項目はまだ公開されていませんが、

言い換え:
まだメニュー項目がない場合でも、[your_forum]/admin/config/upcoming-changes にアクセスすることで「今後の変更」セクションを確認できます。

「いいね!」 1

ここにあるはずですが、見えませんか?

セルフホスティングされていますか?もしそうであれば、enable_upcoming_changes(非表示設定)を true に設定する必要があります。このシステムが完全に安定していると確信でき次第、近い将来にこれを削除する予定です。

「いいね!」 3

今後の変更に関するほとんどのサイト設定が非表示になっているのに、enable_auto_grid_images だけが表示されている理由は何ですか?

「いいね!」 2

いいえ、単なる見落としです。こちらで修正しました:

「いいね!」 1

はい、sniper756 のようにセルフホストしています。
「まだライブではない」というのは、もしかしたら最善の表現ではなかったかもしれません。編集します。

「いいね!」 2

今日は、変更をステータス順(まずベータ、次にアルファ、最後に実験的)にソートできると便利だなと思いました。ステータスでフィルタリングすることはできますが、一覧全体を見たいのです。ステータスによって変更の興味度が異なるためです。

「いいね!」 4

その通りですね。サイトに表示された変更のタイミングに基づいた並べ替えオプションも検討していました。両方追加します :smiley:

「いいね!」 2

素晴らしい追加です!

ありがとうございます。

「いいね!」 1