4.0 KiB
ActivityPub
ActivityPub is a federated protocol that defines a set of interoperable social network interactions through specific APIs. Any server that implements this protocol can communicate with the rest of the network. Mastodon, built on ActivityPub, is a popular federated alternative to Twitter with around 2.2 million users. Prior to Mastodon, projects like GNU social and Diaspora tried and failed to get federated social networks to scale. Mastodon succeeded in large part because it created a familiar user interface that looked and behaved like Twitter, allowing users who were dissatisfied to find a new place to land with minimum effort.
Identity
Users create an account on a server (an “instance”), but can communicate with users on other instances. The entire constellation of instances that can interoperate is called the “Fediverse”. A full username is a user’s handle plus the name of the instance the user belongs to, for example:
@arcalinea@mastodon.social
Account credentials are managed by the user’s instance, so if users forget their password, they can ask for a password reset.
Data Storage/Message Persistance
As a federated system, ActivityPub is not opinionated about how messages are persisted as long as each server follows the protocol requirements. Each server is expected to maintain an inbox and outbox for each of its users.
Moderation/Reputation
Each instance sets its own moderation policies, either through the unilateral decisions of an admin, or through some sort of collective vote. Admins can ban entire instances, cutting off their visibility. If an instance gets banned by many others, its users can still talk with each other, but they will be isolated from the rest of the Fediverse. This happened to Gab.com, which set up an instance.
Social/Discovery
Messages are addressed to a user at a specific server, and normal DNS and ip address routing are used to find the server addressed.
Users can push messages to the special 'public' group which makes them available to all interested users. "Like"s and "Follow"s may be used by servers to determine which public messages to accept/retrieve. For example, the followers of a user who Likes a post may receive the post in their feed.
Instances may accept delivery of messages addressed as 'public' to a shared inbox on the instance but are not required to.
Not clear if there is a global search capability.
User experience
Currently the primary user experience is in a twitter-like UI (Mas.to or Pleroma)
Privacy and Access Control
Monetization
Federated social networks require both hosting and development costs to maintain. Each instance is funded by its own administrator and community. Mastodon’s development is funded through a Patreon run by the main developer. It currently brings in about 70k a year, which supports him working on it full time, and covers hosting costs and a moderation team for the mastodon.social instance.
Interop with other systems
The spec mentions delivery to third-party apps but unsure how/how much this happens in the wild.
Requirements for interop: implement the ActivityPub protocol (are there different requirements for 3rd party receivers?)
Scalability
Metrics
In the wild
Mastodon (the largest federated network built on ActivityPub) has 2699 nodes and 2.6M users as of 5/2020 (Mastodon home page asserts 4.4M, a bit more than what the-federation.info stats provide; maybe some servers are not counted)
Pleroma is compatible but running different software, also talking the ActivityPub protocol. According to stats at the-federation.info, Pleroma has 620 nodes with 35K users as of 5/2020 Users on Mastodon and Pleroma can communicate.
Gab is running a fork of the Mastodon software but has been banned; technically users there could communicate with the others if they were not explicitly banned.