Cerulean:适用于Matrix的实验性微博客应用

2020-12-18 23:21:59

除了所有常规的“一切照旧”矩阵材料外,我们还花了一些时间在过去几周内进行了疯狂的科学实验-测试问题:“是否有可能使用以下方法构建一个严肃的Twitter式分散式微博应用程序:矩阵?”

事实证明答案是肯定的-是,因此,我们希望展示Cerulean的早期预览:针对Matrix的高度试验性的新微博应用程序,并具有对任意嵌套线程的一流支持,同时具有Twitter风格(“垂直”)和HN / Reddit风格(“水平”)布局……以及移动网络支持!

(目前)这是一个非常少的javascript应用-仅2500行代码。

它依赖于MSC2836:线程处理-我们高度试验性的Matrix Spec Change来扩展关系(如反应和编辑聚合所使用的)以支持自由格式的任意深度线程处理。

因此,它仅适用于Dendrite,因为我们一直在尝试实施MSC2836。 (不过,我们现在在dendrite.matrix.org上运行一个官方的公共Dendrite服务器实例,这使其易于测试-并且我们的测试Cerulean实例https://cerulean.matrix.org默认指向该实例)。

这在很大程度上证明了这一点。我们今天将其作为预览版发布,以便强大的Matrix实验人员可以使用它,并开放该项目进行贡献! (欢迎PRs-它应该很容易被黑客入侵!)。另外,我们也不保证数据的持久性:Cerulean和dendrite.matrix.org都是高度实验性的;尚不信任他们的重要数据;我们保留在迭代设计时将其全部删除的权利。

因此,对于第一次剪切,我们已经实现了最小的功能,使您可以真正使用它并真正使用它:)

实时更新(毕竟是Matrix!不过我们已为访客禁用了它。)

Twitter风格的“垂直”线程(答复形成一列;在有人分叉对话时缩进)

来宾支持(由于Dendrite的来宾支持尚未完成,因此非来宾用户略有假冒)

显然,使用适当的Twitter风格的系统进行平价交易需要大量的东西:

可配置如下。目前,查看某人时间轴的行为会自动跟随他们。这是因为Dendrite尚未窥视联盟(但已经关闭),因此您必须加入一个房间来查看其内容-在Cerulean中,查看某人的时间轴房间的行为是如何跟踪它们。

喜欢(即简单的旧Matrix反应,尽管如果人们像在Twitter上一样使用它们,我们可能最终需要将它们作为聚合而不是单独地进行联合处理!)

提及(我们需要确定在被提及时如何通知人们-也许应该扩展Matrix的推送通知,以便您订阅实际上不在的公共房间的关键字?)

搜索(同样,只需要在Dendrite中实现-尽管您如何搜索当前家庭服务器中的数据之外的内容?人们习惯于全局搜索)

离线支持? (如果我们使用的是正确的Matrix SDK,希望可以免费获得,但目前Cerulean根本不在本地存储任何状态)。

您使用Cerulean发送的每条消息都会进入两个Matrix会议室,称为“时间轴”。房间和"线程"房间。时间轴"会议室(别名为#@ matthew:dendrite.matrix.org或您的矩阵ID是什么)是一个会议室,其中包含您所有的帖子,没有其他人。 "线程" room是一个普通的Matrix房间,代表消息线程本身。创建一个新的" Post"将创建一个新的" thread"房间。回复帖子将加入现有的" thread"房间并将消息发送到那个房间。 MSC2836用于在“线程”空间中处理消息的线程-事件中,回复通过m.relationship字段引用其父级。

这些语义在现有的Matrix客户端上可以很好地发挥作用,每个客户端将看到一个房间一个房间,并且可以看到线程本身的时序视图(除非该客户端本身支持MSC2836,但除了Cerulean之外,没有其他支持)。但是,由于Cerulean仅导航具有m.reference关系的线程消息(例如,它仅使用新的/ event_relationships API而不是/ messages来获取历史记录),因此Matrix发送到线程或时间轴空间的普通消息仍不会显示在Cerulean。

在此初始版本中,Cerulean从字面上将消息两次发布到两个房间中-但我们还尝试了向Matrix添加“符号链接”的想法,使事件的规范版本位于时间轴房间中,然后是线程室中的事件是与时间轴中的事件的“符号链接”。这意味着线程元数据可以在线程室中进行结构化,并允许用户执行诸如将其时间线设为私有(反之亦然)之类的事情而不会影响线程元数据。我们还可以添加一个API来将其发布到时间轴并一次链接到一个线程中,而不是手动发送两个事件。看起来像这样:

我们还进行了跨房间线程的实验(让Bob的时间轴消息直接响应Alice的时间线消息,反之亦然),但是它带来了一些麻烦的问题-例如,找出跨房间回复消息的方式,您需要以某种方式存储转发引用,转发者需要获得许可才能创建转发引用。另外,如果您无权查看远程会议室,则该线程会中断。因此,我们现在将跨房间线程插入到后来的MSC。

不用说,一旦我们对线程在协议级别的工作方式感到满意,我们就会考虑将其引入Element的UX和主流Matrix聊天客户端中!

Cerulean非常适合测试新想法(例如线程,时间轴空间,偷看),我们也借此机会将其作为实验,首次尝试发布和订阅声誉白名单;为用户提供默认情况下可能不希望看到的内容过滤选项,但是可以通过订阅自己喜欢的信誉供稿,并根据自己的意愿进行过滤,同时清楚地看到要应用的过滤。换句话说,这是在“打击无后门矩阵中的滥用行为”的后半部分中提出的工作的第一个具体实验实施。这是超级早期,我们甚至还没有发布用于所使用事件格式的proto-MSC,但是如果您对该领域特别感兴趣,那么就很容易弄清楚-只需转到#nsfw:dendrite。 matrix.org(警告:实际上还不是NSFW),并查看/ devtools以查看发生了什么。

因此,您已掌握了它-进一步的证据表明,Matrix不仅适用于聊天,而且对即将到来的事物的形状具有令人着迷的希望!请在https://cerulean.matrix.org上查看演示,或尝试从https://github.com/matrix-org/cerulean自己玩,然后转到#cerulean:matrix.org,让我们知道你的想法! :)