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

看到 @[email protected]moresci.sale 写的论文导读。在 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 的架构还远称不上完美,有很多不足,或者让用户觉得不习惯的地方。但这些问题,其实只属于某个产品设计上的问题,而不应该归咎于「去中心化」

个人 VPS 上的服务安装(未完稿)

这篇文章要讨论的是,如何在一台轻量级的 VPS 服务器上,基于自己的域名,同时安装如今各种流行,去中心化的网络服务:

  • 个人博客:Wordpress
  • ActivityPub 社交网络:Pleroma 或 Mastodon
  • Matrix 聊天服务器:Synapse 或 Dendrite
  • 个人网盘和在线办公套件:Nextcloud

然而,原本我一直在用 Linode 每月 5 美元,1C1G(1个CPU,1G内存)的服务器,打算安装的服务,也是基于这个级别的配置。然而弄到一半,突然被乔乔推荐了 Contabo 每月 5 欧元(要一次缴一年,不然有额外费用),4C8G 的服务器。虽然实际速度和网速,并不比 Linode 或 Vultr 好多少,但 8G 内存,选择各种服务的余地可就大多了。所以我整理出来的 1C1G 方案,自己并没有在用……原因我后面会说。

之前也犹豫,既然同样价钱都能 4C8G 了,那为啥还要写 1C1G 的方案?很快大家的配置也都会变高级了吧?但想想也未必,还是整理一下吧。


这篇文章讨论如何在轻量级服务器里塞进各种服务。——前提是这台服务器,假定只会有你一个人在用,最多加上你的闺蜜和男朋友。我并不知道几十个用户的 Mastodon 会有怎样的开销,至少在 1C1G 上这样做非常不靠谱。我所面向的,只是两三个好友自用的私人 VPS 而已。

这篇文章不是写给小白用户的。整个系统还是很复杂的。指望有一个教程,或者一个 docker-compose,能够让完全不懂 Linux 的用户,通过逐行复制命令,就能搞定所有的安装,目前还不现实。你至少要有在完全理解的基础上,用 LNMP 搭出 Wordpress 的能力。所以我也没必要把用过的每一条命令,都放在这篇文章里。——对于每一项服务,我会尽量给出相关靠谱攻略的链接,并且讨论一下里面的坑,和我个人所作的选择。

所以,其实这篇文章本质上就一句话:

是的,这些服务都可以装到一台机器上,不冲突。我弄过了,没问题,你们放心慢慢弄吧。


安装环境:一台 1C1G(或更好的) VPS 服务器,一个你自己的域名。

Continue reading

关于袋鼠肉你们要知道的

袋鼠肉可以吃。

澳大利亚似乎是唯一一个,放到国徽上的动物(袋鼠和鸸鶓)都可以吃的国家。

袋鼠肉历来就是澳洲土著的主食。1980 年,在南澳,最早被允许人类合法食用;在新州、维州、昆州,最初只允许做宠物食品,到 1993 年才允许人类食用。早在 1950s 就出口到欧美。

澳洲最大的超市就有卖袋鼠肉,我见到的最便宜的肉馅 $8/kg,还有肉排、香肠……

个人感觉肉质的粗糙程度,介于牛肉和马肉之间,但味道有点冲,我不会常吃(也不比其它肉便宜)。一些澳洲餐馆也做袋鼠肉的菜,还有袋鼠肉汉堡之类的,肉里加过香料后,也吃不出什么特别了。

袋鼠肉很健康的,脂肪含量小于2%,多种有益的氨基酸。

我确实见过有澳洲白人日常吃袋鼠肉,用袋鼠肉馅炒熟拌pasta酱料做意粉;

我第一次从澳洲回大陆带的手信,就是几包各种袋鼠肉馅和肉排,当晚和小伙伴们用中餐模式炒熟吃了。

并没有关于袋鼠的畜牧业,所有袋鼠肉的来源都是野生袋鼠。

但这不意味着日常杀袋鼠合法,杀袋鼠取肉要在指定的区域里,需要专门的许可证和肉质检测;

有足够的袋鼠可以杀。一般按政府计算,澳洲每年袋鼠总数的 15 – 20% 是可以杀掉的,实际上市场对袋鼠肉的需求远小于这个量。一定区域内,袋鼠繁殖超过一定数量后,也要杀掉保持物种平衡,所以很多只是杀了抛尸。

除了雪梨墨尔本城区实在太大外,其它城市袋鼠在CBD蹦躂,是很常见的事。——啊,这一条和袋鼠肉无关,跑题了,好吧曾经有袋鼠头上插着一支箭逃到 Canberra 市中心,引起轩然大波。

保险公司的车辆理赔数据统计,Canberra 是因为车子撞袋鼠而理赔比例最高的地区;在澳洲车子撞动物的比例:Kangaroo 84%、Wallaby 5%、Wombat 2%、Deer 2%、bird 1%。

最后,最重要的,逗猫秘笈:猫超喜欢吃袋鼠肉!我发现这一点后安利过无数只猫,爱吃率100%,有朋友拿着我送的肉馅回家孝敬猫,猫吃疯了,不停地吃,吃不下跑到一边吐出来,回来继续吃……

hello fediverse

当我说 mastodon 难部署的时候,并不是作为一个建站小白说的。用自己的域名和大约每月5刀的服务器,我可以很轻松地搭建一个 mastodon 实例,用 docker 部署则更简单。——如果我对这个服务器没其它需求的话。

问题在于,对于大多数有建站情操和能力的人来说,建站优先级最高的未必是 mastodon,而是 wordpress 啊。把这两套系统同时塞进一个服务器,理论上是能做到的,但其麻烦程度让我实在没欲望去折腾。而为这两个系统买两个服务器,又总觉得很耻辱,和小白们每个服务交一份钱有啥区别……

另一方面,尽管 mastodon 存在单用户模式,但真的建了实例只有自己一个人用的话,整套 mastodon 程序功能其实是很冗余的。所以对于个人用户而言,要做的可能并不是自建 mastodon 实例,而是寻找其它可以通过 ActivityPub 协议,和 Fediverse 用户进行沟通的程序。——目前似乎还没有太理想的。 write.as 正在做,我去试了试, 用户可以在 Fediverse 上 follow @[email protected] ;wordpress 也有类似的插件(等我先给自己域名申请 SSL ……)。但似乎都只能让 Fediverse 用户「订阅」这个站点,而不能反向和他们回复沟通。

所以还要继续关注 Fediverse 的新进展。据说 nextcloud 已经可以支持 ActivityPub 和 mastodon 沟通了。——网上的免费服务器没这个功能,需要自建 nextcloud 然后挂载相关服务,哪位愿意折腾试试靠谱不?但似乎 nextcloud 还不支持发布 blog??(怒吼:为什么,明明这个更容易啊)。不然 nextcloud 就已经很一站化了。

保温杯

有些东西不亲手摸一下,是无法触发反向思维的。

前些天路过商店,看某个功能和样子都不错的保温杯打折,就顺手买了一个。这似乎是我人生中第一次买保温杯,当时脑子里冒出一堆之前网络上「保温杯 = 中年人」的梗。当然我不会因为这样的梗而刻意去买或不买;但我承认买的时候,是有几分微妙的感觉的。不过我日常也不喝热水;只是偶尔几次泡茶,总是想不起来喝,把茶放凉,当然凉茶也可以喝,但终归和热的不是一个口味。所以买个保温杯,试试能不能改良一下喝水模式。


然而拿着保温杯走到厨房的一瞬间,我就知道它应该怎么用了!把冰箱里的冰镇可乐灌一壶到保温杯里,放在床头,然后床头就永远会有冰可乐喝!再也不用在喝常温饮料和反复下床去开冰箱之间犹豫了!这绝对是改善生活的神器啊!!我以前一直误解中年人了!!

兴奋地跑到 twitter 上炫耀,然后发现很多人有相同的体验:带着保温杯里的冰威士忌去混酒吧、去海边、去看球去听演唱会。这些人家里本来就有保温杯吧?用保温杯不仅给热水保温,也能给冰水保温。这在我的知识范围内,是非常容易就能想到的事。——事实上我也确实第一时间就自发想到了。然而在我实际买到/摸到保温杯之前,却一直在床头忍受着饮料逐渐变成常温,从来没想到过。


也有一些 diss 的回复。譬如鄙视我没有床头小冰箱的……我有过啊,但你们真的不觉得 床头冰箱 = 电暖器 + 噪音 吗?

有人说不锈钢保温杯不能装碳酸饮料、茶、果汁……因为会腐蚀。这也太瞧不起不锈钢了。食用不锈钢合金禁止使用铅、镉、砷等对人体有害的元素,而其它微量元素的抗腐蚀标准,也是在用醋酸高温泡煮的那种恶劣环境下,检测各种元素的腐蚀析出程度。——比碳酸饮料的腐蚀环境要严苛很多。

也有人建议说保温杯不能放碳酸饮料,碳酸气体释放会导致内部压力增加从而瓶体爆炸,或者瓶盖崩伤眼睛。这确实是个问题,似乎玻璃内胆的保温杯更危险一些,而膳魔师之类带吸管的小清新瓶盖,感觉也确实一点点内部压力就会崩开。但我买的是钢瓶螺口,目测结实程度,至少比塑料可乐瓶要强一些吧。现实中保温杯爆炸造成伤亡的事故,都并不是因为碳酸饮料,而是把黄豆真菌之类会发酵生成气体的物质,忘在杯里很久,保温杯变成了发酵罐,才压力破表的。

Avanti Fluid Insulated Bottle 750ml – $16

查不到保温杯的抗压标准(厂商应该是不允许在受压场合使用的)。常温下碳酸饮料瓶的内部压力约为 250 – 380 千帕,太阳晒的车里会达到 700 千帕。可乐瓶的抗压大概是 1000 千帕。


突然说下个月要去雪地宿营。我终于可以用保温杯灌热水了。

社交平台的六围

对各种用户提供内容的平台进行评价和比较时,我觉得大家争吵的,往往是不同维度的东西,而每个人更在意的方向并不相同。我列了一下,大概有这些因素。首先要做的,是自己打个权重,看看你对每个因素是不是真的在意(譬如公众传播度在有些人心中的比重,是远大于帖子是否会被删的——这未必是坏事)。然后就可以像游戏里角色的六围那样(其实列出来的不止六项),给每个平台逐项打分。

  • 思维自由度:你在写东西的时候,多大程度上,会受到其它因素的约束和干扰?这不仅仅指在真理部面前进行自我审查,也包括你所在的社区的发言氛围,以及你是否介意朋友们看到你发言时的反应。
  • 信息存活性:你的发言会不会被删,以及在更大范围上,你所在的平台会不会突然就没了……(或许这两条应该分开算?
  • 信息持续性:一方面是指热度:文章会不会过两天就沉下去,再没人关注(其实所有平台都会这样)。另一方面,哪怕没人关注,你是否希望文章一直存在,被需要的人偶尔搜出来看看?还有一点就是,当你换了平台,或者换了图床的时候,能不能用某种技术手段,让你的外链一直有效?
  • 便于讨论:你的文章是否便于让同好们进行讨论?以及,你所在的平台是否能聚集你的同好?
  • 公众影响:为了赚钱或者社会责任感,你是否宁愿自我阉割,也希望文章尽可能地被更多人看到?
  • 跨平台开放性:文章是否能让平台之外的用户看到?
  • 隐私安全:如果作者没有主动泄露个人信息,平台的架构以及管理人员,能否防止你被喝茶或者被人肉?
  • 技术便利性:建站、管理、日常访问、翻墙……是否方便?(其实我应该把管理员和普通用户分开的)

此外当然还有更多的参考因素(界面美观、用户体验、是否免费……),这里只是提供这样一个比较的思路。

我这里随手列了几个例子。一些网站我不常用没什么发言权:Facebook、Lofter、Matters、AO3、豆瓣……大家可以自行吐槽。

以下是吐槽部分:

  • 虽然 Mastodon 最初是作为避免 twitter 越发严重的政治审查而存在的,但目前各个实例中的用户趋向(或者说他们希望能趋向)同质化,导致目前给我的感觉,在 Mastodon 里说话的自由还不如 twitter。
  • 在 Google Reader 的时代,以及 Disqus 等平台试图统一 blog 评论体系的时代,blog 的讨论性是接近四颗星的,但目前只能用凄惨来形容。虽然每篇文章还是有评论区,但大家宁愿在 twitter 的链接下面回复,而没有人去文章下面留言了。
  • Facebook 这种完全建立在实名上的讨论群体,以及随之关联的发言规范,和我完全就是不同的世界,索性不予评价。

Hello Matters.

在 matters.news 上面开了个账号,可能会同步一些文章过去。这里是开篇介绍以及一些关于 blog 的吐槽。还不知能不能在那边写下去。


一直在考虑,要不要在 matters 开个账号,把自己 blog 上的一些文章同步过来。在 matters 关注了一段时间,这里确实集中了一部分很优秀的社科类写作者,希望能够继续关注下去。而且这年头坚持写中文 blog 的人确实不多了,也很希望能够有一个这方面的社群,能够进一步交流。

但还是有一些顾虑。


首先,作为原教旨 blog 拥护者,我一直认为 blog 作为一个开放系统,需要满足两个条件:

  1. 系统自带原生 RSS 订阅;
  2. 作者可以选择向所有人(无论是否 matters 用户)开发评论功能。

这两个条件,matters 一条也不符合。虽然有第三方工具实现 RSS,但毕竟不是 matters 自带的功能。而评论功能只有注册了一段时间的站内用户才可以用。所以我其实是不喜欢 Matters Medium 这类的网站形式的。当然关于这些指摘,有着各种解释:譬如这样更有利于付费订阅、避免垃圾评论和网络水军、以及未必只有开发系统才叫做 blog……但我还是认为这些都不是必须通过这种半封闭的架构,才能解决的。这些其实都是对互联网开放性的越来越深的伤害。——总之你们可以把这当作 blog 老用户的吐槽。

ps,在 matters 通过第三方生成 RSS 地址的攻略:
https://rsshub.app/matters/author/fivestone
把链接最后面的 id 换成你想要关注的作者 id。


其次,经过互联网十几年的风风雨雨,我现在对任何 blog 平台,乃至任何网站,几年后会不会倒闭,完全没有信心。这不是在诅咒 matters 啦,只是想到自己投入心血维持的社交网络,几年后因爲各种莫名的理由消失,就没心思把它继续下去。区块链保存也好、众筹维护也罢,其实都只是噱头。即使不涉及政治审查,仅仅是由于资本运作而倒闭的网站,无论墙内墙外,数不胜数:微软space、Google Reader……如今靠谱的老牌 blog 平台,似乎只剩下 wordpress 和 blogspot,免费版的页面上被塞满了难看广告。似乎只有自建域名和服务器,才是长久保存的王道。但那些自建 wordpress 以及用 Github 静态空间的 blog,需要的技术门槛也确实很高,能做到这一点的人,写出来的 blog 内容,也基本是纯IT(笑)。在 blog 式微的时代,维持一个低门槛的长期写作环境,确实是很难的事情。


在这里写东西,似乎要比自己写 blog,要更吃力一些。或许是因爲这套 LikeCoin 的打赏体系,吸引了很多希望从写文章而获得收入的人,所以写出来的文章更像是精心雕琢后可以直接发到正刊上的稿件。这当然没什么不好,但对于我这种习惯于写碎片,一个题目可能分成三四篇,想到什么就随便写一段发出去的人,还是会有些压力。但随著 matters 的用户群的增加,我也看到有人来这里写碎片化的日记了。

关于 LikeCoin 这套体系我还不是太明白。我在自己的 wordpress 上也安装了 LikeCoin 的点赞插件,但似乎只是把 likes 的账目记在 matters 名下,在用户交流的方面,和 matters 系统不是互通的。总之大家赶紧给我凑 15 个赞,让我好去评论别人。^^


最后,是关于简体字的问题。我更倾向于把简体字正体字的分隔归为历史因素,而不赞同通过政治或者「正体字更有文化」之类的理由,把两者明显割裂开来。Matters 无疑是正体字的大本营。虽然我两种字体读写都没有障碍,但我自己的 blog 确实是简体。一方面我认为其实没有必要在这里发文时必须用正体字,从而去迎合什么;但另一方面,我也确实担心简体字在这里会受到一定程度的歧视,并对这种状况觉得有些悲哀。


就这样吧,每次开篇都要很正式的样子写一堆(笑),也不知道会在这里坚持多久。

ambient pietism

Anastasia Piliavsky 谈到当代人类学向保守主义的回退,导致的两个后果。

  • 一种是坚持功能主义,将社会分析简化为一套现成的信仰:如相信物质、相信个人内心、相信追求自主……
  • 另一种是对外界思想的虔信(ambient pietism),用自己的道德或政治立场来取代分析。如对女权或殖民的立场判断,——当这些立场被规范成各种理论时,就变成了一种对已有信念的重申。这些理论内置的立场判断阻碍了真正的社会解释。理论上讲,使人们的世界观不再存在差异的,是所谓的「常识」——那些社会机构强加给世界的,关于政治、自我、人性……的常识。

——更高层面的屁股决定脑袋。

The real damage to anthropology, however, is the paradoxical retreat into conservatism, from which the discipline’s founders painstakingly broke: the deployment of one’s own beliefs and values as heuristics for the study of all human life. The consequences of this retreat are many and I shall mention here only two. The first is the persistence of functionalism, or the reduction of social analysis to a set of ready-made beliefs, whether beliefs in the primacy of the physical world (materiality) or in the individual’s inner, psychological life (affect) or in the universal pursuit of autonomy (resistance). The second is anthropology’s ambient pietism, or the displacement of analysis with assertions of one’s own moral or political stance. It is all very well to believe in gender equality or the evils of colonialism, but when our own normative position is deployed as fundamental social theory—such as feminist or postcolonial theory—it does little more than reassert the already-held beliefs. The evaluative judgment built into it blocks social explanation and generates results that are complacent, conventional, and closed to the discovery of new things. The confusion of advocacy for analysis has made contemporary anthropology allergic to any kind of genuine moral or political difference. If earlier generations saw the comprehension of fundamental moral difference—head hunting, cannibalism, tribal warfare, and the like—as their duty, the new clings increasingly to the familiar close to home. Theoretically, what has displaced different people’s cosmologies are “common sense notions—of polity, self, and essential, shared humanity—that metropolitan actors and institutions foist upon the world” (Scheele and Shryock in press). The result is the growing poverty of anthropological theory, and the retreat of the discipline from the frontline of social theory.

Piliavsky, Anastasia. 2017. “Disciplinary Memory against Ambient Pietism.” HAU-JOURNAL OF ETHNOGRAPHIC THEORY 7(3):13–17.