ActivityPub Plugin

same here. I cant change the owner of a thread. Even though the category is NOT federated.

Those are warnings, not errors. They donā€™t necessarily mean anything is wrong, theyā€™re there to give you more information about whatā€™s going on. There could be a number of reasons why content from the Fediverse is not processed, many of which are to do with the person sending the content. If you donā€™t want them showing up in your logs turn off verbose logging for the ActivityPub plugin (activity pub verbose logging)

Is the topic in an ActivityPub category or does it have an ActivityPub tag?

Was the topic created in an ActivityPub category or with an ActivityPub tag?

Please note that changing the owner of a topics is intentionally disabled for ActivityPub topics. As to why this is the case, please see above:

It is a category with Activitypub, but we are talking about the owner of the thread that it isnā€™t involved with the activitypub as it is a different account.

I think that there should be an option to allow to change the owner anyway otherwise doesnā€™t make sense that Discourse has the modal to change the owner.
Also to change it without send any updates to activitypub it is perfect for us.

1 Like

I understand that folks want the ability to change post ownership. The issue to address in this respect is the one I outlined above, specifically this:

The content appearing on your Discourse is from a service on which you are not an Administrator and which, but for ActivityPub, you would have no control over whatsoever. Simply extending the ability to change the author of that content without due consideration of that fact would not be prudent.

As for content authored by users from your Discourse in a topic that is published via ActivityPub, consider what should happen if any updates are made to the content once youā€™ve changed the post author. Do we:

  1. stop publishing ActivityPub updates; or
  2. publish them by the ā€œoldā€ Actor (user); or
  3. publish them by the ā€œnewā€ Actor (user).

Publishing Update activities for an existing Object with a new Actor (i.e. 3) will work with Discourse (as I attempted to give affordance for this question), but it wonā€™t work with other ActivityPub services. Indeed I have already pushed on this point, for this reason, in the ActivityPub ecosystem. See here:

And I have an outstanding PR to Mastodon to make 3 possible

To give one example of just one of the problems here, consider the case in which you are publishing ActivityPub content with your account (and your name and picture) attached to it. One of your ā€œcompetitorsā€ follows your content. On their server they then change the ownership of all of the posts with your content to be posts by them (with their name and their picture) instead of posts by you. That may, somewhat understandably rub you the wrong way. Yes, of course this is possible with custom code anyway, but the question is whether you want to build that into the default affordances of the plugin.

Thinking about this overnight, one approach that might ameliorate this somewhat is if we added the publishing Actor to the ActivityPub status display:

Iā€™m open to other ideas along those lines.

True, I think Iā€™ll just remove the modal entirely on ActivityPub topics until we resolve the underlying question here.

1 Like

I understand the issue, in our case we use Activitypub with an account for every category and post that update.
So who is the owner of the thread doesnā€™t care so much for us on Activitypub for the various cases, for this reason I say that we should be able to do it anyway.

ActivityPub is not just about how you use your forum, itā€™s about how your forum interacts with the rest of the fediverse. Moreover, to build something into the plugin we have to take into account other use cases too.

I donā€™t want to give the impression that allowing change of post owner is not an issue being actively considered, or that wonā€™t be allowed in a future update. Iā€™m interested any ideas people have to resolve the underlying issues here, some of which Iā€™ve laid out above

Addressing this example, it would be reasonable to forbid changing the ownership of posts which have been federated in, while allowing admins to change the ownership of posts authored within that Discourse instance, regardless of whether they are federated.

An admin can impersonate a user. Therefore an admin is able, within the platform with its existing affordances, to author content masquerading as any user on the platform. I hope that admins do not abuse this power; I donā€™t. However, that power is similar in impact to the ability to change ownership of a post, federated or not. In general, ā€œan admin can do something nefariousā€ is already true in myriad ways.

I agree (at least inasmuch as I understand :grin:) that changing the ownership of a post that was made by federation (therefore, not a topic post?) does not make much sense. Unlike changing ownership of posts made on site, I donā€™t recall seeing a use case articulated.

I like this not just from the standpoint of robustness against this kind of attack, but for making federation more visible, making it easier for a site visitor to find actors to follow. What would this look like for a case where there is a category actor (and, maybe someday, a site actor?) and a person actor? Would you have a list?

  • Published by [@category@site](link)
  • Published by [@person@site)(link)
1 Like

Thanks for your helpful analysis.

Agreed.

This analysis is only holds for non-federated posts. The question is not whether changing a post owner makes sense for Discourse itself. The question is what effects the change of ownership has on federated content. If you change the ownership of a local post that has been federated you have to deal with this question:

I would start by noting that both 1 and 2 have some substantial issues, which I can elaborate on if need be. The answer may be the one the plugin already, supports, namely ā€œ3ā€, however if we go down that path this will happen (assuming my current PR to mastodon is not merged):

  1. Topic is federated.
  2. Posts from topic appear on Mastodon.
  3. Site admin changes post owner.
  4. New post owner makes various edits to post.
  5. Edits do not make it to Mastodon (or any other ActivityPub platform for that matter)

And following from that:

  1. Someone will come here and say ā€œmy edits arenā€™t being federatedā€. The reason for which will not be immediately obvious because as far as Discourse is concerned, they are being federated.

The key point here is that if we took this approach weā€™d be the first platform in the fediverse (that Iā€™m aware of) to do it. Being the only node in an interconnected system of nodes to do something is not an obviously desirable thing to do. We may prompt change in that respect, but weā€™d have to be conscious that is what weā€™d be attempting.

That said, Iā€™ve already implemented 3, and I suspect that will be the eventual answer which will allow me to remove this restriction. Iā€™m still holding out some hope that someone might be able to come up with a slightly more nuanced approach, or something I havenā€™t thought of yet.

Only the attributedTo Actor of the object would be listed, so thereā€™d only be one.

1 Like

I do see the ugliness. The thought process that got me there is something like thisā€¦

I could naively imagine something like #3 with just a tiny bit of #2 ā€” To also federate a generated update from the old user that adds to the last version they published some system-generated text at the top or bottom something vaguely like "for future updates, follow @newuser@site "

Then it would (again naively) make sense to allocate a new ID for the updated post under the new attributedTo and which is used for the new ownerā€™s updates.

An obvious-to-me edge case would be changing ownership back to the original owner ā€” does it revert to the old post ID or allocate yet another ID? Iā€™d think revert, in which case the federated post ID would actually have to be a key to a (user, discourse post) tuple. Iā€™d expect this to take a migration to support with backward compatibility.

All that as a thought experiment does make me appreciate more clearly why you wouldnā€™t be eager to rush ahead of your proposed change to mastodon being considered! :slightly_smiling_face:

Exclusive of your Mastodon PR being accepted, I could imagine being able to mark individual posts as unfederated, which would federate as a deletion if they were previously federated, and/or could be done with the plugin installed but before federation was enabled, and then allow ownership change for only unfederated posts. All posts where I want to be able to change ownership are posts that arenā€™t valuable to federate, as far as I can tell.

I could imagine that being valuable even if your Mastodon PR is accepted, and changing ownership is supported. Iā€™m not sure that it makes any sense to federate the category topic posts, for example. At least, I think I would exclude all of them from federating on my site even if changing ownership were supported, if I had the option to exclude them.

An interesting thought experiment, however this would not work for a few reasons.

  • You donā€™t follow individual users in discourse activitypub.
  • You canā€™t change the ID of an existing activitypub object (youā€™d have to create a new object).
  • As you say, if the ownership changed again, or multiple times, youā€™d end up with multiple objects for one post, which would be unmanageable.

One thing I can do now in this vein is to change the restriction to whether the first post in a local topic is published. That will help with some topics as you say.

1 Like

My misunderstanding; I thought you had also created the ability to do that, as well as category actors. (Not a feature request, just a misunderstanding.)

That was what I was trying to describe, and clearly failed. It was intended as something like a reductio ad absurdam in any case. :smiling_face:

That would be wonderful! :heart:

1 Like

Hi, thereā€™s a limitation for Lemmy?

I cant follow: @batepapo@lemmy.eco.br by exemple

In fact, I can follow. The ā€œunfollowā€ button even appears under the profile, but when I refresh the page, everything disappears.

1 Like

Great job! I have a question regarding activity pub delivery delay minutes. Is there a way to disable the feature so the post would be visible right away?

Setting 1 min its almost immediately but I wish to post both real time too.

1 Like

@David_Ghost read this

2 Likes

This is the first thing Iā€™ve noticed as well. What would be the drawback of adding the title of a new topic to the post distributed via ActivityPub?

[Discourse topic title]
[empty line]
[Discourse topic text, as published now]

The Lemmy folks were working on adding Discourse compatibility. Itā€™s on my agenda to check in on that.

That means Discourse is sending a Follow but not getting back an Accept from Lemmy.

Currently you can only do this using an environment variable (e.g. set in your app.yml file)

DISCOURSE_ACTIVITY_PUB_DELIVERY_DELAY=0

The title of a topic is already published. It is the name of the collection associated with the topic.

That is how Discourse to Discourse federation, or Discourse to NodeBB, or Discourse to any forum-like platform includes topic titles. Mastodon does not process titles. If we were to put the topic title in the content of the Note as you suggest this would pose problems, e.g. for when content is federated to platforms that support titles.

Fundamentally, the limitation youā€™re describing is that Mastodon is a micro-blogging platform. We have already added functionality to accomodate that, i.e. the [note][/note] markup to let you target the content youā€™re federating. If you want to have proper forum-like federation, Iā€™d suggest federating with other Discourse instances.

Yes, there are many Mastodon instances. But there are also many Discourse instances. If a Discourse instance you want to federate with isnā€™t set up to do so yet, Iā€™d be happy to help them get set up.

5 Likes

Is it possible to delete Actors?
And would it be possible to set up multiple categories, so that heā€™s posting everything, that is new in discourse?
Otherwise someone has to follow xx handles on mastodon to get all the content from all categories.

You can disable an Actor, which disables everything related to that actor.

If you delete the category or tag the actor is associated with it will delete the Actor. Deleting an actor in isolation is not currently possible. I would recommend just disabling the Actor.

This may be possible in the future (medium to long term) if we add an ā€œApplicationā€ actor for an entire Discourse. Federating everything on a Discourse through a single Actor will likely always be a niche use case.

1 Like

Hm okay. Maybe my understanding of the possibilities are differentā€¦

Yesterday I set it up and it worked fine. I deleted the Postings on Discourse, because i Just tested it, but the postings are still online in Mastodon. So I thought i could delete the account to delete the content from Mastodon as well.
When I just disable it, the content is still online on Mastodon.
And when I canā€™t delete it, I can not use this handle with other categories in the future. May I want to change some categories in the future but I can not use it with that handle which has xx followers. SO I need to create a new handle and everyone has to follow it again. I canā€™t see any advantages of only diasabling a handle I dontā€™t need anymore.

And: When I disable one handle, the other is disabled too. So I can only run multiple handles or nothing?

But thats what I want, or am I understanding it wrong? I want to inform persons in a social network about the discussions on my whole discourse and not only for one tag or category. When i run a ā€œNewsā€ section, I can understand it, but I want everyone to take part in the discussions so I have to post everything and not only one category.