ActivityPub サポート:フェーズ 1 RFC では、Discourse における ActivityPub サポートのビジネスケースを評価し、MVP を超えて「フェデレーションを念頭に最初から構築された Discourse」を想定したアイデア出しの演習について概説しました。
そこでここでは、現在のコードベースの技術的な実用性を考慮せず、いくつかのブレインストーミングを通じてアイデア出しを開始します。これには多くの細部やエッジケースが存在することは承知しています。これは、ネイティブなフェデレーションサポートがどのように見えるかというビジョンです。では始めましょう。
コミュニティに境界はない
(写真提供:Pixabay from Pexels)
私たちは皆、一つの惑星を共有し、複雑な社会構造の中で混ざり合っています。なぜ Discourse コミュニティは単一のフォーラムに制限されるのでしょうか?
私は Humane Tech Community(HTC)の管理者を務めており、ここでは「Freedom > Privacy(自由 > プライバシー)」「Alignment > Ethics(整合性 > 倫理)」「Alignment > Standards(整合性 > 基準)」といった幅広い技術関連のトピックをカバーする(サブ)カテゴリを設けています。範囲が広すぎるかもしれませんし、これらのカテゴリに特化し、私達よりも優れた成果を出している他の Discourse フォーラムも多数存在します。しかし、「人間中心の技術」という分野全体を俯瞰したい人々にとって、この広いポジショニングは理にかなっています。
カテゴリのフェデレーション
もし、私たちの「Privacy(プライバシー)」サブカテゴリを、例えば PrivacyTools フォーラムの「Blog Posts(ブログ投稿)」サブカテゴリとフェデレーションできたらどうでしょうか?おそらく一方向の同期のみを行うかもしれません。HTC のプライバシーサブカテゴリの範囲が広いため、PrivacyTools で作成されたトピックが HTC フォーラムに表示され、私たちのメンバーがそれらと対話できるようにします。HTC フォーラムでのトピック投稿は、PrivacyTools のトピックへ、そしてその逆もまた同様に戻されます。両フォーラムのトピックは同期され続けます。もしかすると、複数の PrivacyTools サブカテゴリを HTC の「Privacy」に一方向で同期することも望めるかもしれません。そして、なぜ同様の方法で他のプライバシー関連コミュニティとも同期しないのでしょうか。
別の例として、Feneas と SocialHub の両方に、トップレベルの「ActivityPub」カテゴリが存在します。これらには重複があり、あるコミュニティのメンバーが別のコミュニティで何が起きているか unaware(無知)であるケースがあります。これは「ActivityPub」が双方向同期の候補となる機会であり、各フォーラムが同じトピックリストを含むようにする可能性があります。
タグと個別のトピックのフェデレーション
同じことがタグにも適用できます。特定のタグがフェデレーションされるように設定するのです。例えば、SocialHub の #specification タグを持つトピックが、HTC の「Alignment > Standards」サブカテゴリにフェデレーションされるように設定する場合があります。
トピックは、ケースバイケースでフェデレーションされることもあります。これはツールバーのコマンドによってトリガーされ、フェデレーション先のターゲットフォーラムを指定し、トピックが表示されるリモートカテゴリを選択することもできます(つまり、フォーラムのカテゴリリストもリモート閲覧のためにフェデレーションされます)。
メンバーのメンションとプロフィール閲覧
トピックが別のフォーラムにフェデレーションされる場合、その中のメンションはメンバーが所在する場所を反映するように適応する必要があります。HTC での私の @aschrijver ハンドルは、同期後に SocialHub フォーラムでは @aschrijver@humanetech として表示されるかもしれません。
私は SocialHub 上のユーザーでもあるため、プロフィール設定でアカウントを接続し、検証を行えば、同期されたトピックにおいて私のローカルアカウントのハンドルを表示させることができます。
リモートハンドルまたはメンバーのアバターをクリックすると、リモートフォーラムのプロフィールカードが表示されます。もう一度クリックしてプロフィールサマリーを表示すると、同期されたトピックの相互作用から生じたローカルフォーラム上のアクティビティ指標のみが表示されるかもしれません。あるいは、より興味深いことに、フェデレーション設定の一部である既知のすべてのフォーラムからのサマリーを表示することも可能です。例えば、応答が非常に活発で専門的なメンバーのものであることが、相手側のフォーラムで判明するようになります。
直接メッセージと通知
DM は、ローカルだけでなく、すべてのフェデレーションされたフォーラム間で可能になります。これは、DM 内でリモートメンバーをタグ付けまたはメンションすることで実現されます。それ以外については、DM コミュニケーションの仕組みに違いはありません。現在のローカル限定の DM と同じように機能します。
上記のフェデレーション機能から、通知もフェデレーションする必要性が生じます。リモートメンバーの投稿に返信したり、その投稿に「いいね」をつけたり、同期されたトピックスレッドでメンションしたりした場合、リモートフォーラムに UI 通知が表示され、メンバーに知らせることができます。メール通知もリモートフォーラムが処理します。ただし、メンバーが両方のフォーラムでアカウントをリンクしている場合、通知は相互作用が最初に発生したローカルフォーラムから届く可能性があります。
シングルサインオン
これまで説明したすべての機能において、SSO(シングルサインオン)の必要性はありません。リモートメンバーが別のフェデレーションされたフォーラムに自動的に特権アクセスを得るわけではありません。では、一方向に同期されたトピックスレッドで彼らがメンションされた場合どうなるでしょうか?その場合、彼らは自身のフォーラムインスタンスから届く UI 通知とメールを受け取り、それをクリックすると別のフォーラム(新しいブラウザタブかもしれません)に誘導され、そこでトピックを閲覧できます。返信したい場合は、まずサインアップしてアカウントをリンクし、返信できるようにする必要があります。
SSO は Fediverse において厄介な問題であり、まだ良い解決策は見つかっていません。しかし、Discourse 間のフェデレーションにおいては、SSO 機能の実装ははるかに容易になる可能性があります。SSO 統合があれば、通知をクリックすることで、トピックを現在のフォーラム内で「リモートビュー」として文脈的に開き、メンバーがシームレスにそれと対話できるようになります。
フェデレーション管理と複雑さ
このユースケース全体は、Discourse がフェデレーションサポートを組み込んで最初から構築されたかのように記述されています。これらすべてが実装されれば、製品のほぼすべての機能に影響を及ぼします。このスレッドを開始させたユースケース(FB 風の パーソナライズされたフィード)とは異なり、ここでのフェデレーションは個々のメンバーの気まぐれではなく、フォーラムスタッフによって慎重に管理されます。
フェデレーション設定の多くは管理者専用のものです。コミュニティの組織化とコンテンツを直感的かつ論理的に保つため、戦略的かつ十分な計画のもとに行われるべきです。フェデレーションのセットアップは、コミュニティ構築ワークフローの一部として時間とともに徐々に構築されるものであり、気軽に追加するものではありません。
相互運用性
もちろん、この ActivityPub サポートのビジョンは Discourse に限定される必要はありません。互換性のあるソフトウェアプロジェクトであれば、分散型コミュニティの構造の一部になることができます。例えば、forem のオープンソースコミュニティ構築ソフトウェアや、loomio の協働意思決定プラットフォームなど、これら両方に私がこの投稿の方向性を示したばかりです。しかし、Discourse はこれらすべてにおいて主導権を握る機会を持っています。
Fediverse 統合
ここまでのフェデレーションサポートは、フォーラム/コミュニティのビジネスドメインに限定されていましたが、ActivityPub 統合により相互運用性は拡大し、より広範な Fediverse を包含できるようになり、数多くのエキサイティングなビジネスケースが可能になります。思いつくものをいくつか挙げてみます。
- Mastodon や Pleroma のマイクロブログプラットフォームで toots を投稿し、フォーラム投稿を Fediverse 全体に発表する。
- 埋め込まれた画像が自動的に PixelFed にアップロードされ、そこから提供される(例えば Blender コミュニティにとって便利です)。
- 日時ツールバーを使って、Fediverse 向けの完全な Mobilizon イベントを設定し、RSVP 機能を備える。
- 双方向統合が可能で、イベント上の Mobilizon ディスカッションが実際に Discourse トピックとなります。
- 特別なビデオ機能を備えた PeerTube トピックを作成し、投稿を PeerTube のコメントスレッドとする。
- 公開されたトピックが自動的に Writefreely のブログ投稿とコメントスレッドになる。
- ActivityPub サポートを介して、フォーラムの一部を Nextcloud のアプリとして埋め込む。
- Funkwhale を通じてポッドキャスト機能を統合する(ポッドキャストサポートに関する最近の video を参照)。
- 開発中のプロフェッショナルソーシャルネットワーク(LinkedIn 風のロールデックス)である Flockingbird からプロフィール情報を取得する。
ActivityPub Watchlist 上で常に増加しているアプリの数を見つめ、あなたの想像力に任せてください ![]()
結果
技術的な障壁や障害を一時忘れ、これが Discourse という製品、あるいは「単なる製品」でなくなった Discourse にとって何を意味するかを考えてみましょう。つまり:Discourse は分散型コミュニティの構造そのものとなったのです。
フォーラムスタッフはもはや単なるスタッフではありません。彼らはコミュニティ構築に対してはるかに広い視点を持つようになります。コミュニティもコミュニティコンテンツも、Discourse の構造全体に存在します。スタッフは他の Discourse インスタンスを積極的に監視し、他のスタッフにアプローチしてパートナーシップを結び、コミュニティの組織化とコンテンツを最も興味深くするために、それらを切り貼りする興味深いフェデレーションデザインを作成します。
コミュニティメンバー自身も、はるかに良いサービスを受けることになります。より興味深いコンテンツが彼らのフォーラム「ポータル」に流れ込み、フォーラムはローカルなものだけだった場合よりも活発になります。コミュニティメンバーは、構造全体に広がる他のフォーラムインスタンスのメンバーを発見し、対話できるようになります。実際、コミュニティの境界は取り除かれました:コミュニティに境界はないのです。

