浏览器不支持(未启用)JavaScript,本页面的某些功能无法正常使用

认清Matrix协议的“创新困境”

Divider Line

我已经使用matrix很长时间了,为它做了几个项目,成了重度用户和开发者,也加入了一些房间讨论。最近一次交流不太愉快,却也促使我转变思维,不再聚焦于社区和我自身的需求,而是从外部视角获得清晰的观点!这应该是我最后一篇专门写Matrix的博文,特别资讯专栏(如脚本更新)仍会通过邮件和房间推送。对于这篇文章,欢迎不同看法。

“客户端实现”:一个看似美好却充满陷阱的提议

在Matrix生态中,当讨论新功能(例如“联系人别名”)缺失时,一个常见的观点是:协议本身是极简、稳定的骨架并提供了一定的扩展性(自定义事件),功能创新应该由客户端在骨架之外自行实现。

这个观点在技术上“正确”,但它回避了作为一个“生态”在实践中要解决的核心问题。依赖客户端自行实现,隐藏着三个陷阱:

  1. 体验的割裂与标准化的必要性 Matrix的核心价值在于联邦与互操作性。一个功能(比如“投票”)如果只在一个客户端上实现,那它对生态而言几乎是无用的、体验是分裂的。为了让其他客户端也能参与投票,这个功能最终还是需要通过MSC(Matrix Spec Change,协议规范变更)流程被“认定”为标准。这恰恰证明了,任何有价值的、需要互动的“自定义功能”,最终都绕不开缓慢的协议标准化流程,另一方面,每一个小小的功能创新,都需要单独的MSC,而最终有些客户端和服务端实现它,有些没有,这又产生碎片化和技术债。

  2. 客户端的过载与架构的错位 将所有逻辑都推给客户端,对以性能和低功耗为优先的客户端来说会导致臃肿。一个很简单的例子:消息翻译。如果我在手机上翻译了一条消息,换到电脑上时,难道要再调用API翻译一次吗?

    有人会说:“你可以用account_data来同步翻译结果。” 但这正是问题的关键:account_data本身也需要服务端同步。我们为什么不一开始就用更合理的C/S架构,让服务端来处理这些逻辑和缓存呢?把本该服务端处理的逻辑强加给客户端,是对C/S架构的错位。

  3. 客户端无法逾越的能力上限 有些功能,客户端从根本上就无法实现,例如后端流式输出内容到自定义卡片消息上;或者无法高效实现,例如,我想查询“我与B用户共同加入了哪些房间”。如果让客户端来实现,将是一场灾难性的N+1查询。这种聚合查询能力必须由服务端提供,但目前Matrix的Homeserver 并不提供这类高效API。

生态的“创新者困境”

因此,一个结构性问题浮出水面:依赖客户端的“小打小闹”无法构建一个统一、好用的生态,而协议层面的演进又极其保守和缓慢。

当然这种保守是可以理解的(为联邦和安全),但Matrix生态发展的“创新者困境”也随之而来:

  1. 不标准化的创新 -> 导致功能碎片化,破坏了联邦的核心价值。

  2. 标准化的创新 -> 必须通过漫长、官僚化的MSC流程,效率极低,且积累了大量技术债。

需求的多样化和体验的碎片化又导致了社区的成见,各自拥抱不同的理念以及实现端,这个困境的直接后果是:Matrix生态(重复造轮子+一小部分特殊功能)看似繁荣,但在GitHub上几百个star就算热门。除了Element自己,没有任何一个“Matrix应用”真正实现了已有用户的普及化,更不用说破圈。

Matrix的演进路线图,实际上被唯一有能力支付“标准化成本”的实体——Element(及其商业客户)所主导,Element的CEO提出“产品优先于协议,实施优先于规范”,很大程度上这种低效的社区模式下必然的、务实的选择。

从“为Matrix做应用”到“用Matrix做应用”

面对这个现实,应转变思路。

不应该再试图“为Matrix做应用”,即服务于这个小众、保守、各执己见的现有生态。

真正的出路,是“用Matrix做应用”。

Matrix是一个强大的技术工具箱,而不是一个必须住在里面的房子。它提供了即时通信、E2E(端到端加密)和Federation(联邦)这些强大的技术组件。

一个成功的模式,不是去开发“另一个Element客户端”,而是将Matrix视为一个可嵌入的、安全的通信层。多种可能的趋势:

  • B端垂直领域: 一个需要高度安全、可自托管、可审计的B端应用(如医疗、金融或政务领域),它完全可以 把Matrix当作一个组件(如安全私聊、E2S加密和数据存储)集成到自己的产品中。

  • 私有化部署: 许多NAS厂商或小型办公SaaS,可以集成Matrix作为其私有聊天和协作的解决方案,这完美契合了“去联邦化”以满足数据私有性的需求。

  • 大型平台集成: 像Reddit这样的大型社区,就借用Matrix实现其聊天功能。一个大型平台,完全可以将Matrix作为其内部千万级用户的即时消息(IM)基础设施,而用户甚至不需要知道Matrix的存在。

  • 生态互通(反向证明): 就连Rocket.Chat这样的竞争对手,也选择与Matrix的桥接实现联邦并着手构建自己的服务端。这反向证明了Matrix作为“通信元协议”的价值——它被用作连接不同通信孤岛的组件。

这种务实的做法,可以规避掉Matrix生态的内部摩擦:

  • 聚焦于市场痛点(如安全合规),而不是协议的“原教旨主义”。

  • 定义权和开发效率,可以对协议进行裁剪(例如为适应法规和商业需求而“去联邦化”),而不是被保守用户所束缚。

  • 服务于真实的市场,而不是一个小众的技术圈子。

结语

Matrix作为一个带着理想的去中心化、开放的协议,最终还是要向商业和组织的现实低头,它成为单一商业实体主导并努力与社区协调的平台,顶层设计上的兼容和自下而上的价值扩散是难以平衡的选择,这也使其注定是一个生态小众、发展缓慢的技术。

对于产品开发者来说,关键是认清这个现实:不要期待大而全。相反,把它看作一个提供了独特能力的工具,然后想清楚要用这个工具去建造什么真正有价值的东西。

Divider Line
标签: Matrix 自托管
作者: 宁嘉 | 参小智
日期:2025年11月12日

评论