Matrix 被政府、军队、开源社区和财富 500 强企业使用。它不是一个"勉强能用的业余项目",而是一张承载真实流量、覆盖数千台主机服务器的运行中网络。本页快速巡视一下谁在跑 Matrix、他们用的是什么服务器软件、以及协议是怎么演进的。
Matrix 由 Matrix.org 基金会(一家英国非营利组织)统筹,基金会拥有协议规范并运行 matrix.org(社区旗舰主机服务器)。基金会不控制网络——它的职责是保证协议规范开放,并发布官方参考实现。任何人都可以在协议之上构建,无需事先征得同意。
基金会由捐款和企业会员(Element、Automattic、Famedly、Gematik 等)资助。协议提案走公开的 MSC 流程——任何人都可以写一份,由 Spec Core Team 决定是否合入。协议是带版本号的;主机服务器和客户端会公布自己支持的版本,与旧对端通讯时自动降级。
目前有多个彼此独立、但在联邦层完全兼容的服务器实现:
最早的 Python 参考实现,部署最广。支撑着 matrix.org 本身、KDE、Mozilla、Wikimedia 以及许多企业部署。成熟、久经考验、功能完整。
Matrix 核心团队的第二代 Go 实现。模块化架构(组件服务可以合起来跑也可以分开跑)、更好的扩展性、更低的内存底线。已有多处生产部署。
轻量 Rust 实现,设计目标是在树莓派或廉价 VPS 上跑起来。单二进制部署、RocksDB 存储、资源占用极低。Conduwuit 是活跃维护的社区分支,发版节奏更快。
Meldry 底层运行的 Rust 主机服务器。现代异步架构、与我们的多租户编排系统紧密集成、按租户隔离数据库。设计目标是在共享基础设施上 廉价地运行多台小主机服务器——与 Synapse 的"一台大服务器"模型恰好相反。
四者都讲同一套 client-server 和 server-server 协议,所以 Matrix 客户端不关心你用的是哪一个。
Matrix 被当作"统一收件箱"使用的一个很现实的原因是:几乎所有主流聊天网络都有对应的桥接——Telegram、Slack、Discord、WhatsApp、Signal、IRC、XMPP、Google Chat、微软 Teams(社区版)、微信、LINE、iMessage(社区版)、Android SMS 网关、邮件(SMTP 桥接)等等。其中大多数由 mautrix 项目维护——一组共享框架的 Go 语言桥接。
Meldry 出厂的那些见 桥接;想自己写的见 Appservice。
#kde 频道。Matrix 协议是带版本号的。房间会声明自己的 room version(到本文写作时是 1 到 11),控制状态解析算法、事件格式和鉴权规则。现代主机服务器上创建的新房间默认是 11,老房间可以由管理员"升级"以跟上新版本——升级会创建一个新房间并把旧房间作为前驱链接起来。
主机服务器会在 GET /_matrix/client/versions 上公布它支持的协议版本。客户端在连接时跟这个列表握手,对老服务器优雅降级。偶尔你会在新服务器上加入非常老的房间(或反之)时看到"不支持的 room version"错误——解决办法通常是升级房间。
当前协议规范在 spec.matrix.org,按发布日期编号(例如 v1.11、v1.12)。主机服务器按自己已实现的版本接入;协议变化有意保持保守——破坏性修改很少。