Matrix & IRC | 规模与稳定性
自从我发布了关于 Ansible & Matrix 的想法后,在过去的几天里,我收到了一些非常好的问题和评论 - 感谢大家!
出现了两个主题,它们非常适合一篇数据丰富的博文,它们是
- 我们如何知道有用户想要使用 Matrix?
- 连接到 IRC 的桥接器是否经常断开?
这些都是合理的问题 - 我们希望确保自己做出了正确的选择,既是为了社区的未来,也是为了那些希望留在 IRC 上的人。但是我们如何回答这些问题呢?收集这些方面的数据并非易事,但在本文中,我将尽我所能 - 如果你知道更多/更好的数据来源,我非常乐意 了解一下!
用户群规模
好的,为此我们有一些不错的数据来源。让我们先解决 IRC 的问题。我所知最好的数据来源是 https://netsplit.de/networks/top10.php,它让我们了解了用户随时间推移的变化情况。以下是一个示例
遗憾的是,这些图表是预制的图像/帖子,因此我们没有原始数据,但粗略估计,在 2021 年 7 月,这十个加起来大约有 18 万用户(Libera 本身约有 50-55k)。但 Netsplit 拥有历史数据
那是 2016 年,这里加起来约为 25 万,其中 Freenode 为 9 万。让我们再看一个
再往前追溯 5 年到 2011 年,数字更高 - 2021 年只是 2011 年的一小部分。我花了一些时间浏览其他年份,并且很容易说服自己 IRC 正在下降。这是一个数据点,但其他数据点呢?
好吧,Ansible 社区已经否决了使用专有选项(在我看来,这是正确的)。但为了完整起见,让我们快速浏览一下。在这个领域有很多“公司自我吹嘘”,但我确实找到了这个图表
我很难找到更新的数据,但 2019 年的 1000 万肯定现在更高了。Discord 声称拥有 1.5 亿用户(https://discord.com/company)。这很好,但两者都需要为每个社区单独的服务器和登录,无论如何社区都说“不”。让我们回到 FOSS……
我很难找到 Rocket.Chat、Mattermost 等任何数据,而 Gitter 已经被合并到 Matrix 中了。事实上,许多 FOSS 解决方案都是自托管的,因此无论如何都很难获取准确的数据。
Matrix 呢?这也被证明是一个令人惊讶的棘手问题,但原因却大不相同。由于其分布式特性,您没有一个可以查询的单一数据源。 Matt Broberg 的这张幻灯片 将 Element 的用户数定为 1800 万(Slack 为 4400 万,哇),虽然我不知道 Matt 从哪里获得这些数字,但对我来说似乎有点高。
也许我们可以尝试获取自己的值。据我所知,Matrix 中有两个“旅行者机器人”,它们的任务是加入它们看到的任何公共房间,以收集匿名统计数据。一个是“#@voyager:t2bot.io”,它已经运行了大约 3 年,已经看到了超过 300 万个唯一的 Matrix ID;另一个是“@server_stats:nordgedanken.dev”,它更新得多,但在其生命周期中已经看到了大约 50 万个 ID。
不过,Matrix 帐户(和使用情况)变得更加奇怪。这些旅行者机器人看到的许多唯一 ID 事实上很可能是来自其他网络的桥接用户,这非常有可能。现在,您可能会合理地认为这意味着Matrix 的原生用户更少,您是对的。但是,我认为这并不重要,因为我们真正关心的是“可寻址 ID”——也就是说,我可以和谁交谈。Matrix 跨网络构建社区的能力具有价值,我们应该在统计数据中允许它。
即使您不同意我的观点,让我们做一个悲观的比较。以 Libera 的 50k 和 Matrix 的 500k(Nordgedanken 机器人的值)作为起点,然后由于桥接而减去 Libera(因此为 450k),那么 Matrix 仍然大 9 倍。如果您同意我的观点,并且我们选择两个机器人之间的值(为了简单起见,假设为 100 万),那么 Matrix 比 Libera 大 20 倍,比整个 IRC 大 3 倍。
活跃用户
作为对此的脚注,我想再谈一件事。到目前为止,我们查看了房间/频道中的任何用户 ID,这显然包括空闲用户。活跃用户呢?
我获取了过去一个月(6 月 19 日到 7 月 19 日)两个 IRC 频道 #ansible 和 #ansible-community 的日志(幸运的是,我可以使用 Matrix 来做到这一点:P)。我还将对完全非官方的 Matrix 房间“ansible:matrix.org”(顺便说一下,该房间创建于 2016 年)执行此操作。以下是我们看到的内容
房间 | 总用户数(今天) | 消息数 | 活跃用户 | 活跃用户(> 10 行) | 每个活跃用户的平均消息数 |
---|---|---|---|---|---|
#ansible | 686 | 5130 | 273 | 107 | 18.8 |
#community | 137 | 3036 | 52 | 33 | 58.4 |
ansible:matrix.org | 313 | 216 | 39 | 1 | 5.5 |
我从中得出了一些结论。首先,正如我们从许多其他地方了解到的那样,我们的用户分布非常集中 - 只有少数人负责大部分聊天。
其次,Matrix 房间很有趣 - 它没有那么活跃,当然,但我们根本没有在任何地方宣传它。它是完全自发的,但它拥有相当数量的成员,并且在一个月内有相当数量的消息(这仍然是每天大约 7 条消息)。
最后,但并非最不重要的是,考虑更大的范围。我们在 Reddit 上有 42k 名成员,在 Twitter 上有 59k 名关注者,“ansible-project”邮件列表有 13k 名订阅者。我们只有几百人在实际聊天。这……令人担忧。这几乎可以忽略不计(273/59k == 0.005),您可以说我们有 0 个人在讨论 Ansible。如果我们真的想让社区自给自足,我们必须改变这一点。
稳定性
进入后半部分!让我们谈谈稳定性……
Matrix 的主要优势之一是 桥接器——能够与其他平台上的用户聊天。这就是我建议将 Matrix 用于 Ansible 社区的主要原因,因为它允许我们不硬性放弃 IRC。但是,这依赖于 Libera 桥接器的稳定性。我经常听到有人谈论这一点——桥接器不稳定,这使得 IRC 和 Matrix 的体验都出现了问题。
这并非不公平 - 桥接器问题的结果是社区分裂了。消息无法在网络之间传输,并且很可能会永远丢失接收方。这很不幸,但我现在要争辩说,这种情况在 IRC 上也会发生 - 通过网络分裂。
从用户体验的角度来看,网络分裂与桥接器问题并没有什么不同。无论哪种方式,一部分社区(通常约为 5-15%)都与其余部分失去联系,并且在该时间段内不会收到发送的消息。那么,这种情况有多常见呢?
我请我的同事查看他们长时间的 IRC 日志以搜索网络分裂,以下是我们得到的结果
(我在此处添加了一个简单的受影响用户总数的猜测,将受影响用户数选为房间成员数(今天)的 7%,并将其乘以。这是完全捏造的,但说明了这么多分裂的可能影响。)
所以,#ansible 中大约每周有 2 次网络分裂。有趣的是,网络分裂的频率随着时间的推移而增加 - 显然存在一个上限,人们不应该预测这种趋势太远,但这仍然是一个令人担忧的趋势。
至于 IRC<->Matrix 桥接器,这要困难得多。Element 告诉我他们不会记录桥接器问题,并且在出现问题时桥接器基本上是静默的。但是,可以查找所有 Matrix 用户从 IRC 端断开连接的时间 - 显然,这不会捕获桥接器缓慢而不是断开连接的问题,但这是一些信息。并且,反过来也是如此,桥接器正在变得更稳定。
结论
我们在这里研究了三件事 - 总体规模、活跃用户和稳定性。虽然许多数据都很模糊,但每个部分都强化了故事 - 总体而言,我认为可以公平地说,Matrix 已经比 IRC 大,而 IRC 正在下降,虽然桥接器问题很严重,但它们随着时间的推移正在减少。
我们还必须记住,桥接器会尝试恢复(Matrix 本身最终是一致的),因此消息通常会延迟到达,而不是像网络分裂那样根本不到达(尽管某些桥接器问题确实会导致断开连接,但这并非 100% 保证)。
我之前关于 Matrix 的文章阐述了我对 Ansible 的想法的“是什么”和“如何”——这篇文章增加了“为什么”的一些论据。我仍然认为这是我们社区未来正确的选择——希望我也能说服你。