Lemmy does run on ActivityPub, but it illustrates my point, that the protocol can be used for anything that doesn’t require live streams of content like a chat room does.
Anyway, to illustrate ActivityPub, it’s really just a structure where these programs exchange JSON blobs. JSON is a text format designed to be both human-readable, but also easily interpreted by computers. Here’s an example of an ActivityPub object:
{ "@context": "https://www.w3.org/ns/activitystreams", "summary": "NEETzsche listened to a piece of music", "type": "Listen", "actor": "https://iddqd.social/api/v1/accounts/NEETzsche", "object": { "type": "Audio", "artist": "Outerspace", "title": "Aprons Off", "url": "https://www.youtube.com/watch?v=IB-04kIgFTc" } }In this one, I listen to the song Aprons Off by Outerspace. This action was be “federated” – sent around to many nodes – and then those nodes can interpret this information how they like. I have attached two images: one on my instance, and one on Marine’s instance, breastmilk.club. This Listen action is now on both of them. It’s also on yours. The only difference being, yours isn’t configured to display it. See the two attached images on one way to potentially interpret this information.
Does this illustrate just how open-ended this protocol is, in a good way? This is a petty use of the protocol, but it’s still cool. We can do things that are not so petty.