in 偶知道

Mastodon 的「去中心化」所导致的……?

看到 @[email protected] 写的论文导读。在 Mastodon 的去中心化网络里,用户之间的关联状况,其实比 twitter 更加高度集中。

Raman, Aravindh, Sagar Joglekar, Emiliano De Cristofaro, Nishanth Sastry, and Gareth Tyson. 2019. “Challenges in the Decentralised Web: The Mastodon Case.” Pp. 217–229 in Proceedings of the Internet Measurement Conference, IMC ’19. New York, NY, USA: Association for Computing Machinery.
研究人员爬取了在2017年4月到2018年7月期间的1750个实例,涵盖了23.9万用户和六千七百万条嘟嘟。基于这些数据,构建了用户相互关注的网络,以及实例之间的连接网络。

通过分析这些网络,论文发现了长毛象的中心化趋势。以下结果是基于搜集到的样本,不是全长毛象数据。

1. 用户方面,大约50%的用户都集中在10%的实例里面,因此少数的管理员在长毛象联邦中拥有过量的影响力。开放注册的实例拥有的用户比邀请注册实例里的更多,但是,邀请注册实例的用户平均嘟嘟数量差不多是开放实例用户嘟嘟数量的两倍(187嘟/人 vs. 95嘟/人)。不管哪种实例,都有中心化趋势,服从幂律(power law),前5%的实例容纳了约95%的嘟嘟;

2. 内容方面,只要关掉最大的10个实例,跨站时间轴上62.69%的嘟嘟都会消失。有些实例带有话题标签,研究发现,科技相关实例占据了55.2%的实例,却只容纳20.8%的用户和24.5%的嘟嘟。相比之下,虽然只有12.3%的实例是跟色情相关,但是却吸引了61%的全网用户;

3. 服务器方面,大部分实例都集中在少数的自治系统(Autonomous System, AS)上,主要在日美法德四国。最大的三个AS就有62%的实例。比如亚马逊AS上集中了62%的用户,尽管上面只有6%的实例。关注网络上,92%的用户是连接在一起的,但在极端情况下,只要五个AS崩坏,就会把相互连接的用户数量减到46%。

作者还分析了网络结构的强度。虽然长毛象分成了很多独立的实例,但是用户之间是高度连接的,跟推特相比,长毛象的连接更加脆弱,只要破坏少量的重要节点(高关注用户)就能够极大破坏原本的连接,相比之下,推特的关注网络就比较稳健。

伦理声明:研究通过了大学伦理审查,只收集了公共嘟嘟,并进行了匿名处理,论文结果不包括任何的嘟文内容分析。

实际使用中,也有类似的感觉,Mastodon 用户互相 follow 所形成的网络,比 twiiter 更加纵向化。大家相对更集中关注一些较活跃的用户,而在用户网络的末梢,横向的互相关注相对较少,尤其是不同实例之间的关注,更是如此。

但我觉得这种状况,是和 Mastodon(以及整个 ActivityPub)目前的设计机制有关。最近自己架设实例时,看了一下 Mastodon 和 Pleroma 的后台数据库,架构上有一些莫名其妙的地方:

( btw,我的新帐号: @[email protected]

在当前实例里访问其它实例的文章时,系统要先把其它实例的文章(以及图片附件)复制到当前实例的服务器(而且是和本地用户的文章放在同一个数据表里……),才能被本地用户读取。本地用户所看到的,并不是其它实例的原始数据,而是被保存在本地实例的镜像。

当一个实例的用户 follow 其它实例的用户时,两个实例的数据库把外来实例用户的信息和 public key,保存在各自的数据库里(也是本地用户和外来用户存在同一个数据表里……)。当外来实例的用户发布新文章时,外来实例的服务器会把这条新文章,主动 push 到订阅了它的那些服务器里存起来。

我能看出这样做的一些好处,譬如减少了实例之间的重复通信、避免最终用户和外来实例间的翻墙屏蔽、增强安全性……etc。然而,一切外来实例的文字和图片,都要先保存到本地服务器,才能被阅读,由此导致的,就是用户在随意浏览外面实例的历史文章时,体验非常不友好

界面里显示的外部实例用户的 following 和 followers 数量,也仅仅是当前实例里和这个用户有关联的用户的数量,而不是这个用户在所有实例的真正总关联数。

不仅是外面实例陌生人的信息,不能直接看到;连已经 follow 的用户,在 follow 之前所写的文章,也不能在系统里直接看到。一定要再打开一个浏览器页面,访问对方在其自己实例上的页面,才能浏览。对历史信息的转发和回复也非常不便。

当用户在 Mastodon 界面中,点开一个陌生人的帐号时,有三种情况:

  1. 陌生人也在同一个实例。此时用户可以直接看到陌生人的所有历史文章;
  2. 陌生人在其它实例,但之前曾经被用户实例里的其它用户 follow 过。此时用户可以直接看到,从这个实例里第一次有人 follow 开始,陌生人发过的所有文章。再之前的文章,则必须打开外置浏览器才能查看;
  3. 陌生人在其它实例,之前用户所在实例并没有人 follow 过他。此时用户完全不能直接看到陌生人的任何历史文章,只能通过打开外置浏览器查看。

不能方便地查看一个人以前发过的文章,也就自然没有兴趣去 follow 他。这就导致了两种「集中化」的关联:

  1. 在同一实例内部的人,由于可以互相看到历史文章,所以更方便互相 follow;
  2. 一些已经被实例里其它人 follow 过的「热门用户」,他们的文章更容易被这个实例里的其它用户看到,从而更容易被 follow。

而与之相对的,就是不同实例之间从没 follow 过的陌生人之间,其横向关联度急剧下降。

如果换一种架构模式,每个实例把自己用户的文章都做出静态缓存;然后用户访问外来实例时,直接访问对方服务器的页面,这样的话,情况会不会好很多?

我的技术水平不够,不能再深入分析对比这些机制的优劣了。但这些,其实和「去中心化」本身,并没有直接的联系。「去中心化」和「中心化」的区别,其实仅仅是后台服务器由谁去建,以及随之带来的审查和信息自由度方面的不同。普通用户在使用中,其实是不应该感受到 Mastodon 和 Twitter 的差别的。我们所面对的,并不是「去中心化」带来的问题,而是在做一套新的「去中心化」架构时,所没能解决好的技术问题。那些「中心化」的服务,也有很多因为设计的不如 twitter 理想,而最终倒闭了。目前而言,Mastodon 的架构还远称不上完美,有很多不足,或者让用户觉得不习惯的地方。但这些问题,其实只属于某个产品设计上的问题,而不应该归咎于「去中心化」

Write a Comment

Comment

8  +  1  =