How Can We Help?
You are here:
< Back

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 a 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 Incubator Community Group (SocialCG), the successor to the SocialWG.

Design

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.

Example data

An example actor object that represents an 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/chris/",
  "summary": "Chris 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"
}

Project status

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]

Adoption

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]

Criticism

Accidental denial-of-service attacks

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]

Account migration

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]

Missing content and data

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]

Username format

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 using ActivityPub

Audio hosting

Software name Total users[26][27] Initial ActivityPub-compatible release
Castopod ? 2020[28]
Funkwhale 11,448 2018[29]

Blogging

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
Socialhome 2,325 2016[43]
Takahē 278 2022[44]
Threads 130,000,000 (February 2024)[45] 2023[46]
Wafrn[47] 891 2023
Wordpress[48][49] 6,000+ blogs[50] 2023[51]
WriteFreely 160,761 2018[52]

Book cataloging

Software name Total users[26][27] Initial ActivityPub-compatible release
BookWyrm[53] 27,698 2021[54]
Inventaire.io[55] ? 2021

Social news

Software name Total users[26][27] Initial ActivityPub-compatible release Fork of
Flipboard[56] 145,000,000 (February 2023)[57] 2023[58][59]
kbin[60] 66,320 2023
Lemmy[61] 392,074 2019
lotide[62] 457 2020[63]
mbin[64] 5,490 2023 kbin

Other/Multi-format

Software name Total users[26][27] Initial ActivityPub-compatible release Type
Friendica
(f. Friendika; orig. Mistpark)[65]
20,069 2019 Blogging, image gallery, event planner, groups
Gancio[66] 1,273 2020[67] Events, calendar
Guppe[68] ? 2021[69] Groups
Hubzilla
(f. RedMatrix; orig. Friendica-Red)[70]
5,748 2015 CMS, blogging, wiki, image gallery, file hosting
Libervia[71] ? 2022 (in beta) Instant messaging, microblogging, blogging, file sharing, event management
Mobilizon 45,503 2020 Event and group management
Owncast[72] 240 2022 Live video streaming
PeerTube[73] 351,142 2018 Video sharing
Pixelfed[74] 18,733 2018 Image sharing
Postmarks[75] 29 2023[76] Bookmarking
Streams[77] ? 2022[78] Blogging, wiki, image sharing
Zap[79] 22 2019[80] Blogging, image gallery, file hosting

Future implementations

See also

References

  1. ^ "FAQ | AT Protocol". atproto.com. Retrieved 2024-06-20.
  2. ^ "W3C Recommendation 23 January 2018".
  3. ^ a b Pierce, David (2024-02-07). "The fediverse, explained". The Verge. Retrieved 2024-06-20.
  4. ^ w3c/activitypub, World Wide Web Consortium, 2024-06-20, retrieved 2024-06-22
  5. ^ "Sandstorm and the Social Web". zenhack.net. 29 May 2016.
  6. ^ "Social Web Working Group". W3C. Retrieved 2024-06-23.
  7. ^ "ActivityPub Specification". W3C. January 23, 2018. Retrieved June 22, 2024.{{cite web}}: CS1 maint: url-status (link)
  8. ^ Klemmens, Ben (2023-01-02). "Mastodon—and the pros and cons of moving beyond Big Tech gatekeepers". Ars Technica. Retrieved 2023-01-18.
  9. ^ "ActivityPub Conf 2019".
  10. ^ "ActivityPub Conf 2020". Archived from the original on 2021-06-02. Retrieved 2020-08-01.
  11. ^ "W3C Social Web Incubator Community Group Mailing List". Retrieved March 18, 2024.
  12. ^ "ActivityPub Test Suite". Sovereign Tech Fund. Retrieved 2024-05-26.
  13. ^ "Pleroma Encyclical: ActivityPub". blog.soykaf.com. 2018-02-10. Retrieved 2024-06-23.
  14. ^ MacManus, Richard (2022-11-15). "Devs Are Excited by ActivityPub, Open Protocol for Mastodon". The New Stack. Retrieved 2024-06-23.
  15. ^ Perez, Sarah (2022-11-21). "Tumblr to add support for ActivityPub, the social protocol powering Mastodon and other apps". TechCrunch. Retrieved 2024-06-23.
  16. ^ McCue, Mike (2023-12-18). "Flipboard Begins to Federate". Flipboard. Retrieved 2024-06-23.
  17. ^ Guinness, Harry (2023-07-12). "How ActivityPub is setting the stage to weave all your social media feeds together". Popular Science. Retrieved 2024-06-23.
  18. ^ "Please Don't Share Our Links on Mastodon: Here's Why!". It's FOSS News. 2024-05-01. Retrieved 2024-06-18.
  19. ^ Balkan, Aral (2022-11-09). "Is the fediverse about to get Fryed? (Or, 'Why every toot is also a potential denial of service attack')". ar.al. Retrieved 2024-06-18.
  20. ^ "FAQ | AT Protocol". atproto.com. Retrieved 2024-06-20.
  21. ^ fediverse. "FEP-7628". Codeberg.org. Retrieved 2024-06-20.
  22. ^ Wave, Setsune (2023-12-17). "This is a serious problem the fediverse has..." Furries.club. Retrieved 2024-06-18.
  23. ^ Armando, Armando (2024-06-19). "I think one of the things that most annoy newcomers to the #Fediverse is..." Fedia.Social. Retrieved 2024-06-19.
  24. ^ Nedelcu, Alexandru (2022-12-21). "Missing replies · Mastodon · Discussion #22608". GitHub. Retrieved 2024-06-18.
  25. ^ Prodromou, Evan (2024-06-19). "All of that information is available through ActivityPub..." CoSocial. Retrieved 2024-06-19.
  26. ^ a b c d e "Fediverse Observer". fediverse.observer. Retrieved 2024-06-22.
  27. ^ a b c d e "FediDB, Fediverse Network Statistics". fedidb.org. Retrieved 2024-06-22.
  28. ^ "Release v1.0.0-alpha.1: chore(release): 1.0.0-alpha.1 [skip ci] · ad-aures/castopod". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  29. ^ Collective, Funkwhale. "Funkwhale Blog ~ Funkwhale 0.17 is out!". blog.funkwhale.audio. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  30. ^ "Akkoma: A vision to refocus Pleroma". Coffee and Dreams. 24 June 2022. Archived from the original on July 1, 2023. Retrieved July 25, 2023.
  31. ^ "Epicyon 1.0 release | LibreServer Blog". blog.libreserver.org. Archived from the original on June 9, 2023. Retrieved July 25, 2023.
  32. ^ "firefish". Codeberg.org. Archived from the original on July 26, 2023. Retrieved July 26, 2023.
  33. ^ diogo. "diogo/gnu-social". notabug.org. Retrieved 2024-06-22.
  34. ^ "Release v0.1.0 · superseriousbusiness/gotosocial". GitHub. Archived from the original on July 22, 2023. Retrieved July 25, 2023.
  35. ^ "honk 0.1". flak.tedunangst.com. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  36. ^ "Release v1.6.0 · mastodon/mastodon". GitHub. Retrieved 2024-06-22.
  37. ^ "ℹ️ Mastodon and ActivityPub". Micro.blog Help Center. 2021-03-08. Retrieved 2024-06-22.
  38. ^ "Release 2.0.0-rc.1 · tsileo/microblog.pub". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  39. ^ Poortvliet, Jos (10 December 2018). "Nextcloud introduces social features, joins the fediverse". Nextcloud. Archived from the original on December 10, 2018. Retrieved December 10, 2018.
  40. ^ "ActivityPub in Pleroma". blog.soykaf.com. 2018-03-04. Retrieved 2024-06-22.
  41. ^ joinplu.me. "Plume". Archived from the original on May 10, 2019. Retrieved May 2, 2019.
  42. ^ "Release 0.2.0 (Alpha 1) · Plume-org/Plume". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  43. ^ "Release v0.1.1: Merge pull request #6 from jaywink/travisify · jaywink/socialhome". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  44. ^ "Release 0.3.0 · jointakahe/takahe". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  45. ^ Perez, Sarah (February 2024). "Threads now reaches more than 130 million monthly users, says Meta, up 30M from Q3". TechCrunch. Archived from the original on 2 February 2024. Retrieved 1 February 2024.
  46. ^ Davis, Wes (2023-12-13). "Threads is officially starting to test ActivityPub integration". The Verge. Retrieved 2024-06-22.
  47. ^ García, Gabriel Amador (2024-06-21), gabboman/wafrn, retrieved 2024-06-22
  48. ^ "ActivityPub for WordPress". Github. Retrieved 7 July 2023.
  49. ^ "Engage a Wider Audience With ActivityPub on WordPress.com". WordPress. Retrieved 2023-10-12.
  50. ^ Pfefferle, Matthias; Automattic. "ActivityPub". WordPress.org. Retrieved 2024-06-23.
  51. ^ Sato, Mia (2023-10-11). "WordPress now offers official support for ActivityPub". The Verge. Retrieved 2024-06-23.
  52. ^ WriteFreely (2018-11-10). "Hello, World". WriteFreely. Retrieved 2024-06-22.
  53. ^ bookwyrm. "Bookwyrm". Archived from the original on May 26, 2021. Retrieved May 26, 2021.
  54. ^ "BookWyrm (@bookwyrm@tech.lgbt)". LGBTQIA+ Tech Mastodon. 6 May 2021. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  55. ^ "Inventaire toot". mamot.fr. December 7, 2021. Archived from the original on August 28, 2022. Retrieved October 17, 2022.
  56. ^ Perez, Sarah (23 May 2023). "Flipboard becomes first app to support Bluesky, Mastodon and Pixelfed all in one place". TechCrunch. Retrieved 7 July 2023.
  57. ^ "Twitter, Who? Flipboard Adds Mastodon Features, Pushing Further Into Social Networking". CNET. Retrieved 2024-06-23.
  58. ^ "Flipboard is pivoting to ActivityPub and the fediverse". The Verge. Dec 18, 2023.
  59. ^ McCue, Mike (19 December 2023). "Flipboard Begins to Federate". Medium. Retrieved 2 January 2024.
  60. ^ "kbin.pub - Fediverse of content". kbin.pub. Archived from the original on July 25, 2023. Retrieved July 24, 2023.
  61. ^ "Lemmy - ActivityPub for link aggregation". nlnet.nl. Retrieved 2023-06-05.
  62. ^ "lotide". Archived from the original on October 31, 2020. Retrieved October 29, 2020.
  63. ^ "Release v0.1.1 · lotide-org/lotide". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  64. ^ MbinOrg/mbin, Mbin, 2024-06-22, retrieved 2024-06-23
  65. ^ "Friendica 2019.01 released". Retrieved 2019-01-24.
  66. ^ "Home". Gancio. Archived from the original on July 24, 2023. Retrieved July 24, 2023.
  67. ^ "v0.21.0 · les / gancio · GitLab". GitLab. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  68. ^ immers-space. "Decentralized social groups for ActivityPub". GitHub. Archived from the original on November 22, 2022. Retrieved November 22, 2022.
  69. ^ "Release First major release · immers-space/guppe". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  70. ^ "Hubzilla - Frequently asked questions". hubzilla.org. Archived from the original on July 25, 2023. Retrieved July 25, 2023.
  71. ^ "Libervia progress note 2022-W45". salut-a-toi.org. November 2022.
  72. ^ "Owncast v0.0.11". March 5, 2022. Archived from the original on March 5, 2022. Retrieved March 5, 2022.
  73. ^ "Server-Server - ActivityPub implementation reports". Retrieved 2019-01-02.
  74. ^ Krasnoff, Barbara (August 2022). "Eight photo-centric social sites that are not Instagram". The Verge.
  75. ^ "postmarks". github.com. Archived from the original on September 15, 2023. Retrieved October 7, 2023.
  76. ^ "Postmarks". GitHub. Archived from the original on September 23, 2023. Retrieved October 7, 2023.
  77. ^ "streams". Codeberg.org. Archived from the original on July 9, 2023. Retrieved November 2, 2022.
  78. ^ "Official release". Mike Macgirvin. Archived from the original on December 13, 2023. Retrieved September 23, 2023.
  79. ^ "Zap". zotlabs.org. Archived from the original on June 20, 2023. Retrieved July 25, 2023.
  80. ^ "Zap". zotlabs.org. Retrieved 2024-06-23.
  81. ^ "Support ActivityPub for merge requests (&11247) · Epics · GitLab.org · GitLab". GitLab. Retrieved 2023-08-26.
  82. ^ Ahooja, Anuj (2024-04-22). "Substack Competitor Ghost Announces ActivityPub Integration". We Distribute. Retrieved 2024-04-28.
  83. ^ "First forgejo monthly update - December 2022". forgejo.org. Retrieved 2023-08-29.
  84. ^ Perez, Sarah (2023-12-11). "Tumblr's 'fediverse' integration is still being worked on, says owner and Automattic CEO Matt Mullenweg". TechCrunch. Retrieved 2023-12-19.
  85. ^ Perez, Sarah (2022-11-21). "Tumblr to add support for ActivityPub, the social protocol powering Mastodon and other apps". TechCrunch. Retrieved 2023-12-19.

External links

Categories
Table of Contents