ActivityPub protocol: Rich message-oriented vs. CRUD-based interop?

Following up here to @helge’s response to the Valueflows FEP as I do not want to derail the Valueflows-related discussion on SocialHub.

TL;DR: I have a strong preference for using Create, Update, and Delete as much as possible.

While I understand that a CRUD-like extension is easiest to facilitate by other impls, I wonder what that means for the fedi as a whole if that becomes the common practice. Doing CRUD isn’t very semantically meaningful. Imho AS/AP have “Activity” in their name for a reason. It should be a message-oriented distributed network for the exchange of activities. That goes well beyond CRUD. By having meaningful activity-types different ‘business domains’ can be accurately expressed.

(This has some touchpoints wrt my musings on Domain Driven Design versus ActivityPub.)

@lynnfoster what are your thoughts here re:valueflows?

@aschrijver thanks for starting this maybe less formal way to discuss. I’m really looking forward to getting more feedback in the FEP discussion, but here, maybe we can be more free with partially formed thoughts… for example…

I do understand your impulse to actually give “activity” the semantics it seems to want, I also have that impulse. But as of right now I lean towards @helge 's view, same as our original decision with Bonfire, to use CRUD. (Also maybe Accept/Reject, Add/Remove kinds of things, whatever we need for just the mechanics of moving and distributing messages, which I haven’t explored yet.)

Thought process:

I find the list of AS activities confusing semantically. They seem to me to be a mixed bag, apples and oranges kind of thing, and not all the oranges. Like offer but not request. And the verb/object kind of thing could go both ways. For example, why not use Note as a verb and make it an activity? Or for Valueflows, is Plan a verb or a noun? If we go towards thinking of AP as a distributed messaging mechanism using the actor model, and use only activities that have to do with that mechanism, and put the “business content” into the object, it cleans things up quite a bit. Seems more modular to me, do one thing well. Or maybe there is something about protocol vs vocabulary operating. (Not that I’m super deep into AP/AS. I’ve read the specs a bunch of times, but haven’t implemented them, so consider my knowledge pretty shallow actually.)

But, even just thinking VF, I’m not sure what our list of activities would look like, because VF has maybe 3 dimensions instead of 1: 1) the type of activity (produce, consume, transfer, etc., which are activity-like verbs that we call actions); 2) all the flows, which are the edges in the graph (recipe flow, intent, commitment, economic event, claim), each of which uses the whole collection of actions; 3) something like the user perspective triggers, like offer, request, plan, agree, commit, do, finish, or something like that, it would take more thought. Anyhow, VF is a very simple and elemental model for something that covers a whole capitalist ERP (Enterprise Resource Planning) system plus any post-capitalist or transitional economic schemes we have heard of. But it is more complex than just activity-object. And most domain models will probably also be more complex, so shoe-horning them into activity-object seems hard, but also maybe counter-productive, compared to finding the one sweet-spot connecting place?

Separately, the whole issue of how to evolve or extend the AP/AS specs, using any domain specific spec, is daunting. Somehow adding activity types seems more “permanent” or “visible” than adding object types, although again, maybe I’m wrong due to lack of experience. But if I’m not, how and where does all that governance happen? Like, if we want to add economic activities, VF has its own model and perspective that we think is the way to go for the future, but it doesn’t look like most enterprise-based seo-based economic models, think goodrelations or schema.org. In fact some years ago in ISO, the committee basically split between REA and UBL and ended up with 2 standards, if I understand that history correctly. They don’t have to be, but standards efforts can be political things, sometimes competitive; and if they wanted to, schema.org (supported by several giant tech companies) could probably crush VF (all volunteer, probably a dozen people at the most working at one time), even though VF (REA based) is a far superior model going forward, imo. Even if not all of that, it does take a lot of time and thought to reconcile different models for the same domain.

So, if we push domain information into new AS object types instead of activity types, can we more easily support various strains of any domain, whether economic, governance, social, or whatever? Can we more easily support different levels of domains, like economic vs food, for example? Can we more easily evolve organically, rather than thinking we need long involved standards processes for all parties who work in a domain to agree on a set of activities? Can we keep AP/AS less entangled with other domain specs going forward? Is there another sweeter spot touch point? Dunno!

1 Like