What would cross-posting between instances look like in ActivityPub?

Following up on this question I asked back in late March, I wanted to continue thinking about how one would handle cross-posting between categories/communities, given that there isn't current consensus on it, and especially given that NodeBB—as of v4.3.0—can now see and browse remote categories.

From that original topic, we can distil the following:

  1. Both PieFed and Mbin do not natively handle cross-posts, a new entity is made with the crucial bits (link, text, possibly title) copied over and changed if needed, sometimes a "cross-posted from..." helper text is prepended.
  2. There are legitimate concerns that a cross-post might not succeed depending on privilege settings on the receiving end, so a pre-flight check (or explicit rejection) of some kind might be required.
  3. Cross-posting can be done by the original author, or another user.

So were an FEP to be written, we'd center it around the following assumptions:

  • "A user (which may or may not be the object author) is sharing an object to additional audiences"
  • We would use the existing Announce(Object) model
  • We would not use Announce(Activity) because it is not the original object creation that is being announced, but the object itself, to a new audience.
  • Some form of Reject handling would be required for cases where the cross-post is not allowed
  • How the receiver handles the activity is out-of-scope of the FEP. It could be that the original object is contained within multiple categories/communities, or a duplicate object could be created — implementor's choice.

This is very similar to an existing announce/boost/reshare, except that instead of addressing the activity to followers list you are addressing it to a group actor's inbox.

Some additional questions:

  1. Is there desire from PieFed/Lemmy/Mbin for supporting incoming (and possibly outgoing) federation of cross-posting?
  2. What exactly happens currently if a Group actor receives an Announce(Object)? My guess is nothing, currently, but let me know otherwise :smile:
  3. Would this allow you to accept cross-posts from other AP applications without needing to refactor any existing code?
  4. Duplicating the object would mean the discussion is split between objects. The ideal implementation would be the same object present in multiple categories/communities. Is there desire for this in the threadiverse?

rimu@piefed.social andrew_s@piefed.social melroy@kbin.melroy.org bentigorlich@gehirneimer.de nutomic@lemmy.ml angusmcleod@mastodon.social

0 points · 3 comments · view on lemmy.world

3 Comments

silverpill@mitra.social · 1 pts · 90d

@julian Hi, what's the status of this? Is cross-posting still done by making a copy of a post?

rimu@piefed.social · 0 pts · 1y

IMO The simplest way would be to garnish a bit of extra data onto the normal FEP 1b12 process.

Create a new post (Create -> Page to the instance that hosts the community, which in turn does Announce -> Create -> Page to followers) and add an extra field to the Page which is the URL of the original post. That will establish the association.

To reject the cross-post, return HTTP 400 (403?) to the POST to the inbox on the initial Create -> Page ? Or send a Reject activity, either way is fine but the 400 seems easiest. Lemmy returns 400 for a lot of things so we have some prior art in that direction.

projectmoon@forum.agnos.is · 0 pts · 1y

How would this work on the NodeBB side? Multiple categories associated with one topic?