GitHub
現行実装

コミュニティの連合形式

公開コミュニティはActivityPubのGroupアクターとして公開されます。 参加と投稿配信で現在使っている形式を説明します。

相互運用について: 標準のGroupFollowAcceptRejectAnnounceを使いますが、特定の外部製品との 適合試験を完了したという意味ではありません。

公開されるGroupアクター

公開中で削除されていないコミュニティだけが /ap/groups/:nameで取得できます。非公開コミュニティは ActivityPubのアクターとして公開されず、このURLは404を返します。 @name@hostはWebFingerでこのアクターに解決されます。

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://example.com/ap/groups/tech",
  "type": "Group",
  "preferredUsername": "tech",
  "name": "Tech Talk",
  "inbox": "https://example.com/ap/groups/tech/inbox",
  "outbox": "https://example.com/ap/groups/tech/outbox",
  "followers": "https://example.com/ap/groups/tech/followers",
  "moderators": "https://example.com/ap/groups/tech/moderators",
  "manuallyApprovesFollowers": false,
  "publicKey": {
    "id": "https://example.com/ap/groups/tech#main-key",
    "owner": "https://example.com/ap/groups/tech",
    "publicKeyPem": "..."
  }
}

実際の@contextには、アクター文書で使う既知の語彙定義が 追加される場合があります。上の例は参加と配送に必要な部分だけを示しています。

参加と退出

リモートアクターはコミュニティのinboxFollowを送ります。応答はコミュニティ自身の鍵で署名されます。

コミュニティの設定 Followを受け取ったとき
open その場で参加を記録し、Acceptを配送
approval 保留にし、管理者が承認した後にAcceptを配送
invite 外部からのFollowだけでは参加させず、Rejectを配送

退出は、参加時のFollowを対象にした Undoで表します。公開コミュニティ以外の inboxは連合向けに公開されません。

投稿の配信

コミュニティのフィードに作成した投稿は、投稿者を actorとするCreate(Note)として保存されます。 配信先はそのコミュニティのメンバーと、Groupアクターをフォローしている リモートアクターです。

公開コミュニティからリモートへ届けるときは、Groupアクターが投稿を Announceします。ローカルメンバーには元の Createが渡ります。

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://example.com/ap/activities/announce-1",
  "type": "Announce",
  "actor": "https://example.com/ap/groups/tech",
  "object": "https://example.com/ap/objects/post-1",
  "to": ["https://example.com/ap/groups/tech/followers"],
  "cc": ["https://www.w3.org/ns/activitystreams#Public"]
}

コミュニティのチャット

画面上のコミュニティチャットは、現在は主に同じインスタンス内の メンバー向け機能です。コミュニティのフィード投稿と同じ Announce配信を行うとは限りません。外部サーバーから Groupのinboxへ任意のCreateを送れば チャットに参加できる、という契約もありません。

現在使っていないAPC語彙

https://yurucommu.com/ns/apc#には roomsjoinPolicypostPolicyvisibilityが公開されています。 ただし、現在のコミュニティGroupアクターはこれらのプロパティを出力しません。 これらは将来の検討用語彙であり、実装済みの連合契約として扱わないでください。

確認できる範囲