这两天研究了下 Bluesky 背后的 AT Protocol。
AT Protocol 当中,每个用户的数据都被放在一个用户仓库里面,这个仓库被称为User Repository。
这个用户仓库是对外完全公开的。这个用户仓库也可以被托管在用户自行选择的 Personal Data Server (PDS)上。社交平台上的用户操作以这个 user repository 为 the source of truth。例如,一个帖子有点赞、评论和转发这些数据,但它其实不是 the source of truth,真正的 source of truth 是每个用户的 repository。像 Bluesky 这样的平台,要去把全网的用户仓库进行 indexing(有点像搜索引擎在做的事情),才能得到一个帖子最终的点赞数量以及有哪些评论。例如转发,它其实真正的 source of truth 在用户仓库里会有一个索引到那个帖子的全局唯一 ID 的转发操作。
AT Protocol 借鉴了 Web 本身的特点:真正的数据源来自网站/用户仓库,类似 Bluesky 这样的应用则类似搜索引擎,在完成需要的索引和内容过滤后给用户提供他们需要的视图。
AT Protocol 也不仅仅是为了类似 Twitter 这样形式的社交媒体构建的,它还可以被扩展支持长文博客、音乐收藏夹、类似 Reddit 的论坛等等。而背后的 user identity,用户的关注/被关注信息,用户存储的数据都可以在这些不同的 apps 上复用。并且他们还专门提供了一种 Schema 定义的语言 Lexicon,来让不同应用之间的数据交换变得更简单并且可靠。但目前的限制是被扩展的应用场景上用户是希望数据公开的,因为每个用户仓库就是全网公开的。
AT Protocol 不是第一个做跨应用数据共享,或者是去中心化身份,以及支持 PDS 的事情的。Solid Project 从六七年前开始就在做类似的事情,但是不接地气,例如它要求应用存数据的格式是一个非常小众的描述语言从而才能更好地跨应用共享数据,和大部分开发者的习惯差距很大,所以很难流行起来。
AT Protocol 还考虑了审核和内容过滤的问题。2021 年 AT Protocol 的设计者之一 Martin Kleppmann 写了一篇文章 Decentralised content moderation。在文中他提出 censorship resistance 的去中心化社交平台的设计太过天真,因为不受控制的内容平台必然会充斥暴力,色情,以及垃圾信息。而真正需要的是去中心化的 moderation 机制。这也成为了 AT Protocol 中首要的设计目标之一。
所以在 AT Protocol 中,社区可以第三方的 Labeler (用于标记垃圾信息,暴力色情内容) 和 Feed generator (生成推荐流)。而每个终端用户能够自行选择自己需要的内容。
Bluesky 虽然目前是最主要的 AT Protocol 的实现者和服务提供平台,但是它没有特权。每个组件都可以由社区构建:
- Relay 服务:订阅转发用户的操作的服务
- Personal Data Servers
- Feed generators
- Labelers
- Client
他们还给了很好的文档和工具来让开发者开发基于 AT Protocol 的应用。最近 Bluesky 增长很快,貌似是个好时候整点活。
AT Protocol 当中,每个用户的数据都被放在一个用户仓库里面,这个仓库被称为User Repository。
这个用户仓库是对外完全公开的。这个用户仓库也可以被托管在用户自行选择的 Personal Data Server (PDS)上。社交平台上的用户操作以这个 user repository 为 the source of truth。例如,一个帖子有点赞、评论和转发这些数据,但它其实不是 the source of truth,真正的 source of truth 是每个用户的 repository。像 Bluesky 这样的平台,要去把全网的用户仓库进行 indexing(有点像搜索引擎在做的事情),才能得到一个帖子最终的点赞数量以及有哪些评论。例如转发,它其实真正的 source of truth 在用户仓库里会有一个索引到那个帖子的全局唯一 ID 的转发操作。
AT Protocol 借鉴了 Web 本身的特点:真正的数据源来自网站/用户仓库,类似 Bluesky 这样的应用则类似搜索引擎,在完成需要的索引和内容过滤后给用户提供他们需要的视图。
AT Protocol 也不仅仅是为了类似 Twitter 这样形式的社交媒体构建的,它还可以被扩展支持长文博客、音乐收藏夹、类似 Reddit 的论坛等等。而背后的 user identity,用户的关注/被关注信息,用户存储的数据都可以在这些不同的 apps 上复用。并且他们还专门提供了一种 Schema 定义的语言 Lexicon,来让不同应用之间的数据交换变得更简单并且可靠。但目前的限制是被扩展的应用场景上用户是希望数据公开的,因为每个用户仓库就是全网公开的。
AT Protocol 不是第一个做跨应用数据共享,或者是去中心化身份,以及支持 PDS 的事情的。Solid Project 从六七年前开始就在做类似的事情,但是不接地气,例如它要求应用存数据的格式是一个非常小众的描述语言从而才能更好地跨应用共享数据,和大部分开发者的习惯差距很大,所以很难流行起来。
AT Protocol 还考虑了审核和内容过滤的问题。2021 年 AT Protocol 的设计者之一 Martin Kleppmann 写了一篇文章 Decentralised content moderation。在文中他提出 censorship resistance 的去中心化社交平台的设计太过天真,因为不受控制的内容平台必然会充斥暴力,色情,以及垃圾信息。而真正需要的是去中心化的 moderation 机制。这也成为了 AT Protocol 中首要的设计目标之一。
所以在 AT Protocol 中,社区可以第三方的 Labeler (用于标记垃圾信息,暴力色情内容) 和 Feed generator (生成推荐流)。而每个终端用户能够自行选择自己需要的内容。
Bluesky 虽然目前是最主要的 AT Protocol 的实现者和服务提供平台,但是它没有特权。每个组件都可以由社区构建:
- Relay 服务:订阅转发用户的操作的服务
- Personal Data Servers
- Feed generators
- Labelers
- Client
他们还给了很好的文档和工具来让开发者开发基于 AT Protocol 的应用。最近 Bluesky 增长很快,貌似是个好时候整点活。