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?
threaded - newest
@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
@silverpill@mitra.social in my experience many talk about FEP 1b12 implementations as "boosting" to the group, hence the confusion.
@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
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 acceptsAnnounce(Object)
if one of their users were to follow a Hubzilla/Friendica group actor...@julian @nutomic When Lemmy creates a post it sends both
Announce(Object)
andAnnounce(Create(Object))
. I don't know about acceptingAnnounce(Object)
, but likely it does that toojulian:
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
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.
@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.
Lemmy only supports
Announce/Activity
, with the exception of sendingAnnounce/Page
for Mastodon compatibility. When I wrote the FEP I wasn't aware that Hubzilla and Friendica sendAnnounce/Object
, otherwise I might have included that.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.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 toAnnounce(Note)
, the latter being sent out for compatibility with services that do not handle activity announcement.I've also added FEP 1b12 announces for additional activities:
Confirming that at least Discourse accepted the
Announce(Like(Note))
and parsed it correctly.