First, it's worth noting that ActivityPub is built on ActivityStreams which is in turn built on ActivityVocabulary. It is necessary to read all of these to have a full understanding of what the stuff in AP actually means. It is also worth reading up on LDN and JSON-LD as those are also used in the spec.
I think you are right in AP being a bit more oriented toward social media in the vein of twitter or facebook and less like reddit, but really a lot of it comes down to how an AP implementing server interprets the objects it receives. I'm not sure if anywhere near this level of customization would be possible if everything spoke pure AP (which does have a client-server interface, not just a server-server federation interface) rather than your clients interacting with bespoke "lemmy" or "mastodon" or whatever APIs.
As far as lemmy goes I think they may have extended the objects a little, as there is a lemmy NS included in results, which is what most implementations including big ones like Mastodon do to introduce new fields (such as content warnings in the case of Mastodon) to things like a Note. Lemmy adds info like postingRestrictedToMods
, matrixUserId
, and moderators
.
As far as objects:
- A community is a Group.
- A post is a Page with an
audience
of the community and anattributedTo
of your user (to
the community and special public endpoint). - A comment is a Note that is
inReplyTo
its parent (post or comment), to the special public endpoint and CCing the author of the parent and the community.
As far as actions, I am less sure because it is less easy to inspect without reading the lemmy code or setting up something to get federated to, but AFAICT:
- Upvotes and downvotes are Like and Dislike
- Create is used when you as a user want to make a post in a community
- Announce is used when a post actually gets made in a community
- I think Announce is used for other things and might explain some of how comments work as well, as a post seems to live on the community instance but a comment seems to live on your instance.