-
Notifications
You must be signed in to change notification settings - Fork 90
Description
(I started this issue as a comment to w3c/activitystreams#633 yet this is a more appropriate location.)
There are a lot of thoughts, differences of opinion, and Babylonian confusions, in the ActivityPub developer ecosystem, where I wonder they'd be totally avoidable if only the root cause were properly addressed.
As I referred to recently at swicg/general#44 (comment) do we have clear enough domain models and Ubiquitous (attention to) Language on how AS/AP et al supposed to fit together, such that it leads to shared mental picture, common understanding, and avoidance of confusion? I personally think not.
What I think is a 'mistake' or rather oversight in the grassroots standardization efforts of the dev community since ActivityPub W3C standardization in 2018 is the lack of focus on design methodology for interoperable protocol extensions (if "protocol extension" is the right word, see the SWICG issue above).
What is the exact relationship of ActivityPub to ActivityStreams even? How does AP build on top of AS exactly? How do we suppose to use AS types such that we guarantee highest levels of Interopability on the wire? In the past I have at times described ActivityStreams as "a toolbox of social web primitives to design and build social networking use cases". This is not a good description I think today.
Imho a big problem is how everyone in the dev ecosystem treats ActivityStreams as a lego box of social primitives with which you can build anything, model any app. Just cook with your own mix of AS ingredients to create new semantic sauce and expected dining behavior. And drop that recipe on-the-wire in a combinatorial explosion of accidental complexity. If whack-a-mole driven development (WDD) - maintaining app-by-app custom interop against moving release targets - were a game, this constitutes the level-up mechanism.
- How does AP build on top of AS exactly?
- How are ecosystem developers supposed to build with AS exactly?
What is often said is that AS/AP aren't open standards where following the specs to the letter guarantees any level of Interoperability, since there's too much flexibility, things open to interpretation or left out of scope. And I mentioned regularly I consider ActivityPub et al more of a "protocol framework". But even then it is an underspecified framework, with a quite bad DX.
This can be labeled 'Next version' or it might be a W3C Note. There is opportunity to bring more rigour to the AS/AP specs if exact format, semantics and behavior (message exchange) were defined around the social primitive in ActivityStreams. Put a halt to the downward interop spiral of "every combination goes, so code your protocol flavour" path of protocol decacy and ever increasing WDD overhead. The ActivityStreams Vocabulary specification even gives good suggestions already in 5.8 Activity Type Motivating Use Cases.
I should add that the primers are a good start at providing more clarity, but they are more like fragmentary notes now, and do not convey the overarching picture and design philosophy well. Primers for AS/AP are at: