这里有一个更新。Pavilion 和 CDCK (Discourse.org) 正在讨论为 Discourse 构建一个 ActivityPub 插件。经过一些讨论,我们确定了以下规范。在最终确定之前,欢迎提出任何意见或建议。请注意:
-
故意排除了对传入内容的支持(例如,将 Mastodon 等平台上的帖子导入 Discourse)。以后版本可以添加此功能。
-
还故意排除了对关注用户(而不是类别)的支持。以后版本也可以添加此功能。
-
规范的实质性部分遵循 Lemmy 的方法。
-
Pavilion 将构建 MVP 插件(我将负责),CDCK 将拥有并托管它(即,它将是一个 CDCK 插件,而不是 Pavilion 插件)。
概述
Discourse 的 ActivityPub (AP) 插件。
该插件的目标是在 Discourse 中实现 ActivityPub、ActivityVocab 和 ActivityStreams 规范的 MVP 版本,并为 AP 兼容平台(即 Mastodon)提供一个演示集成 MVP 功能。在可能的情况下,实现将支持对协议及其任何扩展的进一步支持。
本规范涉及在每个类别基础上启用 AP 支持,其中 AP 启用的类别中每个主题的第一个帖子将被联合(“仅限第一个帖子”)。
用户
插件的使用将在 meta 上的插件主题中进行全面记录。
普通用户
-
使用类别的句柄(例如
@announcements@meta.discourse.org)在 Mastodon(或其他任何 fediverse 服务)上订阅(又称“关注”)一个联邦启用的 Discourse 类别(FDC)。 -
在其 Mastodon feed 中看到所有 FDC 主题的第一个帖子的摘录(在他们订阅后发布),每个帖子都带有指向相关主题的链接,例如“在我们的论坛上讨论”(URL)。
-
在 Mastodon 上与帖子相关的任何操作都不会显示在 Discourse 中。
-
在 Discourse 上与帖子相关的任何操作都不会显示在 Mastodon 中。
-
联邦帖子的摘录可以通过帖子作者使用类似于控制主题摘录的标记来控制,例如
<div>{text}</div>
管理员
-
使用类别设置在每个类别基础上启用联邦。联邦只能在对公共实例上的“所有人”可见的类别中启用。
-
通过类别设置 UI 设置类别的联邦用户名(无法更改)。
-
通过站点设置设置自动接受或拒绝活动的域的允许和拒绝列表。
-
设置一个联邦用户名的“阻止列表”,该列表将作为服务器发件箱中的 Block object(s) 的一部分。
-
使用站点设置设置联邦笔记的最大字符长度,即
activitypub_note_excerpt_maxlength。 -
在“自定义 > 文本”中设置与联邦 Discourse 主题的第一个帖子中包含的链接关联的文本。
-
在每个类别基础上设置是否在联邦帖子中包含指向论坛的链接(和文本)。
-
通过站点设置添加密钥对,用于签署联邦内容。
技术
-
该插件将包含全面的测试(单元/集成和 js 测试)。
-
该类别是 Discourse 中一个自动化的 ActivityPub Actor(作为 Group ActorType)。联邦的 preferredUsername 由管理员在启用联邦时设置,并存储在类别自定义字段中。联邦名称(又称显示名称)是类别的 full_name。
-
用户是类别 Actor 在 Discourse 中联邦的内容的 Actor。联邦的
preferredUsername是用户在联邦时期的 Discourse 用户名。用户的preferredUsername存储在用户自定义字段中,以防用户更改其 Discourse 用户名。联邦名称(又称显示名称)是用户的 Discourse 名称。 -
通常,ActivityPub 对象将通过自定义字段(例如,对象或 Actor ID)与它们等效的 Discourse 对象相关联,并在适当的地方使用新表(例如,收件箱和发件箱)。
-
要实现的主要 ActivityPub Activity 是 Follow 以及实现它所需的关联活动和模型,即收件箱、发件箱以及所需的关联操作和集合。
-
Discourse 帖子将被联邦化为 ActivityStream Notes,内容为 HTML。
-
身份验证将使用 HTTP Signatures 进行处理,请参阅此处和此处。ActivityPub 规范中的所有其他 Security Considerations 将根据需要进行处理。
-
联邦端点将根据规范进行适当保护,即确保在控制器中使用
redirect_to_login_if_required,并为所有人可见的类别添加 guardian 权限。