ActivityPub Basics
Basic ActivityPub concepts explained in a public-safe way.
ActivityPub is one of the main protocols used by the Fediverse. It allows different servers to communicate with each other.
What is ActivityPub?
ActivityPub is a protocol.
A protocol is a set of rules for how systems communicate.
ActivityPub lets different servers exchange social actions like:
- posts
- follows
- likes
- boosts
- replies
- profile updates
- deletes
- blocks
This is what allows people on different Fediverse servers to interact.
Simple explanation
Imagine two servers:
- example.social
- another.example
A user on example.social posts something.
A user on another.example follows them.
ActivityPub helps the two servers exchange the post so the follower can see it.
Actor
An actor is usually an account.
Example:
The actor can perform actions like:
- Create
- Follow
- Like
- Announce
- Delete
- Update
Activity
An activity is an action.
Examples:
- Create a post
- Follow a user
- Like a post
- Announce/boost a post
- Delete a post
- Update a profile
Object
The object is the thing the activity acts on.
Example:
- Activity: Create
- Object: a post
or:
- Activity: Like
- Object: a post
Inbox
Each actor/server can have an inbox.
The inbox receives ActivityPub messages from other servers.
Example:
- another.example sends a Follow activity
- example.social receives it in an inbox
Outbox
The outbox is where an actor publishes activities.
Example:
- [email protected] creates a post
- the Create activity appears in the actor outbox
- other servers may receive it
Follow
When one user follows another user on a different server, the servers exchange follow-related activities.
Example:
- @[email protected] follows @[email protected]
The servers communicate so posts can be delivered.
Create
A Create activity is commonly used when a user publishes a post.
Simple idea:
- Create โ Note
Meaning:
- create a post/note
Announce
Announce is commonly used for boosts/reposts.
Simple idea:
- Announce = boost
Like
Like is used for favourites/likes.
Simple idea:
- Like = favourite
Delete
Delete is used when content is deleted.
Other servers may receive a delete activity and remove their copy.
Federation is not instant magic
Federation depends on servers communicating successfully.
Things that can affect federation:
- server downtime
- network issues
- blocked instances
- moderation limits
- deleted posts
- private visibility
- software differences
- queue delays
Not every server sees everything
A server usually knows about content through relationships and federation.
It may know about posts because:
- a local user follows a remote account
- a post was boosted by someone visible
- a user searched for a remote account or post
- another server delivered the activity
The Fediverse is not one giant shared database.
Different software can communicate
Mastodon is not the only Fediverse software.
Other Fediverse software may include:
- Pixelfed
- PeerTube
- Lemmy
- Misskey
- Akkoma
- Pleroma
- Friendica
- WriteFreely
They can communicate because they use ActivityPub or compatible federation behavior.
Some features may not work exactly the same between platforms.
Visibility matters
Post visibility can affect federation.
Common visibility ideas:
- public
- unlisted
- followers-only
- mentioned people only
Do not treat Fediverse private posts like encrypted secure messages.
Moderation and blocks
Servers can block or limit other servers.
This affects federation.
If two servers do not federate, possible reasons include:
- server block
- domain block
- suspension
- network problem
- software problem
- moderation policy
Simple mental model
Think of ActivityPub like mail between servers.
- User posts something
- Server creates an activity
- Server sends activity to other servers
- Other servers receive it
- Followers see the post
It is not exactly email, but the idea of independent servers exchanging messages is similar.
Why ActivityPub matters
ActivityPub allows:
- decentralized social networks
- different servers to communicate
- different platforms to interact
- users to choose communities
- less dependence on one central company