What would cross-posting between instances look like in ActivityPub?
-
Following up on [this question I asked back in late March](https://community.nodebb.org/topic/18735/how-do-piefed-lemmy-mbin-handle-cross-posting), 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](https://community.nodebb.org/topic/18788/nodebb-v4.3.0-remote-categories-are-a-go). 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. 1. 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. 1. 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? 1. What exactly happens currently if a Group actor receives an `Announce(Object)`? My guess is nothing, currently, but let me know otherwise
1. Would this allow you to accept cross-posts from other AP applications without needing to refactor any existing code? 1. 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](https://community.nodebb.org/user/rimu%40piefed.social) [@andrew_s@piefed.social](https://community.nodebb.org/user/andrew_s%40piefed.social) [@melroy@kbin.melroy.org](https://community.nodebb.org/user/melroy%40kbin.melroy.org) [@bentigorlich@gehirneimer.de](https://community.nodebb.org/user/bentigorlich%40gehirneimer.de) [@nutomic@lemmy.ml](https://community.nodebb.org/user/nutomic%40lemmy.ml) [@angusmcleod@mastodon.social](https://community.nodebb.org/user/angusmcleod%40mastodon.social)
-
A ActivityPub shared this topic
-
As far as I am aware Lemmy doesn't have cross-posts like you are imagining. There are two parts to this: 1. There is an indicator if there is other post that links to the same website/image. 2. Crosshposts are just a copy of the text with quote markdown.
-
@julian
It is great to see NodeBB trying to work with other platforms to solve issues.It is supposed to be a federated network, cross-posting is important for many fedi users.
also, if platforms intergrated better it would help discovery and help new and old users of fedi.
-
As far as I am aware Lemmy doesn't have cross-posts like you are imagining. There are two parts to this: 1. There is an indicator if there is other post that links to the same website/image. 2. Crosshposts are just a copy of the text with quote markdown.[@ludrol@szmer.info](https://community.nodebb.org/user/ludrol%40szmer.info) yes, you're right about that. The silver lining here is that we're at a point where the major players' implementations are **local-only**, so we don't have to work around with a pre-existing implementation and ensure compatibility. The second point is that a "cross-post" could have multiple meanings, including manually creating a new post about a link already present in multiple communities. What I'm _hoping_ to describe is a common way that items can be cross-posted natively between instances, while hopefully preserving their reply-trees.
-
@julian @rimu @andrew_s @melroy @BentiGorlich @nutomic @angusmcleod
I am posting to this from Mastodon, which interfaces with communities on lemmy/pie very awkwardly (but not zero percent).
A good cross posting solution would be one where a user can simply tag the extra communities, like a reply, as then it would be relatively cross platform friendly, and the communities on the other side/server would look for in their database posts with the community tagged / mentioned group 'superuser', say @ examplecommunity @ server.com when they load the community page, regardless if on the actual creation event they only 'officially' store it under one community.
IDK yet (I'll prolly look it up someday) how all these different platforms are organizing their database, but I'm imagining a table like poster | category | tags + msg + mentions | getting pulled when you go to a category; then you could turn off looking at cross-posts that are only in the category because of a tag/mention. -
@julian @rimu @andrew_s @melroy @BentiGorlich @nutomic @angusmcleod
I am posting to this from Mastodon, which interfaces with communities on lemmy/pie very awkwardly (but not zero percent).
A good cross posting solution would be one where a user can simply tag the extra communities, like a reply, as then it would be relatively cross platform friendly, and the communities on the other side/server would look for in their database posts with the community tagged / mentioned group 'superuser', say @ examplecommunity @ server.com when they load the community page, regardless if on the actual creation event they only 'officially' store it under one community.
IDK yet (I'll prolly look it up someday) how all these different platforms are organizing their database, but I'm imagining a table like poster | category | tags + msg + mentions | getting pulled when you go to a category; then you could turn off looking at cross-posts that are only in the category because of a tag/mention.[@kirkmoodey@universeodon.com](https://community.nodebb.org/user/kirkmoodey%40universeodon.com) yes, Mastodon compatibility is lacklustre but that's partly because the _architecture_ of Mastodon doesn't lend itself well to categorical organization. That's not a criticism, merely a difference that we have to consider. Currently, when a user addresses multiple communities, then the existing software (NodeBB included) uses the first one. How the rest of the addressed communities are handled is what's of interest here. -
@julian @rimu @andrew_s @melroy @BentiGorlich @nutomic @angusmcleod say I make a video and post it somewhere I can set comments subject to approval. A forum or link aggregator whose moderation I trust posts a link to my video. I think I would like to approve a whole discussion that I am confident is moderated appropriately, but not all discussions, and also treat my reactions to individual comments as approvals for display at the publication site.
So I think I would want granularity, deciding whether my content is linked or cross posted, and whether I want to treat the remote discussion as a cross post to my comments section. But I would definitely want it to be the same object. In as far as I would have any duplication the cross post would be best thought of as nested under the post object.
-
@julian @kirkmoodey Mastodon is currently working on a spec for their groups implementation. Maybe get everybody together to hash out a common spec, including those who already have a group implementation like Friendica/Hubzilla, Misskey/IceShrimp/Sharkey, Pleroma/Akkoma?
-
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, PieFed just blindly accepts everything.
-
@julian @kirkmoodey Mastodon is currently working on a spec for their groups implementation. Maybe get everybody together to hash out a common spec, including those who already have a group implementation like Friendica/Hubzilla, Misskey/IceShrimp/Sharkey, Pleroma/Akkoma?