Fediverse Enhancement Proposals
対応している FEP
FEP(Fediverse Enhancement Proposals)は、ActivityPub アプリが特定のことをどう扱うかについての、共通の取り決めです。Welley が対応しているものを、どこまで対応しているかとあわせて紹介します。提案の全文へのリンクもあります。
将来、Welley をオープンソースとして公開する予定です。公開日やライセンスは、まだ発表されていません。
-
FEP-044f
同意を尊重する引用投稿
投稿をサーバーをまたいで引用できるかどうかを、投稿者が決められます。
Welleyは、引用リクエスト、認可の確認、承認、拒否、取り消しに対応しています。
- WelleyはQuoteRequestアクティビティを送受信し、リクエストの承認と拒否も処理します。
- 引用の認可スタンプにより、受信側のサーバーは投稿者が同意したことを確認できます。
- 取り消しにより、投稿者が以前に承認した引用の許可を取り下げます。
同じように動かすには、他のサーバーも同意のプロトコルに対応している必要があります。単なるリンクや古い引用の拡張では、投稿者が同意したことは示されません。
-
FEP-1311
メディアの添付
Welleyはメディアの添付を送受信し、同じファイルの複数のバージョンを読み取れます。
Welleyは、添付のやり取りとバリエーションの読み取りに対応しています。一部の推奨事項や出力形式への対応は、より限定的です。
- Welleyは、単一のメディアURLでも、種類つきのメディアリンクの配列でも受け付けます。
- リモートの添付にあるサイズ違いやプレビュー画像を使えます。
- 複数バリエーションのURL配列を送信するには設定フラグが必要で、デフォルトではオフです。
Welleyは提案の全体を実装していません。特にdigestMultibaseは扱わず、互換性のため、デフォルトでは主となるURLを1つだけ送信します。
-
FEP-1b12
グループの連合
公開グループのチャンネルは、フォーラム型のActivityPubコミュニティと投稿やコメントをやり取りできます。
公開チャンネルは、標準のGroup actorとAnnounceの流れに対応しています。
- 公開チャンネルは、標準のGroup actorを使います。
- チャンネルは、承認した投稿をAnnounce activityで共有し、元の投稿者の情報を保ちます。
- Welleyは、グループからのAnnounceを受け取り、内容を適切なチャンネルに入れます。
Welleyのプライベートコミュニティでは、Welley独自のプロパティを追加で使います。グループの設定、メンバーシップのルール、モデレーション操作のすべてが、他のソフトウェアに引き継がれるわけではありません。
カテゴリ表示のフォーラムです。固定されたウェルカムトピックが先頭にあり、その上にカテゴリとタグのフィルター、並べ替えが並んでいます。 -
FEP-3b86
Activity Intents
リモートインタラクションのリンクで、その人がしたい操作を引き継げます。
Welleyは、操作ごとのWebFingerリンクと、認可リダイレクトに対応しています。
- WebFingerは、Follow、Like、Announce、Createなど、対応する操作ごとに別のテンプレートを提供します。
- グループの検出にはJoinも含まれます。
- インタラクションのエンドポイントは、その人をWelley内の適切な操作へ案内します。
リモート側のアプリがこれらのintentリンクを使う必要があります。Welley独自のVote intentリンクは拡張で、標準のFEPのアクションではありません。
-
FEP-5feb
アクターの検索インデックス登録への同意
プロフィールの持ち主は、公開投稿を検索インデックスに表示してよいかどうかを設定できます。
Welleyは各アカウントの同意を公開し、他のサーバーからの同意を取り込み、それに合わせてローカルのテキスト検索を制限します。
- Welleyは、プロフィールのプライバシー設定に基づいて、indexableアクタープロパティを公開します。
- 他のサーバーのアカウントは、投稿を通常のテキスト検索に表示するには、インデックス登録を明示的に許可している必要があります。
- インデックス登録を許可していない投稿者の投稿も、ハッシュタグを閲覧すると見つかることがあります。
このプロパティは、他のサーバーに同意を尊重するよう求めるものです。公開投稿へのアクセスを止めたり、独立した検索エンジンを制御したりするものではありません。
検索、発見、プロフィールにあるものを誰が見られるかに関する設定の一部です。ナビゲーションとアカウントの詳細は切り取っています。 -
FEP-7458
返信コレクションの利用
サーバーは、返信が配信されるのを待たずに、元の投稿から返信を取得できます。
Welleyは返信コレクションを公開し、リモートのものを取得します。
- Welleyは、投稿ごとに、ページ分割された返信コレクションを公開します。
- Welleyは、リモートの返信コレクションを取得し、そのページをたどります。
- リモートの議論を見つけたとき、Welleyはバックグラウンドで古いやり取りを補えます。
プライバシー、モデレーション、取得の上限、相手のサーバーに接続できるかどうかは、引き続き影響します。コレクションがあっても、すべての議論の完全なコピーがすぐに手に入るとは限りません。
-
FEP-7628
アクターの移動
アカウントはサーバー間で移動でき、フォロワーは新しいアカウントに切り替わります。
Welleyは、受信と送信のアクター移動、alias、リダイレクト、フォロワーの引き継ぎに対応しています。
- Welleyは、Move activityを受け取ると、移動先のaliasを確認してから、ローカルのフォロワーを移します。
- アカウントが他のサーバーへ移るとき、Welleyは移動先を公開し、他のサーバーのフォロワーにMove activityを送ります。
- Welleyは移動先にFollowを送り、古いフォローを削除します。
WelleyはmovedToを設定し、古いアカウントにはアクセスできるままです。移動済みのリモートinboxへの配信をすべて止めるわけではありません。投稿には、別途エクスポートやインポートが必要です。
3つのステップと、アカウントのエイリアス用の空のフォームがある移行ページです。サンプルのコミュニティコンテンツを使っています。 -
FEP-7888
contextプロパティをわかりやすく
Welleyは、イベントの議論をつなげたり、一部のリモートの議論コレクションを取得したりするためにcontextを使います。
Welleyは、イベントのcontextリンクと、一部のリモートcontextコレクションの流れに対応しています。
- イベントに付けた投稿は、contextとしてEvent URIを指せます。
- Welleyは、リモートのcontextコレクションをたどれます。コレクションを指す中間文書を経由する場合も含みます。
Welleyは、すべてのスレッドについて汎用のcontextコレクションを公開するわけではありません。contextに基づく完全な宛先ルーティングや、会話の所有にも対応していません。
-
FEP-844e
機能の検出
他のソフトウェアは、Welleyのapplication actorから、Welleyが対応している内容の構造化されたリストを読み取れます。
application actorは対応機能を公開しており、これはテスト済みです。
- application actorは、機能の識別子と名前を持つimplements配列を公開します。
- レスポンスには、そのプロパティのJSON-LDマッピングが含まれます。
- 現在、Welleyは15個のFEP識別子を示しています。
Welleyは、機能をやり取りして決めるために他のサーバーの機能リストを読むことは、まだしていません。
-
FEP-8a8e
Eventオブジェクトタイプの共通の使い方
イベントは、時間、場所、説明、出欠に、共通のActivityPubフィールドを使います。
Welleyは、Eventの基本的なやり取りと出欠の流れに対応しており、イベント用の拡張フィールドにも一部対応しています。
- Eventには、タイトル、開始時刻、終了時刻、タイムゾーン、場所、参加者コレクションが含まれます。
- CreateとUpdateで、イベントの変更を送ります。
- JoinとLeaveで、Welleyサーバー間の出欠の変更を伝えます。
提案の最新版では、主催者も必須で、場所と定員のルールも増えています。Welleyは最新版のすべてには対応していません。
招待された人は「はい」「いいえ」「たぶん」で答えます。主催者は、誰が参加するかを確認できます。 -
FEP-8fcf
サーバー間でのフォロワーコレクションの同期
サーバーは、フォロワーリストの違いを見つけて修正できます。
Welleyは、送信ダイジェスト、受信時のチェック、部分コレクションのエンドポイント、修復ジョブに対応しています。
- Welleyは、配信でフォロワーの同期を求めるとき、Collection-Synchronizationヘッダーを付けます。
- 受信側のサーバーはダイジェストを比べます。リストが違う場合は、そのサーバー向けのフォロワーコレクションを取得します。
- Welleyは、古くなったフォロー関係を、inboxへのリクエストとは別に修復します。
管理者は同期をオフにできます。相手のサーバーも同じプロトコルに対応している必要があります。
-
FEP-9098
カスタム絵文字
カスタム絵文字は、投稿、プロフィール、リアクションと一緒に届けられます。
Welleyは、対応するフェデレーションコンテンツについて、カスタム絵文字タグとインポートに対応しています。
- 送信するタグが、各絵文字のショートコードと画像を結びつけます。
- Welleyは、他のサーバーのEmojiタグを読み取り、ショートコードを、元のドメインごとに保存します。
- Welleyがリモートの絵文字をダウンロードするときも、メディアの制限が適用されます。
メディアブロックにより、絵文字の画像が読み込まれないことがあります。他のサーバーのアプリは、代わりにショートコードを表示できます。
カスタム絵文字エディターには、ファイルの要件、ショートコード、カテゴリー、そして絵文字をピッカーに表示するかどうかが表示されています。 -
FEP-9967
投票
互換性のあるサーバーと、アンケートや投票をやり取りできます。
Welleyは、単一選択と複数選択のアンケート、投票、結果の更新の送受信に対応しています。
- アンケートは、oneOfまたはanyOfの選択肢を持つQuestionオブジェクトを使います。
- Welleyは、他のサーバーからの投票を処理し、アンケートの結果を送ります。
- フェデレーションされた各アンケートには、終了時刻、終了しているかどうか、投票者数が含まれます。
相手のアプリがこのアンケート形式に対応している必要があります。操作部分や結果の詳細の見え方は、アプリによって違うことがあります。
フィードには、書式付きのテキスト、読者がクリックして表示できるインラインのネタバレ、その場で答えられる投票が表示されます。 -
FEP-b2b8
長文テキスト
長い投稿には、タイトル、全文、短いプレビューを持つArticleオブジェクトを使えます。
Welleyは、記事の内容、プレビュー、ソースのメタデータ、一部のリッチテキストマークアップに対応しています。
- Welleyは、すべての投稿を短いNoteとして扱うのではなく、Articleオブジェクトを送受信します。
- 送信する記事には、リード画像、抜粋、Markdownのソースを含められます。
- Welleyは、インラインのメディアやルビ注釈など、記事のマークアップの一部を保持します。
記事に複数の著者が載っている場合、Welleyは最初の1人を採用します。見出しは太字になるため、記事の構造の一部は失われます。
-
FEP-c0e0
絵文字リアクション
絵文字リアクションは、サーバーをまたいで使えます。
WelleyはUnicode絵文字とカスタム絵文字のリアクションに対応しており、取り消しと配信も含みます。
- Welleyは、対応する投稿について、EmojiReact activityを送受信します。
- Undoで、リモートのリアクションを取り消します。
- カスタム絵文字のリアクションには、その絵文字タグと、元のドメインが付きます。
他のソフトウェアは、別のリアクションセットに対応していることがあります。Welleyは、任意のemojiReactionsコレクションを提供していません。
メンバーは、絵文字でフォーラムのトピックにリアクションできます。絵文字ごとに、専用のチップと件数が付きます。 -
FEP-c16b
MFM関数の書式設定
Misskeyのぼかしマークアップの一部は、インラインのネタバレとして表示されることがあります。
Welleyは、受信した投稿ではぼかしの書式にだけ対応しています。
- Welleyは、Misskey Markdownのソース内のぼかし部分を認識します。
- Welleyは、対応するMFMのぼかしclassとぼかし属性を、安全なネタバレに変換します。
WelleyはMFM関数のすべてには対応しておらず、htmlMfmへの対応も示していません。他のMFM効果は、書式が失われることがあります。
フィードには、書式付きのテキスト、読者がクリックして表示できるインラインのネタバレ、その場で答えられる投票が表示されます。 -
FEP-d556
WebFingerを使ったサーバーレベルのアクター検出
サーバーを対象にしたWebFingerクエリで、そのapplication actorを返せます。
Welleyは、提案にあるMastodon方式のselfリンク検出に対応しています。そのための明示的なFEP識別子は示していません。
- ドメイン、または設定されたサーバーURLを対象にしたクエリは、instance actorへのselfリンクを返します。
- どちらの形でも、同じアクターに解決されます。
検索は、設定されたオリジンのテキストと完全に一致するものを探し、末尾のスラッシュは正規化しません。推奨されているService relationは公開しておらず、relationによる絞り込みにも対応していません。
-
FEP-efda
フォローできるオブジェクト
投稿をフォローして、その議論で後から起きる動きを受け取れます。
Follow(post)とUndoは、両方向で動作し、テスト済みです。
- Welleyは、投稿のURIをobjectにしたFollowを送ります。
- 受信した投稿のフォローとUndoで、投稿の購読が更新されます。
- 投稿のフォローは、その投稿者のフォローとは別です。
FEPの最新版では、フォローできるオブジェクトを見つけるためにfollowersコレクションを使います。Welleyの投稿は、そのコレクションも汎用の検出アルゴリズムも公開していません。Welleyでは、この機能は今も古い名前の「フォローした投稿」を使っています。
-
FEP-f1d5
FediverseソフトウェアのNodeInfo
他のサーバーは、NodeInfoを通じて、Welleyのソフトウェアとプロトコルの詳細を見つけられます。
WelleyはNodeInfoの検出と2.0のレスポンスに対応しています。
- 公開の検出エンドポイントは、NodeInfo 2.0ドキュメントにリンクしています。
- ドキュメントには、ソフトウェアのバージョン、ActivityPubへの対応、FASPのベースURLが載っています。
今のところ、レスポンスの利用状況の数と登録状況は固定値です。リアルタイムのサーバー統計としては当てにしないでください。2.1のルートはありません。
-
FEP-fe34
オリジンベースのセキュリティモデル
オリジンのチェックは、あるサーバーが、別のサーバーに属するコンテンツや権限を名乗るのを防ぐのに役立ちます。
Welleyにはオリジンに基づくセキュリティチェックがいくつかあり、テスト済みです。
- Welleyは、URIのスキーム、ホスト、実効ポートを比較します。
- オブジェクトのオリジンがアクターのオリジンと一致しない場合、inboxは特定のactivityを拒否します。
- リモートの取得、引用、コレクション、プレゼンスの経路には、さらにオリジンのチェックが加わります。
これはセキュリティモデルの一部にすぎません。Object Integrity Proofsは提供していません。