文章摘要
作者在长期使用Matrix.org和Element作为主要通信平台后,决定放弃并回归XMPP。尽管Matrix.org有巨大潜力和机构支持,但其性能缓慢、不可靠,用户体验差,开发方向不明,客户端和服务器项目分散。最近一次社区频道故障成为压垮骆驼的最后一根稻草,促使作者做出这一决定。
文章总结
放弃Element与Matrix.org
Matrix.org网络有着巨大的潜力,但经过多年应对故障、性能缓慢、用户体验差以及多次失败后,我决定放弃它。
简而言之: 在五年时间里,我将Matrix.org/Element作为主要通信平台,支持它、推广它,并忍受了它的诸多问题,最终我决定离开(或者说回归)。尽管它有着美好的理想和越来越多的机构采用,但该网络在日常使用中仍然缓慢、不可靠且令人困惑。开发方向不明,客户端和服务器项目分散,用户体验远未达到我的期望。最近发生的一件事彻底打破了我对Matrix.org的信任:我的社区频道在Matrix.org主服务器上崩溃了。我决定回归XMPP。
过去几年,我一直在尝试将Matrix.org及其Element客户端应用作为我的主要通信平台。当Mozilla在2019年宣布转向Matrix时,感觉这个生态系统终于起飞了。第三方客户端和基于Matrix.org的项目如雨后春笋般涌现,我满怀希望地加入了这股潮流。我逐渐减少了在IRC和XMPP上的存在,期待它能成为下一个Slack或Discord杀手。
五年后,我带着失望和未实现的未来离开了Matrix.org生态系统。让我解释一下。
免责声明: 我知道Matrix.org基金会与New Vector公司开发的Element产品之间的区别。但为了从用户角度讲述这个故事,我故意省略了这些细节。
早期阶段
Matrix.org始于十多年前,作为一个联邦消息协议,其主要目标是实现跨提供商的实时通信,类似于SMTP实现跨提供商电子邮件。
你可能会问:“这不就是XMPP一直在做的事情吗?”没错。Matrix.org本质上重新发明了轮子,用JSON替换了XML,并引入了WebRTC等技术,最终将端到端加密(E2EE)作为内置功能,而不是扩展。尽管从实际角度来看,只要元数据仍然未加密,这并没有太大区别。
该项目起源于Amdocs,这是一家由以色列Aurec Group创立的软件公司,总部位于美国密苏里州圣路易斯,拥有超过2.9万名员工。Amdocs本身有着有趣(或者说争议)的历史,曾因涉嫌间谍活动而受到美国联邦机构的调查。关于Amdocs的争议已经持续了几年,Matrix社区成员(“特工”?开玩笑)偶尔会反驳所谓的阴谋论,但这是另一个话题了。
重要的是,Amdocs通过其子公司Vector Creations Limited从2014年到2017年底资助了Matrix的大部分开发。当资金结束后,英国公司New Vector Limited成立,继续开发该协议及其主要客户端Riot(现称为Element)。
那时,Matrix.org似乎获得了真正的关注。社区纷纷支持这个新独立的项目。像KDE、Purism和Status等公司,甚至法国政府都参与其中。尽管热情高涨,但核心组件的实现质量仍然不尽如人意。
官方的Matrix主服务器Synapse使用的技术栈并不适合其长期目标和规模。该协议还实现了一些功能,导致整体复杂性急剧上升。社区项目如Dendrite出现,试图更合理地重写主服务器。一些项目,如Conduit,甚至获得了政府资助,以稳定Matrix.org的基础。
使用Matrix!
在Mozilla的大胆举动之后,New Vector加速发展,全力推进。E2EE成为所有私人对话的默认设置。Riot更名为Element。两年内,New Vector有效地接管了Dendrite作为其官方未来的主服务器实现。
与此同时,Matrix.org继续吸引着欧洲政府的兴趣,尤其是那些希望减少对美国科技巨头依赖的政府。法国中央政府采用了基于Matrix.org的软件Tchap,德国武装力量和医疗机构推出了基于Matrix的工具,卢森堡推出了名为Luxchat4Gov的项目,甚至瑞典的社会保险机构也加入了进来。
SchildiChat和FUTO Circles等项目的兴起,以及Element X的发布,进一步强化了Matrix.org终于起飞的感觉。Element X是一个新的原生客户端,承诺解决旧版基于Electron的Element应用的UX和性能问题。这一切听起来好得令人难以置信。
受到炒作的鼓舞,我加倍投入Matrix。我在Matrix.org上为与本站相关的主题开设了一个官方社区频道,并说服了几位朋友尝试该平台。群聊、私信、社区讨论:我希望Matrix和Element成功。我希望爱上这个平台。
快进
今天,我写下这篇文章,宣布我已经失去了希望和耐心。
在五年时间里,我将Matrix和Element作为主要平台使用,但我不再有精力或愿望继续使用它,更不用说说服其他人,尤其是亲近的人,也这样做。
尽管几年前有诸多炒作,但该平台的基础仍然不成熟。New Vector似乎同时追逐太多目标,缺乏明确的方向。就在几个月前,他们迁移到了Matrix认证服务(MAS),这本来应该是一个飞跃,但甚至缺乏2FA/MFA等基本安全功能。与此同时,该公司似乎开始悄悄淘汰经典的Element应用,转而支持Element X,尽管它仍然缺少线程和空间等关键功能,更不用说小部件、按优先级分组和实时位置共享等不太重要的功能了。
是的,Element X比其Electron前身更快,但只是相对而言。与Signal、Telegram X或WhatsApp等其他流行的通信应用相比,它仍然很慢。启动应用需要网络同步,这影响了响应速度。尤其是在较旧的设备上(如我的GrapheneOS 平板电脑),整个UI感觉迟钝,通常只有构建不良的混合应用才会如此。在更现代的旗舰设备上,体验也没有显著改善。
Matrix.org服务,尤其是其matrix.org主服务器,速度也很慢,尤其是在较薄的宽带连接上。在我的笔记本电脑上,我一直在使用iamb,一个TUI Matrix客户端,即使在那里,启动时也会出现数十秒的延迟,按下Enter键后,消息实际出现在聊天室中也需要几秒钟的延迟。这当然不是iamb的错,因为它是用Rust编写的,顺便说™。如果你习惯了IRC、XMPP,甚至是臃肿的平台如Discord,你可能会发现Matrix相比之下使用起来很痛苦。
这段视频展示了我最近使用Element网页客户端的体验。视频没有放慢,网页UI加载几乎需要40秒,浏览器标签占用了一个CPU核心的100%并消耗了大量内存。加载后,使用网页UI也并不流畅。
多年来,我多次尝试抽象这些性能问题,例如通过流行的IRC客户端Irssi和Matrix-IRC-bouncer软件使用Matrix。然而,这些尝试都未能实现重要功能,尤其是bouncer和Matrix之间缺乏E2EE,使得Matrix所承诺的端到端加密变得毫无意义。
说到E2EE,设备交叉验证是另一个困扰Matrix/Element用户多年的问题,直到最近才有所改善。故事是这样的:每当你从新设备登录时,你必须使用密钥或更便捷的已验证设备进行交叉验证。这个功能不仅对第三方客户端特别复杂,即使是官方的Element和Element X客户端直到最近也难以正确实现。验证要么根本无法启动,要么在过程中中断,要求用户重新启动或最终放弃并使用密钥。
随着底层协议的复杂性及其加密的演变,以及缺乏为第三方开发者提供的第一方库,曾经充满活力的生态系统看起来不再健康。Synapse替代品的开发停滞不前。即使是Conduit,尽管有政府支持,也基本处于休眠状态。Dendrite仍然不适合大规模部署。尽管许多社区成员自托管它,但该项目尚未证明其能够稳健扩展。
在客户端方面,情况也好不到哪里去。FUTO资助的Circles客户端在2025年关闭,原因非常明显。其他客户端如SchildiChat面临着继续现有工作或通过分叉Element X重新开始的困境。鉴于技术栈的分歧,采用较新的matrix-rust-sdk似乎是不可避免的,但成本高昂。
说到SDK,New Vector似乎缺乏一致的技术策略。他们用Python和Node.js/TypeScript构建了基础设施,转向Go用于Synapse替代品,现在维护一个基于Rust的客户端SDK,同时放弃了他们的Go客户端库(现在由社区维护)。这种分散不仅混乱,而且代价高昂。尤其是对于一个似乎长期资金短缺的组织来说。New Vector的策略更像是优柔寡断,而不是为正确的工作选择正确的工具,尤其是在查看他们的GitHub仓库时。
也许是你?
在谴责某物为坏或破碎之前,总是值得问一句:“是我吗?”在寻找其他观点时,我在/r/matrixdotorg等网站上发现了大多数积极的评论,来自那些积极使用Element/Matrix的人,这并不令人惊讶。然而,我越深入挖掘,就越发现博客和论坛帖子,以及评论线程充满了与我观察和描述的许多问题相呼应的经历,例如:
Matrix从未好过。 你见过真正喜欢使用Matrix的人吗?因为我没有。这并不是说Matrix比其他开放替代品更可用,但这是一个低标准。“无法解密消息”是FOSS社区中常见的笑话。Matrix可能成为什么的承诺,加上它已经比其他开放替代品更易用,是我留在那里的原因。我敢打赌,对许多人来说也是如此。然而,我已经接受,这些雄心在当前方向下不会实现。
是的,戴着猫耳朵的卡通人物,这也是我留在Matrix/Element的原因!我可以花几个小时链接到批评该平台功能的帖子。虽然这可能是确认偏见的案例,但感觉似乎没有那么多专门帖子赞美Matrix Element X有多棒,而有很多人详细描述了他们使用该平台的负面经历。再次,令人困惑的命名(“SEO”)使得首先找到这些东西变得困难。想象一下普通人谷歌搜索“Matrix不工作时该怎么办”或“为什么Element无法启动?”——哦,天哪。
Matthew,如果你正在阅读这篇文章:我们都知道,命名事物是计算机科学中最难的问题之一,仅次于缓存失效。我完全理解像Matrix这样的名字可能引发的极客、31337的刺激,但请相信我,使用通用名称是个坏主意。如果你至少将Riot重新命名为更独特的东西,对所有人来说都会容易得多。对于未来的重新命名,我强烈推荐使用Synthwave乐队名称生成器和一些老派的人类创造力。:-)
压垮骆驼的最后一根稻草
七月初,我在手机上打开Element X,注意到我的社区频道异常安静。频道安静并不罕见,但这次感觉不对劲。我尝试发布一些内容。什么都没发送。
困惑中,我切换到笔记本电脑并加载app.element.io,发现频道消失了,或者至少我似乎已经离开了它。它现在出现在“建议”下,好像我可以重新加入。但我从未离开过它。
回到Element X,我仍然显示为成员。我怀疑是浏览器故障,于是尝试从没有扩展和缓存数据的干净配置文件加载。结果相同。
尝试重新加入房间失败。在数十个JavaScript警告和错误中,即使关闭了uBlock Origin——w.. t.. f..——浏览器的开发者控制台显示了以下错误:
``` rageshake.ts:69 [getVersion] Room !PHlbgZTdrhjkCJrfVY:matrix.org does not have an m.room.create event
rageshake.ts:69 Failed to update sticky room Error: !PHlbgZTdrhjkCJrfVY:matrix.org does not belong to a tag and cannot be sticky at M.doUpdateStickyRoom (Algorithm.ts:196:25) at M.updateStickyRoom (Algorithm.ts:163:14) at M.setStickyRoom (Algorithm.ts:115:18) at G.handleRVSUpdate (RoomListStore.ts:147:32) at H. (RoomListStore.ts:115:85) at i.emit (events.js:158:7) at H.setState (RoomViewStore.tsx:207:14) at H.viewRoom (RoomViewStore.tsx:433:18) at H.onDispatch (RoomViewStore.tsx:220:22) at Object.invokeCallback (dispatcher.ts:115:9) ```
我联系了几位频道成员,在Matrix.org的官方Element Web频道中询问,并联系了Element支持(工单2386)。第二天,gonzalo,他运行自己的主服务器,帮助我调查。令人惊讶的是,他仍然是频道的一部分,可以与他人聊天。但matrix.org上的账户,包括我的,根本无法与它互动。
gonzalo和我尝试用不同的matrix.org账户加入频道,但都失败了,出现以下错误:
MatrixError: [403] No create event in auth events (https://matrix-client.matrix.org/_matrix/client/v3/join/%23root%40localhost%3Amatrix.org?server_name=matrix.org&via=matrix.org)
就好像matrix.org主服务器丢失了房间,而没有与网络的其余部分沟通。更奇怪的是,从gonzalo的角度来看,我仍然在房间里,只是离线了。
我尝试通过频道所属的Space提升他的权限,但即使我可以将他添加为管理员,他也从未看到更改反映出来。我甚至无法撤销它:
所以,这就是(过于复杂的)权限模型和Matrix联邦。我真的很想知道到底是什么坏了,导致房间的状态似乎变得FUBAR。如果确实是Matrix.org主服务器在过程中丢失了一些重要事件,那么我想知道其他社区甚至企业客户使用该平台时情况会有多糟糕。
注意: 为了防止像“好吧,这是你的错,因为你应该只是在<插入这里>发消息以获得针对你特定情况的支持”这样的评论:
当然,我本可以多走一步,在GitHub上开一个问题,或者抄送@matrix.org地址,或者采取任何其他步骤。但从现实世界的用户角度来看,这些都是无稽之谈。用户没有责任理解Matrix.org和Element之间的分离,也没有责任弄清楚某个问题属于谁的责任。这种分离是Matrix.org/Element有意做出的选择,而不是用户的选择,这意味着他们有责任建立明确引导用户到正确渠道的支持管道。这根本没有发生。我尝试过联系某个感到有责任帮助的人。
告别Matrix.org
由于无法访问matrix.org服务器日志,也没有得到支持的回应,我几乎已经关闭了Element这一章。直到今天,我仍未收到支持团队的回复,也仍未重新获得对频道的访问权限。虽然频道只有几十个闲人——不像SimpleX房间在短时间内积累了一百多人——但就这样失去它仍然令人难过。至少这篇文章可以作为一个警示故事,供那些考虑在Matrix.org主服务器上托管社区的人参考。
[ - "most ActivityPub / Fediverse related projects favor matrix." (评论1)
- Matrix在审查严格地区有应用价值:用户表示Matrix在高度审查的地区是有效的沟通工具。
- "I've been using Matrix for 3 years now, primarily to communicate with family located where there is high censorship." (评论4)
批评观点: 1. 用户体验差:多个用户反映Matrix客户端(如Element)性能差、功能不完善,且存在加密和解密问题。 - "performance is horrible. Good enough for usage but just unpleasant." (评论4) - "I've found the Element client to be slow and buggy." (评论6)
开发方向混乱:用户批评Matrix项目频繁变更技术栈和开发方向,导致项目不稳定。
- "The number of gigantic changes in direction this project has had in the past couple of years is enough to sink any project." (评论5)
- "New Vector seems to be chasing too many goals simultaneously, with no clear direction." (评论22)
技术问题多:用户提到Matrix存在数据库损坏、同步问题、以及服务器性能问题。
- "The issue of broken rooms was reportedly the database having gotten corrupted indexes." (评论9)
- "matrix.org feels pretty good to me these days, even on my mammoth account." (评论22)
社区管理问题:用户对Matrix团队的态度和响应速度表示不满,认为其傲慢且缺乏透明度。
- "The general response from the team was: 'Pay money or shut up and accept what we give you'." (评论5)
- "I'm assuming that's because iamb hasn't enabled sliding sync, and/or hasn't implemented local echo, or has some other perf bug." (评论22)
总结: Matrix在特定技术社区和审查严格地区有其优势,但用户体验、技术问题和开发方向的不稳定性是其主要的批评点。尽管项目团队在努力改进,但用户对其响应速度和管理方式仍有不满。