If you Announce(Object) are you not following FEP 1b12?
from julian@community.nodebb.org to swicg-threadiverse-wg@community.nodebb.org on 06 Jun 2024 20:04
https://community.nodebb.org/post/99943

This is a spin-off discussion from today's ForumWG meeting

At today's ForumWG meeting, @trwnh@mastodon.social mentioned that Announce(Object) is something that Hubzilla and Friendica do, but the proper FEP 1b12 behaviour is to send out Announce(Activity).

I noted that NodeBB actually announces the Note object itself, instead of the activity, and provided some context that Discourse (via @angusmcleod@mastodon.social) originally expected Activities, but now also accepts objects (implicit create) for compatibility with NodeBB. Likewise, NodeBB also added some logic to handle Announce(Create(Note)) for compatibility.

Would Announce(Object) be considered a "variant" of 1b12, implemented within the spirit of the FEP, but not a technically compliant implementation?

#1b12 #activitypub #forumwg #swicg-threadiverse-wg

threaded - newest

silverpill@mitra.social on 06 Jun 2024 22:36 next collapse

@julian @trwnh @angusmcleod Announce(Object) is a boost/share/repost in Mastodon and other micro-blogging apps. I think it can't be considered a variant of FEP-1b12. And the FEP only talks about announcing activities:

>In case the incoming activity is deemed valid, the group MUST wrap it in an Announce activity, with the original activity as object

julian@community.nodebb.org on 06 Jun 2024 22:41 collapse

@silverpill@mitra.social in my experience many talk about FEP 1b12 implementations as "boosting" to the group, hence the confusion.

silverpill@mitra.social on 07 Jun 2024 00:06 collapse

@julian It might be because of what FEP-1b12 says in "Implementations" section:

>This document is written based on existing group implementations in Lemmy, Friendica, Hubzilla, Lotide and Peertube. These already federate successfully in production.

Some of these implementations may support Announce(Activity) today, but as far as I know they didn't support it when FEP-1b12 was written

julian@community.nodebb.org on 07 Jun 2024 02:00 collapse

Thank you @silverpill@mitra.social for providing some helpful context.

In that sense, then, it seems as though @nutomic@lemmy.ml expected going in that existing implementations would not be strictly compatible with his vision, but one would assume some form of compatibility was reached in spite of this?

That is, Lemmy may expect Announce(Activity), but I bet it also accepts Announce(Object) if one of their users were to follow a Hubzilla/Friendica group actor...

silverpill@mitra.social on 07 Jun 2024 13:51 next collapse

@julian @nutomic When Lemmy creates a post it sends both Announce(Object) and Announce(Create(Object)). I don't know about accepting Announce(Object), but likely it does that too

bumblefudge@socialhub.activitypub.rocks on 07 Jun 2024 14:42 collapse

julian:

Lemmy may expect Announce(Activity), but I bet it also accepts Announce(Object) if one of their users were to follow a Hubzilla/Friendica group actor...

Would it help to add a "Legacy Compatibility"/Postel's Law section explaining this to the FEP itself? As in,

"An implementation MUST produce Announce(Activity) messages to conform to this FEP, but it MAY also accept [edit: and/or emit] Announce(Object) as well for wider compatibility, and if you do, the recommended behavior is... { Normalize | Drop | Translate | etc }"

This is helpful to people writing test suites/test-cases because it can give warnings for what an implementation will receive that still help compatibility without giving anyone "Fails" for the core feature

silverpill@socialhub.activitypub.rocks on 07 Jun 2024 14:46 collapse

Information about Legacy Compatibility was not included on purpose: https://codeberg.org/fediverse/fep/pulls/20#issuecomment-687050But I still think it would be helpful to include. Perhaps in a different FEP, because FEP-1b12 was finalized.

julian@community.nodebb.org on 07 Jun 2024 14:46 collapse

@silverpill@socialhub.activitypub.rocks I'm not certain whether the variance rises to the level of requiring a separate FEP, since it is essentially just supporting the lack of an activity wrapped around the object in question.

It's unfortunate that finalized FEPs cannot change, since it's essentially just a non-normative description of backward/alternative behaviour.

nutomic@socialhub.activitypub.rocks on 07 Jun 2024 21:07 next collapse

Lemmy only supports Announce/Activity, with the exception of sending Announce/Page for Mastodon compatibility. When I wrote the FEP I wasn't aware that Hubzilla and Friendica send Announce/Object, otherwise I might have included that.

julian@community.nodebb.org on 08 Jun 2024 15:24 collapse

Thanks for supplying some additional context @nutomic@socialhub.activitypub.rocks.

Understanding that, then, would you be open to amending the FEP to include observed behaviour from other implementors who send Announce(Object) instead?

A second optional pattern would be sending an Announce(Object) for increased compatibility with other implementers, though it may be harder to justify amending the FEP for that.

julian@community.nodebb.org on 14 Jun 2024 17:28 collapse

As per the discussion generated by this topic, I have updated the NodeBB implementation so that its group actors (NodeBB categories) send out Announce(Create(Note)) in addition to Announce(Note), the latter being sent out for compatibility with services that do not handle activity announcement.

julian@community.nodebb.org on 14 Jun 2024 18:14 collapse

I've also added FEP 1b12 announces for additional activities:

  • Create
  • Update
  • Like
  • Undo(Like)
  • Delete

Confirming that at least Discourse accepted the Announce(Like(Note)) and parsed it correctly.