想实现 ActivityPub,ActivityPub Rocks! 上有哪些入门资源?

ActivityPub Rocks! 是 ActivityPub 协议的官方信息聚合站,面向正在或准备实现该协议的开发者,把规范入口、配套主题、社区讨论渠道、文档、交互式探索工具、开发库和测试资源集中在一处。如果你要动手实现一个 ActivityPub 服务端或客户端,可以从这个站点出发,按“先读规范与配套主题 → 再看社区文档 → 用交互工具验证 → 选库与测试”的顺序推进。它本身不提供托管服务或付费产品,价值在于索引和指路。

先理解协议本身

ActivityPub 是一个基于 ActivityStreams 2.0 数据格式的去中心化社交网络协议,由 W3C Social Web Working Group 发布,属于 W3C 正式推荐标准。它包含两套 API:

  • 客户端到服务端 API:用于创建、更新和删除内容。
  • 联邦式服务端到服务端 API:用于投递通知和订阅内容。

站点直接给出两个规范入口:最新发布版本(Latest published version)和最新编辑草案(Latest editor's draft)。实现时以发布版本为准,草案用于了解演进方向。

配套主题:实现前必须补齐的三块

站点明确提示,要理解通常实现中的完整 ActivityPub 技术栈,还需要读以下内容:

主题 作用
ActivityPub and WebFinger 解决账号发现与跨实例寻址
ActivityPub and HTTP Signatures 解决服务端之间请求的签名与验证
Data Portability in ActivityPub 处理数据可移植性

这三项不是可选项。只读协议主体而跳过它们,联邦通信往往在“找不到对方账号”或“请求验签失败”处卡住。

面向新实现者的文档

站点列出的文档资源包括:

  • Guide for new ActivityPub implementers:社区编辑的非官方指南,面向新实现者,实用性强。
  • Evan Prodromou: ActivityPub:O'Reilly 出版的书籍,作者是协议相关工作的核心参与者之一。
  • ActivityPub Primer:社区编辑的 Wiki 入门材料。
  • Understanding ActivityPub:Sebastian Jambor 的博客文章。
  • How to make friends and verify requests. Implementing an ActivityPub inbox:Mastodon 项目 Eugen Rochko 的博客文章,聚焦 inbox 实现与请求验证。
  • FediDevs.org:开发者文档与社区。

建议顺序:先用 Primer 或 Understanding ActivityPub 建立整体模型,再读新实现者指南补齐工程细节,inbox 那篇放在动手写接收端之前读。

交互式探索与测试

理解协议状态机最有效的方式之一是观察真实实例的行为:

  • ActivityPub.academy:一个改造过的 Mastodon 实例,用于交互式探索协议。
  • httpsig.org:交互式试用 HTTP 签名(RFC 9421)。
  • BrowserPub:浏览 ActivityPub 与 fediverse 内容的浏览器工具。
  • activitypub-testing:实现指南性质的测试资源。
  • FediTest:面向 Fediverse 这类分布式异构系统的测试工具。

例如需要确认自己发出的活动对象是否符合预期时,可以先用 ActivityPub.academy 观察一个成熟实现的行为,再用 FediTest 或 activitypub-testing 对照检查。

开发库

站点列出的库中,Fedify 是一个 ActivityPub 服务端框架,提供 TypeScript 库。如果你的技术栈是 TypeScript,可以从它入手,避免从零实现签名、投递和 inbox 处理等重复工作。

社区与动态

实现过程中遇到问题,站点给出这些渠道:

  • 讨论论坛:基于 Discourse 和 NodeBB 的论坛,两者都支持 ActivityPub。
  • 开发者聊天:Matrix。
  • 开发者与标准化聊天:IRC 频道 #social。
  • Fediverse 网络统计:FediDB、Fediverse Observer、The Federation,可用于了解生态规模与实例分布。
  • 新闻:Connected Places 通讯,关注开放社交网络。
  • 活动:Open Social Web Events,由 FediForum 整理。
  • 标准化工作:SocialCG,W3C 社区组,推进联邦社交网络相关工作。

一条可执行的入门路径

  1. 读 W3C 发布版规范,建立客户端到服务端、服务端到服务端两套 API 的基本认识。
  2. 补齐 WebFinger、HTTP Signatures、数据可移植性三个配套主题。
  3. 读新实现者指南与 inbox 实现文章,明确接收端要处理哪些验证与状态。
  4. 用 ActivityPub.academy 和 httpsig.org 做交互式验证。
  5. 选择 Fedify 等库搭建骨架,用 FediTest、activitypub-testing 做测试。
  6. 遇到具体问题到 Discourse、NodeBB 论坛或 Matrix 频道提问。

站点内容以索引和链接为主,具体实现细节需要进入对应规范、文档或工具页面获取。

activitypub.rocks