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?
@julian@trwnh@angusmcleodAnnounce(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 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
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...
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
@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
@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.
A proposal with status FINAL can not be changed or updated in a way that would lead to adjustments to implementations.
The paragraph proposed by @bumblefudge sounds like a normative change, but not a backward incompatible one, so I wouldn’t object against including it.
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.
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 to Announce(Note), the latter being sent out for compatibility with services that do not handle activity announcement.