Programming · free software · the open webSubscribe via RSS

How Does ActivityPub Separate Actors from Activities?

From the earlier reference collection. Read the current software blog.

ActivityPub distinguishes the account or entity performing an action from the activity that records what it did. Following a simple post delivery clarifies the role of objects and endpoints.

An actor represents an identity

In ActivityPub, an actor is an entity that can participate in the social protocol. It commonly represents an account, but the model can also describe other kinds of participants. The actor has an identity and associated properties that let software describe who is acting.

An actor is not the same thing as a particular post. One account can create many posts and perform different actions over time. Keeping identity separate from activity allows software to reason about the participant independently of the events attributed to it.

An activity describes an action

An activity expresses something an actor does, such as creating or announcing an object. A simplified flow might begin when an account writes a post. Its server constructs a Create activity that identifies the actor and refers to the post object. The activity represents the act of creating; the object represents the content created.

This distinction matters because the same object can appear in different contexts. A post can be created, shared, or deleted through activities with different meanings. A receiving system can inspect the activity type and actor rather than treating every incoming object as an unexplained blob.

Delivery connects the pieces

The originating server determines where an activity should be delivered using the relevant addressing and actor information. It sends the activity to recipients’ delivery endpoints, commonly described through inboxes. A recipient server then processes the message according to its implementation and the protocol conventions it supports.

For example, when account A creates a post addressed to account B, A’s server can deliver the Create activity to B’s server. B’s server checks the message and may make the new object available to B. The actor remains A, the activity is Create, and the object is the post.

Do not collapse transport and meaning

An HTTP request is the transport event; the ActivityPub activity is the application-level statement being delivered. Separating these layers helps with logging and troubleshooting. A successful network request does not necessarily mean every recipient displayed the content, and a retry may deliver the same activity again.

When implementing or documenting a flow, identify the actor, activity, object, and destination independently. That vocabulary makes it easier to explain attribution, content, and delivery without implying guarantees beyond the system’s actual behavior.

Suggest a correction · All posts