in 偶知道

关于 fediverse 的删除机制

在当前的很多 fediverse 服务(mastodon、pleroma…)里,当 A 站的用户 a 被另一个实例(譬如:B 站)的用户关注时,他所发的嘟文,会在 B 站的服务器上储存一个副本,B 站的用户,通过访问这个副本,来阅读这条嘟文。当原本的嘟文被删除时,A 站会通知 B 站,删除相应的副本。但这个时候,这条嘟文未必像人们期待的那样,从 fediverse 上彻底消失。

假设存在如下情况:

  • A 站的 a 用户
  • B 站的 b 用户,b 在关注 a
  • C 站的 c 用户,c 在关注 b,但 C 站没有人关注 a
  • a 发了一条公开嘟文,此时 b 可以看到这条嘟文,而 c 是看不到的。
  • b 转发了 a 的这条嘟文,此时 c 可以看到这条嘟文了。C 站的所有人,在查询 a 的时候,也都可以看到 a 的这条嘟文。
  • 如果这个时候,a 再把这条嘟文删除,那么 A 站会通知 B 站这条嘟文已删,而 B 站也会把这条嘟文在 B 站的镜像删除。于是 b 就看不到这条嘟文了。

——然而,似乎并没有一个机制,去通知 C 站,这条嘟文已删?也就是说,这个时候,c 和 C 站的所有人,都仍然可以看到 a 已经删掉的这条嘟文?

如果这个时候 C 站有人再转发这条嘟文,而 B 站甚至 A 站有人关注这个人,那么,B 站和 A 站的人,就又能看到这条嘟文了?甚至连 a 自己,也能看到的?(这个有待验证)


听起来似乎很不靠谱,但也不是不能接受。就像 twitter 还没有官方 retweet 的时代,所有的转发,都是由用户手动复制一个副本。而最初的推文被删除,完全不会影响这些副本继续存在。所以这里只是提醒大家,有这么一个机制。具体的隐私控制,还要由创作者自行把握。你曾发到网上的东西,可能永远不会真正消失。

Write a Comment

Comment




Enter Captcha Here :

  1. 前面应该是对的,但是后面“有待验证”那里是不对的。
    ActivityPub 的转发简化一下的话其实就是下面的 JSON:
    “`
    { “actor”: “我”, “type”: “转发”, “object”: “被转发的嘟文链接”, “to”: “你” }
    “`
    收到转发的服务器必须再把被转发的嘟文链接抓取下来,才能知道转发的内容。只要服务器上的副本删除了,被转发的链接删除了,后续转发是不可能在 A、B 站里重现嘟文的。(当然,没有收到删除通知,部分服务器上副本没有删除才是问题所在。)

    其实 RSS 也是这个样子,存到对方客户端的副本永远无法删除,所以也是同一个道理吧。(可以通过手动清空文章内容但不删除条目,让所有人的阅读器再次抓取时用空白内容覆盖原有内容来实现曲线删除。)

    • 嗯,应该是你说的这样。我没去扒 ActivityPub 的转发机制,(有待验证)那里是纯猜的。

      按这个逻辑,当 A 站通知 B 站删除嘟文后,如果 c 再转发这条嘟文的副本,那么新的 D 站里 follow c 的人,也是看不到这条嘟文了?

Webmentions

  • WordPress 的 ActivityPub 插件 – fivestone 2021-09-16

    […] 当 blog 的文章被删除时,这个插件也会通知所有的 followers,从他们的实例上删除对应的嘟文。但是就像我说过的,这个机制并不能把那些,被转发到其它实例的嘟文,也一起删除。所以,当你在 blog 按下发布按钮的一刹那,带着你所写的全部内容(或者摘要,可设置)的嘟文,就可能会永远飘在 fediverse 世界里,无从反悔。所以,写完这篇文章后,我还不确定自己是否会继续用这个插件…… […]