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:

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