コミュニティの連合形式
公開コミュニティはActivityPubのGroupアクターとして公開されます。
参加と投稿配信で現在使っている形式を説明します。
Group、Follow、
Accept、Reject、
Announceを使いますが、特定の外部製品との
適合試験を完了したという意味ではありません。
公開される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には、アクター文書で使う既知の語彙定義が
追加される場合があります。上の例は参加と配送に必要な部分だけを示しています。
参加と退出
リモートアクターはコミュニティのinboxへ
Followを送ります。応答はコミュニティ自身の鍵で署名されます。
| コミュニティの設定 | 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#には
rooms、joinPolicy、
postPolicy、visibilityが公開されています。
ただし、現在のコミュニティGroupアクターはこれらのプロパティを出力しません。
これらは将来の検討用語彙であり、実装済みの連合契約として扱わないでください。
確認できる範囲
- 公開コミュニティのGroupアクター、outbox、followers、moderators
- Follow、Accept、Reject、Undoによるリモート参加
- 公開コミュニティの投稿をGroupのAnnounceとして配信
- 非公開コミュニティのアクター情報を連合向けに公開しない