tl;dr — how do PieFed/Lemmy/Mbin handle cross-posting?
Currently, when a NodeBB admin moves a topic from the uncategorized pseudo-category into a local category, we federate out an as:Announce, people typically think of that as a "boost" or "share".
That worked fine when the entirety of the category list was your local categories plus the "uncategorized" pseudo-category. However, now that NodeBB is moving towards supporting remote categories (via group actors), this UX makes less sense. We wouldn't want to "move" a topic out of the category it is supposed to be in, just for visibility to other local users. Additionally, topic moving was limited to administrators, and from the get-go we knew it would eventually cause issues because people other than admins would want to share topics to other local users.
This is where the "cross-post" functionality comes in, which is entirely new to NodeBB. I don't think this is new to other AP-enabled threaded discussion software. The idea would be that if a new topic comes in, whether it's uncategorized or not, any user could "cross-post" that topic to a local category, where it would be visible to other users on that instance. On the ActivityPub side, we would then federate out an as:Announce as we already do.
Is this what PieFed/Lemmy/Mbin already do, if they support cross-posting? What other alternative solutions would there be to this problem?
Hmm... considering that Piefed cross-posts are entirely separate posts, then if the original is edited, then the modification is not carried over to the cross-posted post, correct?
I'm thinking that for NodeBB we could continue to have cross-posts reference the canonical topic. They'd simply be part of a separate audience as well.
Whether this is local-only or not, I am not sure yet. Perhaps for federation purposes we'd still report the original category (if there is one) under audience
Yes the modification is not carried over and the cross-post will often have a different author from the original too. While creating the cross-post the cross-poster could have edited the title and description, too. The only connection is that they have the same url (in the attachment). Lemmy adds the text "cross-posted from link-to-original" to the beginning of the body content but it's just text, not an attribute on the Activity.
Room for improvement!
Also moving what NodeBB calls a topic (a post in Lemmy/PieFed) from what NodeBB calls a category (community in Lemmy/PieFed) into a different category (without spawning a new topic or leaving the old copy behind) is much needed but not implemented in Lemmy/PieFed/Mbin.
@julian On Mbin we don't have a button so the user can cross post it to another magazine/community/group. What we count as "crossposts" are just posts linking the same URL (and sometimes title matching, though I don't like that part). But like Rimu said these are entirely different entities with different apIds often from different instances
Based on the replies received, it does sound like at present that if cross-posting is a consideration, it is something done locally, and not something that is explicitly declared when federating outward or retrieved via AP.
There are also multiple definitions of cross-posting:
Multiple, disparate topics sharing the same attachment url (PieFed)
Author targeting multiple audiences
Non-author sharing object to additional audiences
One of those is really not like the other, which does complicate things somewhat. Thankfully, it does seem like that the way PieFed handles it, is local to the instance.
A good first step might be to narrow down the definition of cross-posting—at least from a protocol level—to a combination of the latter two:
"A user (which may or may not be the object author) sharing an object to additional audiences"
Of course, this also happens to be what I'm looking for: the association of an as:announce activity with an as:target pointing to an as:Group actor.
Would this be of interest to anybody here? The fallback mechanism is to just treat the announce as usual.
@silverpill@julian i was going to say that yes, to/cc/audience are more specific versions of target, specifically audience targeting. not sure Announce.target is needed here... what would be ideal is if multiple Announces existed, one for each category. an AP Announce represents a "share" and not necessarily a "reshare", so it's not like one of them has to be the "original"; they can all exist at the same tier.
@trwnh@mastodon.social sure, makes sense. That to/cc already exist in the wild as arrays means one less thing to worry about with multiple cross posts.