Communication protocol | |
Abbreviation | AP |
---|---|
Purpose | Decentralized social networking |
Developer(s) | World Wide Web Consortium, Christine Lemmer-Webber, Evan Prodromou, et al. |
Introduction | January 23, 2018 |
Based on | ActivityStreams, JSON-LD |
Influenced | AT Protocol [1] |
Website | activitypub |
ActivityPub is a protocol and open standard for decentralized social networking. It provides a client-to-server (shortened to C2S) API for creating and modifying content, as well as a federated server-to-server (S2S) protocol for delivering notifications and content to other servers. [2] ActivityPub has become the main standard used in the fediverse, a popular network used for social networking that consists of software such as Mastodon, Pixelfed and PeerTube. [3]
ActivityPub is considered to be an update to the ActivityPump protocol used in pump.io, and the official W3C repository for ActivityPub is identified as a fork of ActivityPump. [4] [5] The creation of a new standard for decentralized social networking was prompted by the complexity of OStatus, the most commonly used protocol at the time. OStatus was built using a multitude of technologies (such as Atom, Salmon, WebSub and WebFinger), a product of the infrastructure used in GNU social (the originator and largest user of the OStatus protocol), which made it difficult to implement the protocol into new software. OStatus was also only designed to work with microblogging services, with little flexibility to the types of data that it could hold.
The standard was first published by the World Wide Web Consortium (W3C) as a W3C Recommendation in January 2018 by the Social Web Working Group (SocialWG), a working group chartered to build the protocols and vocabularies needed to create a standard for social functionality. [6] Shortly after, further development was moved to the Social Web Community Group (SocialCG), the successor to the SocialWG.
ActivityPub uses the ActivityStreams 2.0 format for building its content, which itself uses JSON-LD. The three main data types used in ActivityPub are Objects, Activities and Actors. Objects are the most common data type, and can be images, videos, or more abstract items such as locations or events. Activities are actions that create and modify objects, for example a Create
activity creates an object. Actors are representative of an individual, a group, an application or a service, and are the owners of objects.
Every actor type contains an inbox and outbox stream, which sends and receives activities for a user. In order to publish data (for example liking an article), a user creates an activity that declares that they liked an Article object and publishes it to their outbox, where it is then delivered by the ActivityPub server via a POST request to the inboxes listed in the activity's to
, bto
, cc
and bcc
fields. The receiving servers then accounts for the newly received activity and updates the article by adding the like action to it.
An example actor object that represents a user account: [7]
{"@context":["https://www.w3.org/ns/activitystreams",{"@language":"ja"}],"type":"Person","id":"https://kenzoishii.example.com/","following":"https://kenzoishii.example.com/following.json","followers":"https://kenzoishii.example.com/followers.json","liked":"https://kenzoishii.example.com/liked.json","inbox":"https://kenzoishii.example.com/inbox.json","outbox":"https://kenzoishii.example.com/feed.json","preferredUsername":"kenzoishii","name":"石井健蔵","summary":"この方はただの例です","icon":["https://kenzoishii.example.com/image/165987aklre4"]}
An example activity that likes an article object:
{"@context":["https://www.w3.org/ns/activitystreams",{"@language":"en"}],"type":"Like","actor":"https://dustycloud.org/christine/","summary":"Christine liked 'Minimal ActivityPub update client'","object":"https://rhiaro.co.uk/2016/05/minimal-activitypub","to":["https://rhiaro.co.uk/#amy","https://dustycloud.org/followers","https://rhiaro.co.uk/followers/"],"cc":"https://e14n.com/evan"}
An example article object:
{"@context":["https://www.w3.org/ns/activitystreams",{"@language":"en-GB"}],"id":"https://rhiaro.co.uk/2016/05/minimal-activitypub","type":"Article","name":"Minimal ActivityPub update client","content":"Today I finished morph, a client for posting ActivityStreams2...","attributedTo":"https://rhiaro.co.uk/#amy","to":"https://rhiaro.co.uk/followers/","cc":"https://e14n.com/evan"}
Lead author Christine Lemmer-Webber notes that the team predominantly identified as queer, which led to features that help users and administrators protect against "undesired interaction." She also notes that the team authoring ActivityPub had no corporate participation. [8]
The SocialCG previously organized a yearly free conference called ActivityPub Conf about the future of ActivityPub. [9] [10] Triages are held regularly to review issues pertaining to the ActivityPub and ActivityStreams 2.0 specifications as part of the SocialCG. [11]
In 2023, Germany's Sovereign Tech Fund donated €152,000 to socialweb.coop with the goal of building a new suite for testing various ActivityPub implementations and their compliance with the specification. [12]
The initial wave of adoption for ActivityPub (circa 2016-2018) came from software that was already using OStatus as their federation protocol, such as Mastodon, GNU social and Pleroma. [13] Following the acquisition of Twitter by Elon Musk in 2022, many groups of users that were critical of the acquisition migrated to Mastodon, bringing new attention to the ActivityPub protocol with it. [14] Various major social media platforms and corporations have since pledged to implement ActivityPub support, including Tumblr, [15] Flipboard [16] and Meta Platforms' Threads. [17]
Poorly optimized ActivityPub implementations can cause unintentional distributed-denial-of-service attacks on other websites and servers, due to the decentralized nature of the network.[ citation needed ] An example would be Mastodon's implementation of OpenGraph link previews, wherein every instance that receives a post that contains a link with OpenGraph metadata will download the associated data, such as a thumbnail, in a very short timeframe, which can slow down or crash servers as a result of the sudden burst of requests. [18] [19]
ActivityPub has been criticized for not natively supporting moving accounts from one server to another, forcing implementations to build their own solutions. [20] While there has been work on building a standardized system for migrating accounts using the Move activity via the Fediverse Enhancement Proposal organization, the current proposal only allows for basic follower migration, with all other data remaining linked to the original account. [21]
ActivityPub implementations have been criticized for missing replies and parts of reply threads from remote posts, and presenting outdated statistics (e.g. likes and reposts) about remote posts. [22] [23] However, this isn't a problem with the ActivityPub protocol itself, but with implementations not refreshing their content for updated data when needed. [24] [25] [ citation needed ]
The username format commonly used by ActivityPub software (acct URIs with the scheme replaced by an at sign, an example being @w3c@w3c.social
) has been criticized for being too complex for most users to understand. However, ActivityPub itself supports any URI as a username, and it is a limitation of Mastodon and other ActivityPub implementations, not the protocol itself. [3] [ citation needed ]
Software name | Total users [26] [27] | Initial ActivityPub-compatible release |
---|---|---|
Castopod | ? | 2020 [28] |
Funkwhale | 11,448 | 2018 [29] |
Software name | Total users [26] [27] | Initial ActivityPub-compatible release | Fork of |
---|---|---|---|
Akkoma | 18,108 | 2022 [30] | Pleroma |
Epicyon | 3 | 2019 [31] | |
Firefish (f. Calckey) | 19,695 | 2022 [32] | Misskey |
GNU social (f. StatusNet; orig. Laconica) | 368 | 2018 [33] | |
GoToSocial | 1,919 | 2021 [34] | |
Honk | 7 | 2019 [35] | |
Iceshrimp | 3,096 | 2023 | Firefish |
Mastodon | 9,630,383 | 2017 [36] | |
Micro.blog | 168,418 | 2021 [37] | |
microblog.pub | 66 | 2022 [38] | |
Misskey | 849,930 | 2018 | |
Nextcloud Social | ~50 | 2018 [39] | |
Pleroma | 138,294 | 2018 [40] | |
Plume [41] | 25,290 | 2018 [42] | |
Sharkey | 11,061 | 2023 | Misskey |
Snac [43] | 176 | 2022 [44] | |
Socialhome | 2,325 | 2016 [45] | |
Takahē | 278 | 2022 [46] | |
Threads | 130,000,000 (February 2024) [47] | 2023 [48] | |
Wafrn [49] | 891 | 2023 | |
WordPress [50] [51] | 6,000+ blogs [52] | 2023 [53] | |
WriteFreely | 160,761 | 2018 [54] |
Software name | Total users [26] [27] | Initial ActivityPub-compatible release |
---|---|---|
BookWyrm [55] | 27,698 | 2021 [56] |
Inventaire.io [57] | ? | 2021 |
Software name | Total users [26] [27] | Initial ActivityPub-compatible release | Fork of |
---|---|---|---|
Flipboard [58] | 145,000,000 (February 2023) [59] | 2023 [60] [61] | |
kbin [62] | 66,320 | 2023 | |
Lemmy [63] | 392,074 | 2019 | |
lotide [64] | 457 | 2020 [65] | |
mbin [66] | 5,490 | 2023 | kbin |
Software name | Total users [26] [27] | Initial ActivityPub-compatible release | Type |
---|---|---|---|
Friendica (f. Friendika; orig. Mistpark) [67] | 20,069 | 2019 | Blogging, event management, groups, image gallery |
Gancio [68] | 1,273 | 2020 [69] | Calendar, event planner |
Guppe [70] | ? | 2021 [71] | Groups |
Hubzilla (f. RedMatrix; orig. Friendica-Red) [72] | 5,748 | 2015 | Blogging, event planner, file hosting, image gallery, wiki |
Libervia [73] | ? | 2022 (in beta) | Blogging, event management, file sharing, instant messaging |
Matrix (via bridges) [74] | - | 2021 | Instant messaging |
Mobilizon | 45,503 | 2020 | Event management, groups |
Owncast [75] | 240 | 2022 | Live streaming |
PeerTube [76] | 351,142 | 2018 | Video sharing |
Pixelfed [77] | 18,733 | 2018 | Image sharing |
Postmarks [78] | 29 | 2023 [79] | Social bookmarking |
Streams [80] | ? | 2022 [81] | Blogging, image sharing, wiki |
Zap [82] | 22 | 2019 [83] | Blogging, file hosting, image gallery |
OpenSocial is a public specification that outlines a set of common application programming interfaces (APIs) for web applications. Initially designed for social network applications, it was developed collaboratively by Google, MySpace and other social networks. It has since evolved into a runtime environment that allows third-party components, regardless of their trust level, to operate within an existing web application.
A distributed social network or federated social network is an Internet social networking service that is decentralized and distributed across distinct service providers, such as the Fediverse or the IndieWeb. It consists of multiple social websites, where users of each site communicate with users of any of the involved sites. From a societal perspective, one may compare this concept to that of social media being a public utility.
WebFinger is a protocol specified by the Internet Engineering Task Force IETF in RFC 7033 that allows for discovery of information about people and things identified by a URI. Information about a person might be discovered via an acct:
URI, for example, which is a URI that looks like an email address.
OStatus is an open standard for decentralized social networking, allowing users on one service to send and receive status updates with users from another. The standard describes how a suite of various standards, including Atom, Activity Streams, WebSub, Salmon, and WebFinger, can be used together, which enables different microblogging server implementations to communicate status updates between their users back-and-forth, in near real-time.
WebSub is an open protocol for distributed publish–subscribe communication on the Internet. Initially designed to extend the Atom protocols for data feeds, the protocol can be applied to any data type as long as it is accessible via HTTP. Its main purpose is to provide real-time notifications of changes, which improves upon the typical situation where a client periodically polls the feed server at some arbitrary interval. In this way, WebSub provides pushed HTTP notifications without requiring clients to spend resources on polling for changes.
JSON-LD is a method of encoding linked data using JSON. One goal for JSON-LD was to require as little effort as possible from developers to transform their existing JSON to JSON-LD. JSON-LD allows data to be serialized in a way that is similar to traditional JSON. It was initially developed by the JSON for Linking Data Community Group before being transferred to the RDF Working Group for review, improvement, and standardization, and is currently maintained by the JSON-LD Working Group. JSON-LD is a World Wide Web Consortium Recommendation.
Friendica is a free and open-source software distributed social network. It forms one part of the Fediverse, an interconnected and decentralized network of independently operated servers.
Distributed social network projects generally develop software, protocols, or both.
pump.io is a software package containing a social networking service and communication protocol that can be used as a federated social network. Started by Evan Prodromou, it is a follow-up to his previous microblogging software StatusNet and its OStatus protocol. It is designed to be more lightweight and usable for general activity streams instead of the predecessor's focus on microblogging timelines, with its goal being to achieve "most of what people want from a social network".
PeerTube is a free and open-source, decentralized, ActivityPub federated video platform powered by WebTorrent, that uses peer-to-peer technology to reduce load on individual servers when viewing videos.
Mastodon is free and open-source software for running self-hosted social networking services. It has microblogging features similar to Twitter, which are offered by a large number of independently run nodes, known as instances or servers, each with its own code of conduct, terms of service, privacy policy, privacy options, and content moderation policies.
The fediverse is a collection of social networking services that can communicate with each other using a common protocol. Users of different websites can send and receive status updates, multimedia files and other data across the network. The term fediverse is a portmanteau of "federation" and "universe".
Micropub (MP) is a W3C Recommendation that describes a client–server protocol based on HTTP to create, update, and delete posts on servers using web or native app clients. Micropub was originally developed in the IndieWebCamp community, contributed to W3C, and published as a W3C working draft on January 28, 2016.
Pleroma is a free and open-source microblogging social networking service. Unlike popular microblogging services such as Twitter or Weibo, Pleroma can be self-hosted and operated by anyone with a server and a web domain, a combination commonly referred to as an instance. Instance administrators can manage their own code of conduct, terms of service, and content moderation policies, allowing users to have more control over the content they view as well as their experience. It was named after the religious concept of pleroma, or the totality of divine powers.
Pixelfed is a free and open-source image sharing social network service. The platform uses a decentralized architecture which is roughly comparable to e-mail providers, meaning user data is not stored on one central server. It uses the ActivityPub protocol, allowing users to interact with other social networks within the protocol, such as Mastodon, PeerTube, and Friendica. Pixelfed and other platforms utilizing this protocol are considered to be part of the Fediverse.
Lemmy is a free and open-source software for running self-hosted social news aggregation and discussion forums. These hosts, known as "instances", communicate with each other using the ActivityPub protocol.
Nostr is an open protocol for decentralized message transmission, with the intention to be able to resist internet censorship while maintaining session integrity. Nostr consists of users publishing content via a cryptographic key pair to a "relay", a WebSocket server which sends and receives content for users that subscribe to it. This allows the network to verify users and achieve account portability on Nostr, as users have to sign all posts using their key pair to post under its identity and have to maintain access to it themselves.
Christine Lemmer-Webber is a software engineer, best known for her lead authorship and co-editorship of ActivityPub. She is currently the Executive Director at Spritely Institute.
Misskey is a free and open-source social networking service. Created in 2014 by Japanese software engineer Eiji "syuilo" Shinoda, Misskey was originally developed as bulletin board software. A microblogging feature similar to Twitter was added to the platform, which eventually became the main format of the service. The name Misskey comes from the lyrics of Brain Diver, a song by the Japanese band May'n.
The AT Protocol is a protocol and open standard for decentralized social networking services. It is under development by Bluesky Social PBC, a public benefit corporation originally created as an independent research group within Twitter to investigate the possibility of decentralizing the service.