跳到主要内容
专题 · Web 作为系统能力

同构不等于围墙:ARC 与开放 Web 的互操作边界

Robert
ARCInteroperabilityWebsite

如果两个站点各自从零实现身份、评论、reaction、内容结构和发布流程,它们很难自然地交流。即使它们都在用 HTTP,彼此也未必知道一条回应是谁发出的、能否验证、应如何呈现、由谁删除,或数据是否应该同步。于是今天的大多数互动要么退回单一平台的内部功能,要么要求作者自己拼协议、部署 endpoint、处理 spam 和审核。

读者在浏览器里很容易看到这种断裂。一篇独立文章可以被链接、被截图、被复制到另一个社区,但原文站通常不知道发生了什么;即使有人在自己的站点写了认真回应,两边也未必能把这层关系显示出来。一个普通超链接足以让人跳转,却不足以处理作者归属、审核、删除、通知或后续互动。所谓跨站交流,真正难的部分常常藏在读者看不见的地方。

ARC 试图先解决其中比较小、也比较现实的一部分:让同一 runtime 模型里的站点可以用共同的内容、归属与授权语义来建模。内容、作者归属、权限判断和互动记录不必每次都被发明成彼此不兼容的一套私有对象。但这还不是跨站连通层。若要跨站显示、通知或写入,仍须由上层明确实现发现、映射、投递与授权。

这可以称为同构,但不能误解为自动连通。共享格式不等于共享信任,拥有同一种 DID 或运行时也不等于任何站点都可以读取另一站点的数据,或代表别人发言。跨站点的可见性、写入权、审核和通知仍要由明确的规则决定。系统做的是减少两端理解彼此所需的重复翻译,不是取消边界。

原生互操作为什么有价值

想象两个由同一套系统能力支撑的独立站点。一个人先在自己的笔记站写回应,再引用另一站的文章。在存在明确桥接时,兼容的内容引用、调用者身份和权限语义能让原文站不必把这次回应当成一段无法解释的外来文本;它可以明确地判断来源、归属、目标和允许的动作。作者也不必为了这一次互动,把自己的文章搬进对方的评论数据库。

这并不是一个必须依赖区块链的场景,也不是说所有互动都应该被记录为不可更改的公开事件。很多交流只适合留在本地、一个组织内,或由特定社区决定保留多久。ARC 的目标是让这些选择有一致的技术入口:需要的地方可以保留可验证的归属与审计线索,不需要的地方则不把公开账本强加给一条普通评论。

同构的好处也不只在社交。站点之间共享发布、内容、身份和 action 的基本边界后,主题页、引用、相关内容、站内外导航、订阅或协作工作流更容易被组合出来。重要的限制仍然一样:这说明它们的上层产品更容易构建,不表示 ARC 今天已经提供了跨站发现、feed、通知网络或社区产品。那些产品需要自己的滥用治理、排序、交付和隐私决策。

原生体验不能要求全世界换 runtime

如果同构站点只能和同构站点说话,它最终会重演 Web 最不值得重演的部分:每个新便利都变成加入一个封闭平台的理由。ARC 因而需要同时把另一条路保留下来,即从自己的系统语义走向公开 Web 协议。

Webmention 是其中很小但很有启发性的例子。回应者在自己的 URL 发布内容,再通知原文 URL;接收方验证 source 的确指向 target,然后决定是否展示。这种模式的价值不在于它已经解决评论、身份或 spam,而在于它保留了一个简单的原则:对话可以发生在不同的发布空间里,原文作者也仍然有审核和呈现的选择。

ActivityPub 解决的是另一个层次的问题。它为联邦活动定义 Actor、inbox、outbox,以及 Create、Update、Delete、Follow、Like、Announce、Undo 等活动怎样在服务器之间传递;回复关系通常由对象的 inReplyTo 表达。它并不规定一个统一的评论界面、推荐算法或审核制度,因此也不应被描述成“一接上就有去中心化社交网络”。真正的互操作仍需要发现、投递、验证、滥用处理、同步和本地产品规则。

ARC 目前尚未实现对 Webmention 或 ActivityPub 的对外兼容。把它们写为设计方向,正是为了避免另一种更常见的错误:把内部方便的互动模型当成终点。原生 ARC 站点应能获得更低的组合成本;不在 ARC 上的站点,也应能在合适的协议层与之建立有限、明确、可验证的联系。

开放不是取消产品判断

开放协议有时被讲成一种自动消失的成本。但一套真正可用的 Webmention 接收端,要处理 endpoint、链接验证、存储、修改与删除、反滥用、审核和呈现;一个真正可用的 ActivityPub 服务,要处理更多的发现、投递失败、身份验证与内容、请求验证机制、远端策略和社区治理。ActivityPub 本身不规定唯一的签名方案。协议使边界可以被协商,却不能替任何人作出产品判断。

因此 ARC 的目标并不是发明一个“万能社交层”。更准确地说,它提供一个可以承载发布、身份、授权、记录和动作的系统底座,让上层产品不必每次从空白开始;对外则尊重已经存在的 Web 标准和不同站点的自主性。某个站点可以只发布静态内容,另一个可以开启署名评论,第三个可以建成完整讨论社区。它们不需要被迫变成同一种产品,才有机会表达可理解的关系。

这也把整组文章的论点收回到最开始。Web 的历史并不是从文件走向应用、再由某种新框架取代旧框架的直线。它不断在直接发布、可编程性、交互、运营成本与开放连接之间寻找平衡。ARC 的 Web Device 只是这个历史中的一个具体回答:把发布重新定义为 runtime 的一等能力,把实时界面和特殊业务留给更合适的运行路径,再让原生协作与开放协议并行发展。

如果这条路径成立,普通人不必先成为全栈开发者或平台的租户,才能拥有一个既能发布、也能回应的 Web 空间。专业团队也不必放弃复杂应用,才能减少重复搭建公共底座的成本。这不是把 Web 退回过去,而是把它最值得保留的承诺,用今天的系统能力再做一次。

延伸阅读