跳到主要内容

Bitsocial 与 ActivityPub

ActivityPub 是支撑 Fediverse 的 W3C 标准。用户选择一台服务器(称为实例)来托管自己的账号,服务器之间相互交换帖子。Mastodon 是其中最知名的微博客软件;Lemmy 是由主题社区组成的 Reddit 式链接聚合器和论坛,这使它成为 Fediverse 中与 Seedit 等 Bitsocial 应用最接近的对应物。

ActivityPub 的工作原理​

  • 收件箱与发件箱。 每个账号都有一个收件箱和一个发件箱。服务器把活动投递到其他服务器上的收件箱中,每台接收服务器都会为自己用户关注的内容保存一份副本。
  • 归服务器所有的身份。 账号和帖子的 ID 是源服务器域名下的 HTTPS 地址。Mastodon 用户名形如 @user@domain,通过 WebFinger 解析,服务器代表用户为联邦消息签名。
  • 客户端。 应用和浏览器只与用户自己的服务器通信,使用的是该服务器的 API。
  • Lemmy 社区。 社区是托管在某一个实例上的群组 actor。用户把帖子发给社区,社区再转播给关注者;根据共享的论坛标准(FEP-1b12),社区可以先校验帖子,最严格时可由版主人工批准。
  • 审核。 审核在每台服务器本地进行。管理员可以暂停账号、屏蔽整个服务器,或只与白名单中的服务器联邦;Lemmy 还为每个社区设有版主。
  • 垃圾信息控制。 ActivityPub 没有定义任何反垃圾机制。Mastodon 和 Lemmy 用审批、邀请、申请问题、验证码和邮箱验证来把守注册,然后依靠速率限制、举报和审核。

两者的区别​

身份属于域名​

Fediverse 账号属于其服务器的域名。Mastodon 可以把关注者重定向到新账号,但帖子不会迁移,迁移必须从旧服务器发起,而且有 30 天的冷却期。在 Bitsocial 中,个人资料和社区都是密钥对,因此更换托管方或应用不会改变身份。参见身份和社区所有权。

社区存在于何处​

Lemmy 社区在结构上与 Bitsocial 社区很接近:帖子发往社区,社区可以在转播之前检查它们。区别在于社区存在于何处。Lemmy 社区只能在创建者的主实例上创建,实例管理员对它拥有完全控制权,而且没有文档说明如何把它迁移到其他实例。Bitsocial 社区本身就是一个密钥对:所有者可以在任何地方运行它的节点,它之上也没有任何服务器管理员。

垃圾信息控制​

Fediverse 服务器主要在注册环节拦截垃圾信息,之后再进行审核。Bitsocial 社区在接受每条帖子之前都会运行一次挑战,并且每个社区自行选择挑战:验证码、白名单、付费或任何其他代码。参见自定义反垃圾邮件挑战。

运行基础设施​

运行一个实例意味着要有一台全天候在线、配有域名、TLS 和邮件的服务器。Mastodon 还需要 PostgreSQL、Redis 和后台任务进程;Lemmy 更轻量,按其自己的数据约需 150 MB 内存。每个实例都会保存其用户所关注的远程内容的副本。Bitsocial 社区节点不需要域名或证书,可以通过桌面应用或 bitsocial-cli 运行。

服务器换来的东西​

Fediverse 服务器保存完整的历史并能可靠地提供,Mastodon 也拥有多年积累的成熟审核工具。Bitsocial 不保证旧内容永久留存,它的审核工具则存在于各个应用之中。

对比​

问题ActivityPub(Mastodon、Lemmy)Bitsocial
类别联邦式服务器点对点社区网络
身份服务器域名下的账号,由服务器签名用户和社区各自使用 Ed25519 密钥对
帖子存放在哪里源服务器,以及每台关注它的服务器上的副本社区所有者的节点,以及读取并为其做种的对等点
谁让它保持在线实例管理员社区所有者的节点,加上协助做种的节点
社区托管在单一实例上的 Lemmy 社区一等对象,由其节点接受或拒绝帖子
垃圾信息控制注册门槛、速率限制、举报和审核帖子被接受之前须通过所在社区的挑战
审核服务器管理员和社区版主,各服务器本地执行社区所有者审核自己的社区;应用自行决定显示什么
名称@user@domain 和 !community@domain 用户名解析到密钥的 .bso 和 .eth 名称
浏览器用户自己服务器的客户端普通浏览器标签页中的点对点节点
主要取舍历史可靠、审核成熟,但身份和社区归属于服务器不需要服务器或域名,但旧内容不保证永久留存