想实现 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 社区组,推进联邦社交网络相关工作。
一条可执行的入门路径
- 读 W3C 发布版规范,建立客户端到服务端、服务端到服务端两套 API 的基本认识。
- 补齐 WebFinger、HTTP Signatures、数据可移植性三个配套主题。
- 读新实现者指南与 inbox 实现文章,明确接收端要处理哪些验证与状态。
- 用 ActivityPub.academy 和 httpsig.org 做交互式验证。
- 选择 Fedify 等库搭建骨架,用 FediTest、activitypub-testing 做测试。
- 遇到具体问题到 Discourse、NodeBB 论坛或 Matrix 频道提问。
站点内容以索引和链接为主,具体实现细节需要进入对应规范、文档或工具页面获取。