ActivityPub 插件

我也是。我无法更改帖子的所有者。即使类别不是联合的。

那些是警告,不是错误。它们不一定意味着有什么问题,它们是为了让你更了解正在发生的事情。联邦宇宙(Fediverse)的内容未被处理可能有很多原因,其中许多与发送内容的人有关。如果你不想在日志中看到它们,请关闭 ActivityPub 插件的详细日志记录(activity pub verbose logging)。

该帖子是否属于 ActivityPub 分类或带有 ActivityPub 标签?

该帖子是在 ActivityPub 分类中创建的,还是带有 ActivityPub 标签创建的?

请注意,更改帖子所有者功能已为 ActivityPub 帖子故意禁用。至于为什么是这样,请参阅上文:

它是一个具有 Activitypub 的类别,但我们讨论的是该主题的所有者,因为它不是同一个帐户,所以它不参与 Activitypub。

我认为应该有一个选项允许更改所有者,否则 Discourse 拥有更改所有者的模态就没有意义了。

另外,在不向 Activitypub 发送任何更新的情况下更改它对我们来说是完美的。

1 个赞

我明白大家希望能够更改帖子的所有权。这方面需要解决的问题是我上面概述的,特别是:

出现在您的 Discourse 上的内容来自您不是管理员的服务,并且除了 ActivityPub 之外,您根本无法控制该服务。如果不在充分考虑这一事实的情况下,仅仅扩展更改该内容作者的能力,那将是不明智的。

至于您 Discourse 用户从已通过 ActivityPub 发布的主题中撰写的内容,请考虑在更改帖子作者后,如果对内容进行任何更新,应该发生什么。我们是:

  1. 停止发布 ActivityPub 更新;还是
  2. 以“旧” Actor(用户)的身份发布它们;还是
  3. 以“新” Actor(用户)的身份发布它们。

为现有 Object 发布具有新 Actor 的更新活动(即 3)将与 Discourse 一起工作(正如我试图为此问题提供支持一样),但它将与其他 ActivityPub 服务不兼容。事实上,我已因此在 ActivityPub 生态系统中推动了这一点。请看这里:

并且我有一个待处理的 Mastodon PR,以使 3 成为可能

举一个这里众多问题中的一个例子,考虑这样一种情况:您正在使用您的帐户(以及您的姓名和图片)发布 ActivityPub 内容。您的一个“竞争对手”关注您的内容。在他们的服务器上,他们将您所有带有您内容帖子的所有权更改为由他们(带有他们的姓名和图片)发布,而不是由您发布。这可能会,在某种程度上可以理解地,让您感到不舒服。是的,当然,这无论如何都可以通过自定义代码来实现,但问题在于您是否希望将其构建到插件的默认功能中。

经过一夜的思考,一种可能在一定程度上缓解这种情况的方法是,我们在 ActivityPub 状态显示中添加发布 Actor:

我愿意接受其他类似的建议。

没错,我认为我将完全移除 ActivityPub 主题上的模态窗口,直到我们解决这里根本性的问题。

2 个赞

我明白这个问题了,在我们的案例中,我们使用 Activitypub,为每个类别创建一个账户并发布该更新。
因此,对于我们 Activitypub 的各种情况来说,谁是帖子的所有者并不那么重要,这就是为什么我说我们应该能够做到这一点。

ActivityPub 不仅仅关乎你如何使用你的论坛,更关乎你的论坛如何与其他的 fediverse 进行交互。此外,要在插件中构建某些内容,我们还必须考虑其他用例。

我不想给人留下允许更改帖子所有者不是一个正在积极考虑的问题,或者未来更新中不会允许的印象。我对人们提出的解决这些根本问题的任何想法都感兴趣,其中一些我已经概述在上面了。

针对这个例子,可以合理地禁止更改已联合的内容的所有权,同时允许管理员更改在 Discourse 实例内创作的内容的所有权,无论其是否已联合。

管理员可以冒充用户。因此,管理员能够在现有功能的支持下,在平台内伪装成平台上的任何用户来创作内容。我希望管理员不会滥用这种权力;我不会。然而,这种权力与更改帖子所有权的能力(无论是联合的还是非联合的)影响相似。总的来说,“管理员可以做一些邪恶的事情”已经以各种方式存在了。

我同意(至少在我理解的范围内 :grin:),更改联合帖子(因此,不是主题帖子?)的所有权没有多大意义。与更改网站上帖子的所有权不同,我不记得见过有阐述的用例。

我喜欢这一点,不仅是因为它能抵御这种攻击,还因为它使联合更加可见,使网站访问者更容易找到要关注的 Actor。对于类别 Actor(以及,也许有一天,站点 Actor?)和个人 Actor 的情况,这会是什么样子?你会有一个列表吗?

  • [@category@site](link) 发布
  • [@person@site)(link) 发布
1 个赞

感谢您有用的分析。

同意。

这个分析只适用于非联合帖子。问题不在于更改帖子的所有者对 Discourse 本身是否有意义。问题在于更改所有者对联合内容有什么影响。如果你更改了本地帖子的所有者,而该帖子已经被联合,那么你必须处理这个问题:

我首先要指出,1 和 2 都有一些实质性的问题,如果需要,我可以详细说明。答案可能是该插件已经支持的“3”,但是如果我们走这条路,将会发生以下情况(假设我当前对 mastodon 的 PR 未合并):

  1. 主题被联合。
  2. 主题中的帖子出现在 Mastodon 上。
  3. 网站管理员更改帖子所有者。
  4. 新的帖子所有者对帖子进行各种编辑。
  5. 编辑未到达 Mastodon(或任何其他 ActivityPub 平台)。

由此得出:

  1. 会有人来这里说“我的编辑没有被联合”。原因将不明显,因为就 Discourse 而言,它们正在被联合。

关键点在于,如果我们采取这种方法,我们将成为 fediverse 中(据我所知)第一个这样做的平台。在一个互联的节点系统中成为唯一的节点去做某事并不是一件显而易见可取的事情。我们可能会促成这方面的改变,但我们必须意识到我们正在尝试这样做。

话虽如此,我已经实现了 3,并且我怀疑这将是最终的答案,它将允许我删除这个限制。我仍然抱有一丝希望,有人能够提出一个稍微更细致的方法,或者我还没有想到的东西。

只会列出对象的 attributedTo 参与者,所以只有一个。

1 个赞

我确实看到了这种丑陋。让我想到这一点的思路是这样的……

我可以天真地想象出类似 #3 的东西,再加上一点 #2——从旧用户那里联合生成一个更新,在他们发布的最后一个版本中添加一些系统生成的文本,顶部或底部大致是“未来的更新,请关注 @newuser@site ”。

然后(再次天真地)为新 attributedTo 下的更新帖子分配一个新的 ID,并用于新所有者的更新,这将是有意义的。

一个显而易见的边缘情况是,将所有权更改回原始所有者——它会恢复到旧帖子 ID 还是分配另一个 ID?我认为是恢复,在这种情况下,联合帖子 ID 实际上必须是(用户,讨论帖子)元组的键。我预计这需要迁移来支持向后兼容性。

所有这些作为思想实验,确实让我更清楚地认识到为什么你不急于推进你提议的对 Mastodon 的更改!:slightly_smiling_face:

排除你的 Mastodon PR 被接受的情况,我可以想象能够将单个帖子标记为非联合,如果它们以前被联合过,它们将被联合为删除,和/或可以在安装了插件但尚未启用联合的情况下完成,然后允许非联合帖子的所有权更改。据我所知,所有我想要更改所有权的帖子都是不值得联合的帖子。

即使你的 Mastodon PR 被接受并且支持更改所有权,我也能想象这很有价值。例如,我不确定联合分类主题帖子是否有意义。至少,我认为即使支持更改所有权,如果我有排除它们的选项,我也会在我的网站上排除所有这些帖子。

一个有趣的思想实验,但由于几个原因行不通。

  • 你不能在 discourse activitypub 中关注单个用户。
  • 你不能更改现有 activitypub 对象的 ID(你必须创建一个新对象)。
  • 正如你所说,如果所有权再次更改,或多次更改,你最终会为一个帖子拥有多个对象,这将是无法管理的。

我现在可以做的一件事是更改限制,以确定本地主题的第一个帖子是否已发布。正如你所说,这有助于处理一些主题。

1 个赞

是我的误解;我以为您也创建了执行此操作的能力,以及分类 actor。(这不是功能请求,只是误解。)

这正是我试图描述的,显然失败了。无论如何,这本意是作为一种 归谬法:smiling_face:

那将太棒了!:heart:

1 个赞

您好,Lemmy 有什么限制吗?

例如,我无法关注:@batepapo@lemmy.eco.br

事实上,我可以关注。个人资料下甚至会出现“取消关注”按钮,但当我刷新页面时,一切都会消失。

1 个赞

干得好!我有一个关于 ActivityPub 投递延迟分钟数的问题。有没有办法禁用该功能,以便帖子可以立即显示?

设置1分钟几乎是立即的,但我希望实时发布两者。

1 个赞

@David_Ghost 阅读这个

2 个赞

这也是我注意到的第一件事。将新帖子的标题通过 ActivityPub 分发有什么缺点?

[Discourse 主题标题]
[空行]
[Discourse 主题文本,按现在发布的方式]

Lemmy 的开发者们正在努力添加对 Discourse 的兼容性。我计划跟进一下。

这意味着 Discourse 发送了关注请求,但没有收到 Lemmy 的接受响应。

目前只能通过环境变量来实现(例如,在你的 app.yml 文件中设置)

DISCOURSE_ACTIVITY_PUB_DELIVERY_DELAY=0

主题的标题已经发布了。它是与该主题关联的集合的 name

这就是 Discourse 到 Discourse 联合,或者 Discourse 到 NodeBB,或者 Discourse 到任何论坛类平台包含主题标题的方式。Mastodon 不处理标题。如果我们按照你的建议将主题标题放在 Note 的内容中,这将带来问题,例如当内容联合到支持标题的平台时。

根本上说,你描述的限制是 Mastodon 是一个微博客平台。我们已经添加了相应的功能,即 [note][/note] 标记,让你能够定位你联合的内容。如果你想要真正的论坛式联合,我建议与其他的 Discourse 实例进行联合。

是的,有很多 Mastodon 实例。但也有很多 Discourse 实例。如果你想联合的 Discourse 实例尚未设置好,我很乐意帮助他们进行设置。

5 个赞

是否可以删除 Actor?
是否可以设置多个类别,以便他发布 Discourse 中的所有新内容?
否则,有人必须在 Mastodon 上关注 xx 个句柄才能获取所有类别的内容。

您可以禁用一个Actor,这将禁用与该Actor相关的所有内容。

如果您删除Actor所属的类别或标签,它将删除Actor。目前无法单独删除Actor。我建议只禁用Actor。

这在未来(中长期)是可能的,如果我们为整个Discourse添加一个“应用程序”Actor。通过单个Actor将Discourse上的所有内容进行联合,可能始终是一个小众用例。

1 个赞

嗯,好的。也许我对可能性的理解有所不同……

昨天我设置好了,而且运行得很好。我删除了 Discourse 上的帖子,因为我只是测试了一下,但帖子仍然在线 Mastodon 上。所以我想我可以删除该账户,以便也从 Mastodon 上删除内容。
如果我只是禁用它,内容仍然在线 Mastodon 上。
而且如果我无法删除它,将来我就无法将此句柄用于其他类别。也许将来我想更改一些类别,但我无法将其用于拥有 xx 关注者的句柄。所以,我需要创建一个新的句柄,每个人都必须再次关注它。我看不出仅禁用我不再需要的句柄有什么好处。

而且:当我禁用一个句柄时,另一个句柄也会被禁用。所以,我只能运行多个句柄,或者什么都不运行?

但这就是我想要的,还是我理解错了?我想在社交网络上通知人们我的整个 Discourse 的讨论情况,而不仅仅是针对一个标签或类别。如果我运行一个“新闻”版块,我可以理解,但我希望每个人都参与讨论,所以我必须发布所有内容,而不仅仅是一个类别。