"At long last, the Activity Streams 2.0 specification is nearing W3C Candidate Recommendation stage. Hopefully the CR will post sometime…"
Snell: Activity Streams 2.0 Announcement
Discussion of an early form of AS 2 and using microservices with it (2014, prior to the ActivityPub spec).
Social Micro-Services: Activity Streams 2.0
A historical free software manifesto with participation from the social web folks.
"A career-long journey to build online social networks that cannot be controlled by a single company, culminating with the ActivityPub standard."
Evan Prodromou: Distributed social networks History
Jaseur is an ActivityPub server implementation in C++ developed using AI agent technology.
Describes how poll votes are represented by Mastodon using ActivityPub.
Discussion of how Mastodon adapts ActivityPub to represent Polls (using the AP Question activity).
"Most issues with ActivityPub stem from one critical flaw: much of its behaviour is undefined. The core types and activities allow interactions that make little practical sense."
ActivityPub: The Good, the Bad and the Ugly
A version control system for RDF datasets. The second article in the series has an interesting discussion of "speech acts" which are sometimes claimed to be the inspiration for AS2.
"What if we were all just a bunch of allowlist-only servers talking to each other, in the process creating an entirely new network? A pr..."
Linked data alternative to ActivityPub's Update activity.
A potential replacement for the broken ActivityPub Update activities. However, this is based on Linked Data, so it's not a good choice for ActivityPub's JSON orientation.
An interesting discussion from 2001 about distributing RDF diffs/patches. In some ways, ActivityPub can be viewed as distributing diffs to the "social graph" that remote servers use to patch their local social subgraph.
RDF Diff, Patch, Update, and Sync -- Design Issues
"Fediverse applications that you can run local to have easily deployable versions to test/develop against."
"Explore the open social web through the lens of ActivityPub and the fediverse."
BrowserPub · A browser for exploring ActivityPub and the fediverse
"In order to lower the barrier for developers towards Linked Data consumption, the Linked Open Data cloud needs to be queryable with GraphQL as well. In this article, we introduce GraphQL-LD, an approach that consists of a method for transforming GraphQL queries coupled with a JSON-LD context to SPARQL, and a method for converting SPARQL results to the GraphQL query-compatible response. "
GraphQL-LD: Linked Data Querying with GraphQL
“Fediblock is a constant point of contention on the fediverse. And the tag has taken a life of its own.”
Research into account portability with Mastodon.
Fediverse Migrations: A Study of Account Portability on Mastodon
Discussion of Mastodon user experience and users that tried it and later moved to BlueSky.
Mastodon Is Easy and Fun Except When It Isn’t
“The Social Web Foundation is a new non-profit for the W3C standard, ActivityPub. But it doesn't include Bluesky, which W3C's founder uses.”
Social Web Foundation Launched — How In Is W3C on Fediverse?
Discussion of how to use alternative URL schemes (like magnet and ipfs) could be used to store ActivityPub content so it is not tied to a specific domain. (Needs community support to implement it.)
“ Bluesky [is] the most interesting experiment in social media. It has recently both opened up federation, but even more interestingly it has abstracted out the moderation layer (along with open sourcing tooling for people to use). This means that anyone can provide moderation services, and users can pick who they want to moderate their experience.”
Why Bluesky Remains The Most Interesting Experiment In Social Media, By Far
Discussion of benefits of decentralization and the difference between Mastodon and Bluesky.
Nobody cares about decentralization until they do
Overview of the important components of a Mastodon installation.
Discussion about data portability in the social web (ActivityPub and beyond).
The Challenge of ActivityPub Data Portability
Federated single-user microblogging software with a Mastodon API.
Hollo: federated single-user microblogging software
"A service-type ActivityPub actor that will re-broadcast anything sent to it to anyone who subscribes to it."
"From August 15th, 2023 to August 24th, 2023 Red Planet Labs operated a Twitter-scale Mastodon instance at to demonstrate the power of our programming platform, Rama. The source code for the instanc…"
FeatherPub is an implementation of ActivityPub aimed at solving several problems with the Recommendation.
Jo Freeman - Discussions about the risks of not having organization structure. Not directly Fedi-related, but this article is sometimes used to describe the problems with the Fediverse's ability to "get things done".
"Occasionally there are online discussions about using schema.org vocabularies with ActivityPub (AP) and Activity Streams 2.0 (AS2). There are many ways to do this, but this article will explore one approach..."
Testing framework for network servers, including federated social network servers.
(2019) "If you're looking for social media options where the user has more control, you'll find a range of options to explore in the Fediverse, including t..."
"And before I get into why Mastodon (as is) will fail, I want dissect all of the things Mastodon does right, and why it’s such an important stepping stone in the decentralized computing movement in general."
"Behind the complicated history of two supernetworks, and their potential future."
Tom Coates' notes from the Meta Fediverse summit in early 2024.
How Threads will integrate with the Fediverse
Tom Coates description of the SWF and its founding story (an event at Meta).
"[The SWF] even goes as far as wringing out the Fediverse’s own historical context as a multiprotocol polyglot network, by equating the Fediverse to just the ActivityPub protocol. Hey, look everybody, it’s Evan, the bold creator of The Social Web / Fediverse, with his one protocol that powers the entire thing!"
Something About The SWF Makes Me Feel Icky
From the primary author of the ActivityPub spec: "I am anticipating a crash/collapse of the fediverse in its current form at a not too distant future; hopefully we'll have more answers ready by then, but this is a multi-year project)"
Fediverse Collapse Prediction by ActivityPub spec author
"This paper examines the potential of the Fediverse, a federated network of social media and content platforms, to counter the centralization and dominance of commercial platforms on the social Web. We gather evidence from the technology powering the Fediverse (especially the ActivityPub protocol), current statistical data regarding Fediverse user distribution over instances, and the status of two older, similar, decentralized technologies: e-mail and the Web. Our findings suggest that Fediverse will face significant challenges in fulfilling its decentralization promises, potentially hindering its ability to positively impact the social Web on a large scale."
An evidence-based and critical analysis of the Fediverse decentralization promises
Python library for ActivityPub. Uses Pydantic for AS2 object serialization.
Interesting discussion about informal alternatives to JSON-LD. Some of the most interesting material is in the comments (by Sporny).
"This specification details a model for representing potential and completed activities using the JSON format." A draft AS2 specification prior to the W3C Social WG. This one uses JSON, whereas the final AS2 specification uses JSON-LD.
JSON Activity Streams 2.0 (Pre-W3C IETF Draft)
List of user stories considered by the original AS2/SocialWG team (c. 2015).
"Mastodon link previews can lead to excessive requests at the same time, which is not Mastodon’s fault."
Compaints about Mastodon's (and the AP microblogging fediverse) link preview behavior and the performance problems it causes.
Please Don’t Share Our Links on Mastodon: Here’s Why!
Uses Prometheus and Grafana. For non-container deployment.
How to set up monitoring for your Mastodon instance
"The short version of this is that I believe that Mastodon — more specifically federation and decentralization won't work out."
“SFO Museum has joined the “Fediverse”. We have begun to operate a series of automated “bot” accounts that are published (broadcast) using the ActivityPub protocols and can be subscribed to from any client that supports those standards”
Holding Hands with the "Fediverse" – ActivityPub at SFO Museum
Original Activity Streams (and related) submission by opensocial.org to the W3C SocialWG. This is interesting from an historical perspective.
OpenSocial 2.5.1 Activity Streams and Embedded Experiences APIs
"I used to like the original FourSquare. The "mayor" stuff was a bit silly, and my friends never left that many reviews, but I loved being able to signal to my friends "I am at this cool museum" or "We're at this pub if you want to meet" or "Spending the day at the park". [...]"
Rebuilding FourSquare for ActivityPub using OpenStreetMap
Provide definitions of "Fediverse" and "Instance".
The Big Pleroma and Fediverse FAQ Part 1 - Beginner Questions
"Threads.net has joined the Fediverse, and it is already blocking some servers. It uses a feature called Authorized fetch to ensure those servers cannot even fetch content from Threads. If your server is blocked, you can work around it by configuring a separate domain on your Rebased install to use only for fetching data."
Rebased: Bypassing user and domain fetch blocks
"I’m going to cover a lot of ground in this post, so here’s the TLDR: We built a Twitter-scale Mastodon instance from scratch in only 10k lines of code. This is 100x less code than the ~1M lines Twi…"
How we reduced the cost of building Twitter at Twitter-scale by 100x
"Specification documents and API documentation for the polyproto federated messaging protocol - GitHub - polyphony-chat/docs: Specification documents and API documentation for the polyproto federate..."
Specification documents and API documentation for the polyproto federated messaging protocol
"The MIMI working group is chartered to define tools that messaging providers can use to interoperate with one another. The W3C ActivityPub protocol is already widely used for several use cases that resemble the MIMI use case. This document examines whether ActivityPub might be a good baseline for providing the sort of interoperability that MIMI intends to achieve. "
"A blazingly fast drop-in replacement for the Mastodon streaming API server "
flodgatt: A blazingly fast drop-in replacement for the Mastodon streaming API server
Data science study of Fediverse decentralization.
Critical view of some of the moderation-related activities in the Fediverse.
Who's teaching people that intellectual freedom can exist inside internet moderation schemes?
"LinkML Schema representation of ActivityPub. Contribute to p2p-ld/linkml-activitypub development by creating an account on GitHub." At the time the bookmark was created, this was actually an AS2-only schema, not ActivityPub.
LinkML Schema representation of ActivityPub
"Voyager — a mobile-first Lemmy client. Contribute to aeharding/voyager development by creating an account on GitHub."
"This is the source repository for the DiveDB site." ActivityPub support is planned.
OIDC tutorial using Python and KeyCloak.
A simple OpenID connect tutorial — /var/
Links to historical versions of the AS2 JSON-LD context document.
Discussion of issues with AP-AT bridges.
Discussion of OCAP and gives a high-level overview of how AP is being integrated for code forge purposes.
"IMAP Server giving access to ActivityPub through Vocata"
Experience report of attempting to write an ActivityPub server in OCaml.
Activitypub Server in OCaml: Lessons Learnt, Weekends Lost
"An ActivityPub server with an NNTP interface."
Note for implementing ActivityPub federation.
Implementing Federation, Part I | MRo Blog
"In particular, this blog post is a direct response to forge-net (formerly known as GitPub). They want to federate and decentralize git using ActivityPub, the same technology leveraged by Mastodon and PeerTube. But get this: git is already federated and decentralized!"
Git is already federated & decentralized
If we consider using JSON Schema for validating JSON-LD (RDF), maybe representing the schema themselves should represented as RDF?
"Protecting user privacy is a vital priority for the Fediverse. Many fediverse instances, such as Kolektiva, are focused on serving marginalized communities who are disproportionately targeted by law enforcement. Many were built to serve as a safe haven for those who too often find themselves tracked and watched by the police. Yet this raid put the thousands of users this instance served into a terrible situation."
"Just like our approach to algorithmic choice, our approach to moderation allows for an ecosystem of third-party providers. Moderation should be a composable, customizable piece that can be layered into your experience. For custom feeds, there is a basic default (only who you follow), and then many possibilities for custom algorithms. For moderation as well, there should be a basic default, and then many custom filters available on top."
"In this article, we'll discuss one of the most confusing but important topics of RDF: the various ways you can create ordered data."
Ordered data in RDF: About Arrays, Lists, Collections, Sequences and Pagination
"An implementation of the IETF HTTP Message Signatures draft standard"
pyauth/http-message-signatures: An implementation of the IETF HTTP Message Signatures draft standard
Development plans for ActivityPods, a Solid / AP integration. The article also describes Mastopods which will be a Mastodon-compatible version of this code.
"We observed that most paginations are just linked or double linked lists, with sometimes a way to indicate the ordering, and/or even IRI templates with search forms or controls to change the ordering. This is not the most efficient data structure to retrieve information..."
Describing ordered collections using TREE
Describes 5 potential attacks related to context retrieval.
URLInputSource can be abused to retrieve arbitrary documents if used naïvely
There are four ways in which ActivityPub is a non-standard standard. This work is informed by reading the Social Web Working Group (SocialWG) meeting minutes, interviews with SocialWG members, and a study of historical documents.
Learn when you really need to integrate OAuth2 and OpenID Connect! This is also a good overview of how the two protocols interact.
Why you probably don't need OAuth2 / OpenID Connect!
🧱 Building Blocks for Fediverse. HTTP Signature, NodeInfo, WebFinger, HostMeta
An online book describing validation of RDF data. Given the JSON-LD view of ActivityPub/AS2 is an RDF serialization, these tools and techniques apply there as well. It also gives a good overview of the RDF data model and related benefits and challenges.
A new solution space for apps emerges if we adopt a different model for thinking about Solid. This article discusses a hybrid document/graph model.
Provides docker containers for Mastodon for testing purposes (and eventually others). It uses a local certificate authority with automatic SSL cert provisioning.
Command-line ActivityPub API client (C2S?)
"Unwanted messages are a challenge for all public communication systems. On a federated network without a central form of control, the challenge is extended to allowing for free communication between parties without a central means of control while at the same time preventing undesired or harmful messages." RWOT9 in Prague, The Czech Republic (September 2019)
AP Unwanted Messages (and possible solutions)
Easy to use module for signing http requests for ActivityPub using the `fetch` API
"Thought experiment: how hard would it be to implement ActivityPub over ATProto?"
LittleActivityPub is a minimal and incomplete implementation of an ActivityPub server, for instructive purposes.
Like JSON-LD Playground, but on the command line.
ld-cli: A Command Line Interface for Linked Data Processing
Draft specification of minimalist Solid-like behaviors.
Debate about AP shared inbox and how it should be defined and implemented.
sharedInbox / siteInbox type endpoint (publicInbox, but not just for public posts)
Discussion about shared inbox, replies, json-ld, etc.
SharedInbox Discussion - IRC Chat 2017-07-16
A Gherkin-like test DSL that is not designed to be part of a BDD process and doesn't require step definitions to be written in many cases. This might be useful for ActivityPub server testing.
[2017] AP P2P thread from Christine Lemmer-Webber.
P2P ActivityPub: more feasible than you think
Nice description of trade offs between federated and P2P styles of online social network architectures.
Decentralized Social Networks Comparing federated and peer-to-peer protocols
Discusses DHT (Distributed Hash Table) use in online social networks (and other software domains).
DHT-based Communications Survey: Architectures and Use Cases
[GERMAN] "We want to send a message from our Solid Pod to a Mastodon user."
Posting to Mastodon with Solid, is that possible?
Original Linked Data note from Tim Berners-Lee (2006)
[Video] "ActivityPub Conference 2020 opening song" Humorous.
ActivityPub Conference 2020 opening song
[VIDEO] "There is no doubt that the Web became a platform of choice for online social interactions, but it can be also used in IoT context https://purl.org/rzr/social#"
A Reddit r/lisp post (attributed to Christine Lemmer-Webber).
Discussion about ActvityPub and actor models
"Cryap - a federated social network written in Crystal. Cryap can federate with Mastodon, Pleroma, and others ActivityPub-compatible engines! Cryap partially implements the Mastodon API. It is possible to publish posts without media, boost, like, follow and read timeline. Users are visible to other instances. OAuth2 is implemented, but without scopes. Cryap is not ready to be used in production, but we welcome contributions to our project."
Implemented at fediversity.site. It's not an FEP, but I'm tagging it that way anway.
"A self-hosted fediverse bot."
"A set of utilities to help bring content and users from legacy social media networks into the fediverse"
"Post short thoughts or long essays, share photos, all on your own blog. Micro.blog makes it easy, and provides a friendly community where you can share and engage with others." The description don't mention ActivityPub, but the nodeinfo lists it as a supported protocol. (AKA microdotblog)
"A growing number of people are experimenting with federated alternatives to social media like Mastodon, either by joining an “instance” hosted by someone else or creating their own instance by running the free, open-source software on a server they control. For people hosting instances, however, it can also mean some legal risk."
User Generated Content and the Fediverse: A Legal Primer
Intro: "Let’s address the mammoth in the room: the fediverse, the network of mastodon servers, is very inefficient. In this post I’ll show why it is inefficient and why that isn’t a problem."
The Fediverse is Inefficient (but that's a good trade-off)
[Video] "Four years later, while the fediverse plays host to a thriving community and unique culture, it remains a nonentity by the standards of social media giants. Why is this? How has ActivityPub created a constructive and enjoyable social media experience while also failing to bring that experience to a large audience? And what can this tell us about the possibilities and limitations of anarchistic spaces as a whole?"
ActivityPub Four Years Later: The good, the bad, and the (Fedi)verse.
From the creator of Cucumber/Gherkin: "The biggest problem with Cucumber is that most people trying it out don't understand what it is. Cucumber is not a tool for testing software. It is a tool for testing people's understanding of how software (yet to be written) should behave."
The biggest problem with Cucumber... (Gherkin)
[Video] Mastodon is a "federated" social network that works like Twitter. It puts the control of data into the user's hands, not in a single corporation.
Distributed social media - Mastodon & Fediverse Explained
[Video] The plugin implements the ActivityPub protocol for your blog, to federate articles/notes and receive reactions from the fediverse.
The goal of these documents is to provide an implementation path for adding Fediverse capabilities to Gitlab.
If you want to analyze Mastodon posts, getting them into Apache Kafka® is a sensible first step. Read on to find out how to do this with Typescript and NodeJS.
Learn how to get access to the Mastodon API and use it with CircuitPython! This guide covers what's necessary in Mastodon to get your API access token. Then, there are two examples, the first to post a toot, and the second to retrieve all posts under a specific hashtag. Toots away! (Uses Raspberry Pi Pico W)
Introduction to the Mastodon API using CircuitPython
twister is an experimental peer-to-peer microblogging software. User registration and authentication is provided by a bitcoin-like network, so it is completely decentralized (does not depend on any central authority). Post distribution uses kademlia DHT network and bittorrent-like swarms, both are provided by libtorrent.
RetroShare is a Free and Open Source cross-platform, Friend-2-Friend and secure decentralised communication platform.
Table that compares various Fediverse software platforms.
Comparison of software and protocols for distributed social networking
Discusses ActivityPub, W3C, Linked Data and some of the related issues.
Lightweight client for mastodon micro blogging service. Used for Internet of Things / Web of Things projects.
Lightweight IOT client for mastodon micro blogging service.
How Emerging Technologies like ActiivtyPub may shape Transport Accessibility and Mobility
Augmented Reality, Autonomous Vehicles, Artificial Intelligence, and Activity Pub for Access and Mobility
Developer Toby Jaffey has launched a library that brings microcontrollers to the "Fediverse," offering Espressif ESP32 users the chance to build devices capable of posting to the Mastodon social network: Lyuba.
Using Espressif ESP32 Devices with Mastodon
Presentation about using ActivityPub for Internet of Things (IOT) applications.
[PDF] OStatus lets people on different social networks follow each other. It applies a group of related protocols (PubSubHubbub, ActivityStreams, Salmon, Portable Contacts, and Webfinger) to this problem in what we believe is a simple and obvious way
Zot is a WebMTA which provides a decentralised identity and communications protocol using HTTPS/JSON.
Find out what kinds of automated tests you should implement for your application and learn by examples what these tests could look like.
This blog article describes a way to categorize tests based on their behavior (used at Google c. 2010). Similar discussions have been happening related to the ActivityPub test suite topic.
JSON Schema definitions for Fediverse protocols and specifications. Includes schema for ActivityStreams 2, ActivityPub, Mastodon and JRD (Webfinger, nodeinfo)
A curated list of resources for ActivityPub developers who create software for the Fediverse.
ActivityPub-enabled. This site is a fork of Postmarks.
This document describes a minimal implementation of a federated marketplace based on ActivityPub protocol and Valueflows vocabulary. In such marketplace actors can publish offers and requests, respond to offers and requests published by other actors, enter into agreements and exchange information necessary to complete these agreements.
Source code (unmaintained) for a tool to generate Go code from an ActivityPub OWL Ontology (in jsonld).
Improving Testability of ActivityPub Requirements
"Motivation Several features would benefit from or require the existence of an ActivityPub actor representing a Mastodon instance. This actor could for instance be used to sign every fetch request (..."
Instance-wide actor · Issue #10453 · mastodon/mastodon
hatsu: Self-hosted & Fully-automated ActivityPub Bridge for Static Sites. [WIP]
Fedipage is a Hugo based static page generator and blog with ActivityPub support. Source code is available.
Federated decentral classified ad software using ActivityPub.
An overview of mapping a federated link aggregator web application on top of the ActivityPub vocabulary using go-activitypub packages, FedBOX and BrutaLinks
"tl;dr: please don’t specify them." Discussion of specifications, like ActivityPub and Activity Streams that attempt to combine JSON and JSON-LD.
Polyglots don’t lead to interoperability
Snell's comment that the OWL Ontology was intentionally non-normative to allow changes without an official W3C working group. I haven't found discussions in the SocialWG minutes related to this discussion.
Comment on non-normative AS2 OWL Ontology
Web finger is used to do account to AP actor URI resolution by Mastodon. It's not part of the ActivityPub specification itself.
Wildebeest is an open-source, easy-to-deploy ActivityPub and Mastodon-compatible server built entirely on top of Cloudflare's Supercloud.
This is a browser extension that implements the WebAP API (still an idea), exposing it to web applications.
A libre collaborative resource mapper powered by open-knowledge, starting with books.
Personal webpage with social networking functionality
A community managed lightweight code hosting solution.
A webserver app that supports AP and Zot protocols
Automatically fetch missing replies and posts from other fediverse instances.
A way to safely schedule messages with Mastodon and Pleroma.
Alternative stylesheet to make Mastodon UI represent the Birdsite.
Parses RSS feeds, identifies new posts and posts them on the Mastodon social network
Link aggregator. Latest update - May 2019.
A Mastodon-compatible, ActivityPub-speaking server in OCaml
A search engine of PeerTube videos and channels Developed by Framasoft
A friendly fork of Mastodon, with the aim of providing additional features at the risk of potentially less stable software
A web application that uses the RSS/Atom feed of your website to expose it on the Fediverse through ActivityPub.
Utterly simplified and lightweight blogging protocol.
ActivityPub Server services for ASP.NET.
Self-hosted, single-user, ActivityPub powered microblog.
A small ActivityPub debugging server on Glitch
Script that recommends people for you to follow on Mastodon based on your own account.
A Firefox extension that saves your Mastodon bookmarks to Pocket.
A Twitter bridge to the Fediverse. Forked from BirdSiteLIVE.
A Matrix to Fediverse / ActivityPub client / bridge. Also, some media proxying.
Modular ActivityPub implementation as Express.js middleware to easily add decentralization and federation to Node apps.
Bash scripts for backup / restore of Mastodon.
A free non-profit decentralized donation processor with a focus on freedom, privacy and efficiency.
An experimental 'microwiki implementation' / 'mini CMS' with ActivityPub support.
An OCR (Optical Character Recognition) bot for Mastodon (and compatible) instances
A single user ActivityPub server to interact with the Fediverse and other indie web protocols like RSS.
A PHP implementation of the ActivityPub protocol (used in Pterotype plugin).
API-space software forge federation. Will implement ForgeFed external to the forges, using the forge's HTTP APIs.
A social network dedicated to tracking and discussing what you're reading, based on
An "un-imagined" ActivityPub service, to address emergent use cases. Multi-tenant, multi-personality, multi-ownership.
Use SQL to instantly query Mastodon timelines and more. Open source CLI to Steampipe SaaS. No DB required.
A Clojure library designed to implement the ActivityPub protocol.
Crossposter to post statuses between Mastodon and Twitter.
A Mastodon, Twitter, and Instagram Cross-poster.
A federated social media platform implementing the ActivityPub specification for client/server and server/server communications.
A community-driven fork of Pleroma with new features such as support for Misskey-flavored Markdown.
Alternative for Vine / TikTok (alpha). ActivityPub will come later!
A fork of Masto.NET, a C#/.NET Library for accessing Mastodon.
Lightweight ActivityPub CMS. Implements both client-to-server (C2S) and server-to-server(S2S) APIs. Compatible with Mastodon, Pixelfed, Pleroma and microblog.pub.
Minimal ActivityPub server for posting federated podcast comments
Federated Git platform (still in early stages of development).
A hand-crafted implementation of the Activity Streams 2.0 specification in Go, especially suitable for projects implementing ActivityPub.
Hare package provides a extensible implementation of the ActivityStreams 2.0 format and the ActivityPub protocols.
A federated self-hosted git repository management tool
A tol to expand your connection graph and find new people to follow.
Mirrors Twitter accounts to Fediverse, or migrates Twitter account to Fediverse using a Twitter archive. Supports Mastodon, Pleroma and Misskey.
Firefox toolbar extension to share the current browser tab on the Fediverse
A headless Mastodon-compatible Fediverse server project, written in Golang.
Federated network support for Minecraft. (fabric and quilt).
Tiny ActivityPub framework, both database and server agnostic.
Federated calendar and event organiser over ActivityPub
Developer has suspended development for the foreseeablefuture
Flask-based (Python) ActivityPub server ,
Collects maximum number of alive fediverse's servers and then query their API to obtain their registered users.
Web app for the Podverse podcast clip sharing system.
Lightweight social networking server that implements Mastodon's REST API.
An application built for a diploma thesis to showcase work with Linked Data Notifications, Activity Streams and ActivityPub, using Solid pod as data provider.
A high-level framework for ActivityPub federation in Rust, extracted from Lemmy.
Free and open-source social network for active citizenship.
An ActivityPub engine for Ruby on Rails.
Federating guild website using GuildWars2 API
the server by Purism used in LibreOne, not the abandoned Tuxcraft server or Pylodon client; a complementary fork of Mastodon, focusing on opt-in public spaces
An anchoring system for a fediverse of interconnected nodes and witnesses.
A decentralized, federated social pinboard in the style of Pinterest.
Yet another powerful customizable ActivityPub relay server written in Go
An actively developed, community-driven fork of Misskey with many quality of life improvements for users and admins alike
A collaborative, generic knowledge management system. Aims to ease data storage and filtering.
Chrome/Firefox extension that simplifies interactions on other Mastodon instances than your own.
An XMPP <=> ActivityPub gateway project doubled with XMPP Pubsub end-to-end encryption
An ActivityPub server that reblogs all the statuses of certain actors. You set it up to follow a few accounts and it announces everything they post.
POC to use ActivityPub on top of the Solid Platform.
Secure, affordable, private digital spaces for work and play.
a semantic web server, implements a Linked Data Platform (LDP), uses RDF Turtle as serialization format, part of the
VKontakte-like social network, with friends, walls, photo albums and groups
Crawls the Fediverse and produces a list of instances that are alive.
An ExpressJS server that integrates with GhostCMS webhooks to publish ActivityPub content on the Fediverse.
Challenge someone to a game of chess using toots. An ActivityPub server with a single hardcoded King service actor that acts as a chess arbiter.
Simple widget to support “Follow Me on Mastodon” buttons
ActivityPub server implementing S2S and C2S protocols, suitable for single board computers. Includes features such as moderation tools, post expiry, content warnings, and image descriptions
This is an attempt to build something like the Pleroma relay butwith crazy things like workers. Still got a ways to go, but less bad than before.
Facebook-like social network connecting communities across the web
Drupal module that implements the ActivityPub protocol for your site.
Archive your statuses, favorites and media using the Mastodon API.
A fork of Mastodon where you can post toots with beautiful mathematical formulae in TeX/LaTeX style
Lightweight ActivityPub Server optimized for single-user. A fork and sister project of Misskey
A fork of Misskey with various bugfixes and improvements.
Microblogging server with multiple plugins
ActivityStreams and ActivityPub library implementation for GNU Guile. Includes a full ActivityStreams library and most of an ActivityPub implementation.
Q&A based social network. Ask questions, give answers and learn more about your friends.
Lightweight Mastodon and GNU Social-compatible server implementation
FireFox browser plugin, that simplifies following and interacting with remote users on other Mastodon instances.
A C# .NET Implementation of ActivityPub Entity Types.
A Swift Framework that wraps Mastodon's API.
A mock ActivityPub server to use in SoftwareTesting code
CMS with a range of groupware tools available as plug-ins
A browser extension that helps you find people on Mastodon.
A bot that mirrors YouTube channels to PeerTube channels as videos are released in a YouTube channel.
A Hugo module for use in Hugo, to generate ActivityStreams representations of posts.
A .NET implementation of the Activity Streams vocabulary in the form of classes that can be serialized using System.Text.Json.
Research space for a next-gen distributed social network written in Racket and consisting of multiple projects, by AP specification co- author Christine Lemmer Webber.
Convert any RSS feed to an ActivityPub actor that can be followed by users on ActivityPub-compliant social networks like Mastodon.
An attempt to create a viable Goodreads alternative, book reading progress, lists, reviews, comments (Project looking for new Maintainers)
Minimalist blog that implements ActivityPub endpoints.
Early beginnings of ActivityPub library in Rust
Library to abstract social web federation protocols like ActivityPub, Diaspora and Matrix (see docs).
Post updates from an RSS feed to Mastodon.
ActivityPub server with minimal setup and support costs
A Matrix <--> Mastodon bot written in Java.
A PHP implementation of ActivityPub protocol based upon the ActivityStreams 2.0 data format.
A libre, self-hostable, federated, imageboard platform that utilizes ActivityPub.
A bovine powered ActivityPub server, which interoperates with the rest of the FediVerse.
An extension for the Pagure forge that adds ForgeFed federation to Pagure instances.
An Open File Format for storing the information from a forge.
A multifunctional decentralized social network implementation.
The social web translator. Fetches and converts data between social networks, HTML and JSON with microformats2, ActivityStreams, Atom, JSON Feed, and more.
A collaborative social publishing engine
a bot for mirroring Twitter / Tumblr accounts and RSS feeds on Mastodon
An implementation of a ActivityPub bot that can communicate with Mastodon servers.
A fork of Mastodon that provides local posting and a wider range of content types
A Wordpress Plugin that automatically posts your new articles to Mastodon.
Github Action that posts to Fediverse when code is changed.
Embeds mastodon timline into a html page. Uses JS, no intermediate server required.
Part of Creative Passport NGI0-funded project for providing a verified digital ID for Music Makers (very early stage of development)
A decentralised self-hosted microblogging platform that has a privacy- first focus.
Integrate your Fediverse timeline into your Vue 3 with Bootstrap 5 application.
Vue Component Library for ActivityPub Timelines
An implementation of the ActivityPub protocol for XWiki
Link aggregator and microblogging platform for Fediverse
A script that aggregates recent popular posts from your Mastodon timeline.
A modern BBS software with a nostalgic flair.
A digital give-a-book, take-a-book library for ebooks.
Personal network that helps to keep in contact with friends. Interface and functionality include common features of a mainstream social network
Implementation of the HTTP Signature scheme as used in ActivityPub.
A personal reader on your website which is installable as a PWA on your phone or tablet.
A federated blogging platform built on the ActivityPub protocol.
Self-hosted and federated social link aggregation
A fork of Mastodon for creators: emoji reactions, localposting, groups, misskey-like antennas, post self-destruction and more moderation options
A tiny, single user ActivityPub server, meant to be a starting point for your own ActivityPub projects.
A small, efficient Mastodon-compatible Fediverse server for single- user instances. Based on Deno.
An experimental Fediverse server for microblogging
Interplanetary microblogging platform. Provides many additional features like calendar, emoji reactions, polls, games, and many other widgets
Defines a standardized way to expose metadata about an installation of a distributed social network.
A fork of Mastodon designed for civic communities looking to run their own social networks.
Generic library to federate an app with ActivityPub (uses a queue for incoming/outgoing activities and adapter modules for tight integration).
Lightweight, stylish, and ethical share buttons.
A simple web app that helps you find your Twitter friends on the federated Mastodon network. It is also an example of how the Mastodon API can be used and the federated OAuth authorization flow.
A server-side, single-user, Fediverse-integrated microblog engine. Creating static assets published by webserver.
Federated social groups with ActivityPub, NodeJS, Express, and Mongod.
Bridges the IndieWeb to federated social networks: ActivityPub, OStatus, etc.
Reference implementation of Friendly Forge Format in Python.
Full ActivityStreams 1.0 and 2.0 reference implementation in Java.
Activity Streams validation for Typescript.
A tool to visualize instances in the fediverse.
A customizable, private space in the Fediverse where people can create, share, and collaborate.
Manage cities as a connected citizen, produce openCityData, manage organizations, projects, events openly, an open societal approach
Collection of fediverse API wrapper libraries for .NET Standard 2.0.
ActivityPub compatible SNS that aims to be easy for everyone to use.
A federated video live streaming platform (in development)
A fork of Mastodon with full Markdown, Quote and Local-Only Toots, Gitlab/hub sign-in, Google Translate, deeper support of Chinese and more theming.
Display a Mastodon thread (only author toots, no replies) as a web page or Markdown for reading.
Libraries for using ActivityPub in the Go language.
A self-hosted linguistic corpora exchange platform that aims to be a simple gateway to the Fediverse for scientific interaction
A scheme based on RDF allowing for data to be referred to by an identifier determined by the data itself
Simple social groups compatible with ActivityPub.
A modular crossposter to bridge events from sources you have to setup yourself to Mobilizon.
Shared agenda for local communities; demo
site])(https://transit.alerts.social/)): ActivityPub-compliant server for distributing transit service alerts.
Public domain federated communications server. Provides a feature rich ActivityPub and Nomad communication node.
Basic Fediverse Inbox. Writing software is hard and time consuming. What's the most basic practical system that lets us connect to the fediverse?
Small ActivityPub server written in Rust.
W3C ActivityPub and ActivityStreams implementation in Java using Spring Boot.
Embed Mastodon or Pleroma profile feeds on any web page.
A framework (kinda) to work with ActivityPub with .NET.
Import domain blocks to your Mastodon v4+ instance.
Self-reliantly posting on the #Fediverse with painless hosting and security in mind.
Wolfgame is a lot like Mafia. Once started the game simulates day/night cycle and allows players to vote for who might be a werewolf during the day.
Search PeerTube via Matrix, using Sepia Search API to search on all participating public PeerTube instances. You can also select any single instance. It's implemented as a module for Hemppa the bot.
A tiny ActivityPub host intended for a single actor, that implements Mastodon API for use with various clients.
A federated community-building platform for Eve Online corporations.
A wordpress plugin widget to display your fediverse account timeline.
Groups work with any software that implements Mastodon client API; has moderation, admin announcements,
A single actor ActivityPub server implemented in NextJS.
A standalone service to deliver posts from your own website to ActivityPub followers.
A federated network of Open Data for discovering interesting events
Photo Sharing. For Everyone. A free and ethical photo sharing platform.
Distributed blogging, polls, and status updates powered by activitypub, python, the gay agenda, and snake women.
Embed your Mastodon feed into your web page.
An attempt to build a spec-compliant ActivityPub core library.
A simple, minimalistic ActivityPub instance with minimal dependencies, multiuser, no database nor cookies needed, totally JavaScript-free
An effort to create a standardized way of exposing metadata about a server.
A simple set of scripts to quickly import your youtube channel to Peertube.
Podcasting platform that allows people to listen to podcasts in a new way.
Script for crossposting from Instagram to Mastodon or Pixelfed.
Distributed data structures that can hold references to content while allowing replicas of the data structures to diverge and merge without conflict
built on Ethereum blockchain but intended to federate with AP. No commits since April 2018. No reply on issue about AP compatibility testing from May 8. Homepage now a spamsite
A powerful single server ActivityPub framework for performant Fediverse applications.
Reference implementation of Friendly Forge Format in Golang.
Integrate Mastodon with your Joomla! site.
A collection of tools to work with your Mastodon account; displays account statistics and lets you search your toots.
Vervis is a work-in-progress federated project and repository hosting and collaboration platform. Its development is meant to help form the ForgeFed specification for project hosting platform federation, and hopefully get existing platforms (such as Gitea, Gogs, GitLab CE, etc.) to support it.
Platform for building communities. No commits - since September2019
A fork of Mastodon. Unlisted posts with tags are published on tags, a list of fav tags, image size restrictions and transcoding
ActivityPub server using Lumen framework
Full ActivityStreams & ActivityPub implementation in Golang. Extensions can be easily added by design-time code generation from JSON-LD schema's (also supports ForgeFed this way, by default).
A social network for humans that is free, decentralized, open, and easy to use.
Relay that forwards web push notifications to APNs, built for Toot!.app but usable for anyone.
WordPress plugin. Pterotype connects your blog to the Fediverse by giving it an ActivityPub feed
JSON Schema definition of the ActivityStreams and ActivityPub specifications.
A minimalistic Activity Pub server. Think Mastodon, but smaller and with fewer features
A fork of Mastodon focusing on followers-only posting of media. Configurable circles to post to.
Turtle definitions of ActivityStreams 2.0 and Mastodon Toot vocabularies.
An interactive p2p web-platform to provide barrier-free access to education for everyone.
Mastodon moderation alerts using Pushover.net.
Creates a publication / subscription infrastructure for Open Educational Resources. It allows to follow specific subjects and to be notified when new content about that subject is published.
Cross-platform Swift library for the Mastodon API.
A Gemini frontend to the fediverse (specifically, Mastodon and Pleroma instances).
Generates RSS and Atom feeds for websites that don't have one. Supports Mastodon, Pleroma and Misskey, among others.
RSS-MessagingBridge ActivityPub MessagingBridge
A lightweight federated microblogging server, designed to be simple & fast.
Continuous post deletion for Mastodon and Twitter (if you happen to use that).
Usage of bovine to write an ActivityPubClient.
A simple self-hosted workout / activity tracker.
A bridge between Zot protocol and ActivityPub, OStatus, Diaspora etc.
Node app that checks a list of feeds (Atom, RSS, RDF) periodically, post new items to Mastodon.
Generic ActivityPub server, with a focus on microblogging style activities
HTTP signatures for ActivityPub in Rust.
Publishes to Twitter all your Mastodon public text only posts but also your posts with images, with videos and even your polls.
A simple and efficient ActivityPub relay.
Epic microblogging network with many features and multiple interface layouts to choose from
A single-user ActivityPub server with minimal dependencies, using SQLite,
An open-source hosting platform made for podcasters who want engage and interact with their audience.
Publish status from Raycast to Akkoma or Pleroma, and view your bookmarked status
A Jekyll plugin that adds a WebFinger file to your site, allowing you to use your own domain to help others discover your Mastodon profile.
Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.
A set of Traits and Types that make up the ActivityStreams and ActivityPub specifications.
A federated nanoblogging service with a Gemini frontend.
ActivityStreams 2.0 library for Node.js and TypeScript.
A Django-based microblogging server, written in Python, which supports the Mastodon protocol.
R package to interact with the mastodon API.
Github Action that posts to Mastodon from text files, enabling everyone to submit toot drafts to a project.
Bulk find and follow to make it easy to migrate from Twitter to Mastodon.
Event management system that allows event creation and coordination across Fediverse
Library providing an easy way to create Mastodon API applications.
A DID Method for a fediverse of interconnected nodes and witnesses.
View Mastodon timelines, search hashtags, find interesting people, and check server stats.
Bot to grab tweets from Twitter and post them to respective accounts on a Mastodon instance.
A service-type ActivityPub actor that will re-broadcast anything sent to it to anyone who subscribes to it.
a bot that implements group functionality in Mastodon.
A very light ActivityPub library in Go (used to power pherephone).
Workspace for defining ActivityPub and ActivityStream extensions for Podcasting with the intention to define a W3C Recommendation forthem.
Public post relay for the diaspora* federated social network protocol.
Existing Reddit replacement adding AP support, AP issue still open
A useless C2S ActivityPub server for "extremely hardcore" ActivityPub enthusiasts.
CSS tweaks and custom themes for Mastodon.
Corteza is a 100% open-source, fully standardized low-code app development, business process, integration and data harmonization platform. A Salesforce alternative.
A crowd-sourced wiki maintained by SocialHub community with a ton of information andlinks.
A job hunt bot that indexes jobs and candidates from the Fediverse.
Social network for photographers (alternative to 500px / Flickr);
A very simple reference implementation of an ActivityPub server using Express.js.
A vocabulary-agnostic ActivityPub server. Vocata does not limit what types of content can be handled by it, and how it is presented to users.
Activity Streams 2.0 vocabulary data and alternative docs.
Python script that allows sign up to a Gitea instance to all local users of a Mastodon server.
Overview on how to implement cross-app comments for podcasts.
Implementation of ActivityPub in Scala. (Hobby project included here for reference only.
Lively federated movies reviews platform.
Live Streaming Video Platform with Multicast
A fork of Mastodon to optimize toward community, that is making it as easy as possible to contribute.
A federated community platform that focuses on federated communities so they are no longer constrained to a single entity.
LMS (Learning Management System) aimed at helping teachers collaboratively collate and curate sets of OER (Open EducationalResources)
Twitter to Mastodon account mapping service to aid migration away from Twitter without losing all your followed friends
A globally interconnected micro-blogging platform inspired by Misskey - not updated since December 2020
Your plug & play federated social network. Tend to your digital life in community.
Trying to be a basic twitter-like service that works with ActivityPub. Based on
NodeJS Mastodon client library with an eye to making bot development fun & easy.
Social networking platform (under development).
Share buttons that support dynamic input of Fediverse URLs and require no Javascript.
A set of extensions to ActivityPub for federation between code forges
A library for creating, parsing, and verifying HTTP signature headers, as per the Signing HTTP Messages draft 80 specification.
currently working on a bridge between SSB and APnetworks.
A work-in-progress ActivityPub server designed to use constructions which provide functional security and resilience
A decentralized personal data framework inspired by MIT's Solid Project. ActivityPub support is listed as a Phase II roadmap objective, but it doesn't appear to be implemented yet.
A federated alternative to traditionally centralized question & answer platforms, such as Quora/StackOverflow.
A remote follow tool to share links and buttons that allow people to follow you from their own ActivityPub instance
Experimental ActivityPub plugin for Pelican static site generator.
Develops and collects best practices to synchronize maps and events and to federate messengers and identities. (Funded with NGI0, implementing ActivityStreams, but AP support not clear, currently unlicensed)
A Mastodon - DeltaChat bridge plugin for SimpleBot,
A federated social network built with security and privacy in mind.
A tool for syndicating domain blocks across the Fediverse.
Find fediverse addresses in the profiles of your Twitter followings
aka 'misty' - A webserver app that supports AP and Zot protocols, fork of Zap.
Server for the Mastodon protocol, implemented in Django.
This specification describes SciFed, a standard for federation of scientific activities and content using ActivityPub.
Streaming service like Spotify. No commits - since March2019
A set of tools to debug ActivityPub requests. You can inspect requests, see the flow in real time, run arbitrary requests with HTTP signature handled for you.
Public events with no registration required, an instance connected with the friend.camp Mastodon instance is up at: http://events.friend.camp
A modular Activity Server with support for C2S.
A fully-decentralised DHT-based relay for global hashtag federation. See
A prototype for federating event information
Software forge spider. Crawler that maps and advertises self-hosted code forge instances.
AP-powered CMS; website suspended, no actual coderepo
An activity-pub server implementation, that is not limited to the activity-stream vocabulary, but supports RDF per se.
This document is for programmers who take one look at activitypub.rocks, click on through to the documentation, and can't make heads or tails of it.
A highly opinionated guide to learning about ActivityPub
Feature files for FEP and other Fediverse functionality.
Gherkin Features for BDD in the fediverse.
Source code for the tags.pub ActivityPub server. I'm not sure but I think this is an early attempt at making an AP groups application based on hashtags.
A simple AP proxy that's an experiment in consolidating activities from multiple services.
idkfa - the activitypub everything app proxy
ActivityPub HTTP signatures using Botan library.
Discussion about the rationale for why Mastodon doesn't support C2S. (My opinion: the arguments are weak and confuse the concept of a general client *API* with a client user interface implementation.)
Why Mastodon doesn't support AP C2S
GitHub issue discussing how Webfinger and its relationship to ActivityPub.
Discussions about FEPs and other topics (chat transcript).
"Why object-oriented programming is the wrong mental model for JSON Schema. An empty JSON Schema allows everything, while an empty Java class does nothing."
JSON Schema is a constraint system (not an object-oriented language)
(Dec 2008) Discussion of Activity Streams directions.
Distributed social web project from 2007-2010 timeframe (focused on WordPress).
An old video explaining Activity Streams long before AS2 or ActivityPub.
The charter for the W3C working group that defined ActivityPub.
Test suite linked to AS2 specification. It's just a group of files extracted from examples in the spec. It's not clear to me what testing is done.
This is the meeting where ActivityPub was named.
(2016) Early (pre-ActivityPub) Activity Streams 2.0 library to demonstrate AS2 features.
w3c-social/activipy: ActivityStreams 2.0 python implementation and validation lib
A very interesting meeting on Activity Streams 2.0 topics. Discussed JSON-LD versus JSON, JSON Schema, AS2 context versioning, AS2 extension registries, AS2 test suite, Linked Data Paging versus AS2 collection paging, and other topics.
microformats/tests: Microformats test suite
An early attempt at creating an Activity Streams test suite.
w3c-social/as2test: Test driver for Activity Streams 2.0
(2011) A rebuttal to "The Social Graph is Neither."
"(2011) But when you start talking about building a social graph that transcends any specific implementation, you quickly find yourself in the weeds. Is accepting someone’s invitation on Linke…"
The Social Graph Is Neither (Maciej Cegłowski)
Interesting discussion about the relationship between Linked Data Paging (LDP) and Activity Streams. Ultimately, the suggestion to unify the two of them was rejected.
ISSUE-37: LDP & AS2.0 paging alignment - Social Web Working Group Tracker
Post Type Discovery specifies algorithms for determining the type of a post by what properties it has and potentially what value(s) they have, which helps avoid the need for explicit post types that are being abandoned by modern post creation UIs. W3C Editor's Draft.
Perceptions of the SWICG meeting at TPAC 2023, by Amy Guy (one of the AP spec authors).
Social Web Incubator Community Group - face-to-face meeting at TPAC 2023
A reflection on the last 15 years of the web 3.0 giant global graph of social networks, especially the development of the ActivityPub..."
Learn how to implement the OAuth 2.0 protocol with practical examples and important nuances you should be aware of.
Guide to implementing OAuth 2.0 (with examples)
Video with discussion of ActivityPub history.
Benjamin Goering on "ActivityPub W3C Recommendation"
Quickly design and test ActivityPub objects with mock servers of popular projects like Mastodon and Pixelfed. (Not released as of September 18, 2023)
OAuth 2.0 Simplified is a guide to building an OAuth 2.0 server.
(2017) Unofficial (non-normative) discussion of authentication and authorization for ActivityPub.
SocialCG/ActivityPub/Authentication Authorization
Explainer from Popular Science magazine.
ActivityPub and the Fediverse, explained.
Node list and statistics for The Federation and Fediverse.
Fediverse Servers Status. (Puts a heavy load on the browser.)
High-level Fediverse statistics from the PixelFed team.
(2018) Criticism of JSON-LD in a Pleroma ActivityPub context.
Pleroma, LitePub, ActivityPub and JSON-LD
LitePub is a suite of protocols which provide a federated social network. They constitute various profiles of the ActivityPub specification. It is intended that LitePub implementations provide compatibility with ActivityPub, but there are some core behavioral differences.
Brings together two game-changing technologies, ActivityPub and Solid Pods, and empowers developers to create truly decentralized applications.
ActivityPub/Mastodon sequence diagrams for some of the common federation behaviors.
Sequence diagrams of how ActivityPub works
ActivityPub test suite discussions in TPAC 2023 break meeting. Highlight: Meta offering funding to support testing efforts.
SocialWeb Test suite discussion – 13 September 2023
W3C community group discussions and demonstration related to ActivityPub test suites.
2023-08-11 W3C SWICG Special Topic Call: AP Interop Test Suitesmeetings
Follow-up by Dennis Shubert on earlier ActivityPub criticisms. (2019)
ActivityPub - Final thoughts, one year later.
(or: Why can't the decentralized social web people just get along?) Lemmer-Webber's response to criticisms of ActivityPub specification.
On standards divisions and collaboration
PHD thesis of Amy Guy, one of the ActivityPub specification authors. See Chapter 5 for a discussion of the social web specification process, experiences, and thoughts.
The Presentation of Self on a Decentralised Web
By Christine Lemmer-Webber. Discussion of the ActivityPub specification process: history and challenges they had to overcome.
(2019). By Kaniini. Follow up on ActivityPub criticisms and recommendations. (SSL cert. issue)
ActivityPub: the present state, or why saving the 'worse is better' virus is both possible and important
(2019) Kaniini's discussion of "worse is better" in an ActivityPub context. (SSL cert issue)
ActivityPub: The “Worse Is Better” Approach to Federated Social Networking
(2019) By Cory Slep. An appeal to the AP community to work together to address the gaps in the specification.
Discussion of ActivityPub problems on HackerNews (2019).
Criticism of ActivityPub by Dennis Schubert. (2018)
ActivityPub - one protocol to rule them all?
Discussion of the issue with Link|anyURI usage in the AS2 specification and the problems it can cause.
An old but interesting pre-specification document describing a variety of potential use cases for ActivityStreams 2.0.
Activity Streams 1.0 home page. Interesting for historical purposes. (Tagged as #activitystreams2)
Understanding ActivityPub - Part 1: Protocol Fundamentals. Part 2: Lemmy, Part 3: Mastodon.
Understanding ActivityPub - 3 Part Series.
Hannibal is an experimental ActivityPub library for Go. It's goal is to be a robust, idiomatic, and thoroughly documented ActivityPub implementation fits into your application without any magic or drama.
benpate/hannibal: ActivityPub library for Go
In this guide you will setup a SemApps-powered ActivityPub server, create an actor, make this actor communicate with another Mastodon actor.
The goal of this tutorial is to illustrate how to build a simple Fediverse server using the bovine framework.
A tutorial for using the Mastodon OAuth endpoint. The example is C#, but most of the tutorial is not language-specific.
A simple application of OAuth: Mastodon's API
A dataset of behaviors described by the ActivityPub protocol.
The original ActivityPub test suite, originally hosted at activitypub.rocks hasn't been running for years and it's been difficult to find a maintainer because of the implementation programming language, Guile. Because of that situation, the test suite was rewritten in Python.
Here are some quirks about test.activitypub.rocks... from @cwebber.
Unofficial ActivityPub test suite server, which runs machine-assisted test cases against federated software. (Unmaintained)
Server-independent, full-automated test suite primary focused on ActivityPub server compliance testing.
This document describes the process and criteria for approving extensions for inclusion in the main Activity Streams 2.0 context document.
Process for Including Extensions in Activity Streams 2.0
W3C HTTP Signatures test suite. (I don't know if it tests the specific signature version that Mastodon uses.)
W3C Signing HTTP Messages Working Group Test Suite
HTTP Signature information and code in Python.
HTTP Signature implementations in a variety of programming languages. There are multiple HTTP Signature algorithms and specifications so double-check that the library you use is compatible with Mastodon.
Discussion of Mastodon HTTP Signatures with examples in Node.js.
How to Compute an HTTP Signature for Mastodon (NodeJS)
Python implementation of HTTP Signatures.
Python Mastodon Server POST with HTTP Signature
Information from Eugen Rochko about how to process ActivityPub inbox requests. It includes information about HTTP Signatures.
How to make friends and verify requests (July 2018)
The question was asked in a Python context, but the answer is mostly general.
GitHub issue related to Mastodon upgrade to hs2019 in 2020.
Mastodon - Add support for latest HTTP Signatures spec draft
Information about using HTTP Signatures with Mastodon.
Mastodon HTTP Signatures - documentation
Version of HTTP Signatures used by Mastodon and Mastodon-compatible software (as of Sept. 2023).
Signing HTTP Messages - draft-cavage-http-signatures-12
Tracking adoption of current drafts of HTTP Signatures across the Fediverse.
The Federated SNS (social network service/system) timeline is a simple list of its history. To put it another way, it is a record of how the Fediverse came to be. This is only one part of the larger Federated Social Web. For this list, we defined SNS as services meant for posting updates (microblogging, macro-blogging, blogging), uploading images, leaving comments, re-sharing, and liking; or simply, the Fediverse.
This specification details a profile for using Linked Data Notifications [LDN] with ActivityStreams2 [AS2] payloads in value-adding networks. A value-added network, as considered by this specification, is a network in which Web resources, for the purpose of this specification named Artifacts, are made available by nodes in the network, value is added to these Artifacts by other nodes in the network, and LDN+AS2 notifications with that regard are exchanged among network nodes.
Event Notifications in Value-Adding Networks
"Note on current state (as of 2020-05-24) Pleroma Minimal "client to server" #ActivityPub implementation is available. It is tested at https://queer.hacktivis.me/AndStatus (that site has the latest ..."
The Activity Streams 2.0 Core Syntax defines the JSON syntax for Activity Streams. This document defines the vocabulary properties. The Activity Streams 2.0 Vocabulary defines a set of abstract types and properties that describe past, present and future Activities.
This is the AS2 OWL ontology which was abandoned in 2016 (not fully working or complete).
The Web Ontology Language OWL is a semantic markup language for publishing and sharing ontologies on the World Wide Web. OWL is developed as a vocabulary extension of RDF (the Resource Description Framework) and is derived from the DAML+OIL Web Ontology Language. This document contains a structured informal description of the full set of OWL language constructs and is meant to serve as a reference for OWL users who want to construct OWL ontologies.
dsblank/activitypub: A general Python ActivityPub library
Lessons learned from making apps that play nice with the fediverse.
Proposals for new features to improve the Fediverse.
There are a number of issues with the decentralized nature of the Fediverse. One of them is that we are not seeing replies from people we do not follow.
The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.
In the most basic sense, an "Activity" is a semantic description of an action. It is the goal of this specification to provide a JSON-based syntax that is sufficient to express metadata about activities in a rich, human-friendly but machine-processable and extensible manner. This can include constructing natural-language descriptions or visual representations about the activity, associating actionable information with various types of objects, communicating or recording activity logs, or delegation of potential actions to other applications.
Linked Data Notifications is a protocol that describes how servers (receivers) can have messages pushed to them by applications (senders), as well as how other applications (consumers) may retrieve those messages. Any resource can advertise a receiving endpoint (Inbox) for the messages. Messages are expressed in RDF, and can contain any data.
The Social Web Protocols are a collection of standards which enable various aspects of decentralised social interaction on the Web. This document describes the purposes of each, and how they fit together.
The Resource Description Framework (RDF) is a general-purpose language for representing information on the Web. This document defines a textual syntax for RDF called Turtle that allows an RDF graph to be completely written in a compact and natural text form, with abbreviations for common usage patterns and datatypes. Turtle provides levels of compatibility with the N-Triples [N-TRIPLES] format as well as the triple pattern syntax of the SPARQL W3C Recommendation.
This document includes errata for the Activity Streams and Activity Vocabulary documents.
W3C hosts thousands of mailing lists for our group members and the general public to discuss and send feedback on Web standards work at W3C. The corresponding mailing list archives contain millions of messages dating back to the earliest days of the Web. Most W3C public mailing lists allow anyone to join and participate.
General discussion for Fediverse development topics.
A little misleading since it doesn't actually list any errors (and they are there), but it's where they will go. There is also a link to the proposed errata.
A list of non-normative tutorials and commentary about Activity Streams topics. This is sometimes useful for understanding some of the quirks of the specification.
This page exists to document extensions to the ActivityPub protocol. Extensions are developed as part of the SWICG.
This page documents known AS2 extensions and best practices for using other namespaces in AS2.
This document lists the terms used for the ActivityStreams 2.0 protocol and its stable extensions, and provides a namespace so each term has an HTTP IRI. This document is merely a W3C-internal document. It has no official standing of any kind and does not represent consensus of the W3C Membership.
Discussion of how collections are used in ActivityPub.
Is ActivityStreams Collection under-specified?
People are social creatures, and social networking is part of human nature. Social Media have clouded our vision and distorted what 'social' means. The Social Coding Movement aims to Reimagine Social Networking and envision a Peopleverse.
Mastodon provides access to its data over a REST API. REST stands for REpresentational State Transfer, but for our purposes, just think of it as sending and receiving information about various resources based on the request. The Mastodon REST API uses HTTP for its requests, and JSON for its payloads.
Owlready2 is a package for ontology-oriented programming in Python. It can load OWL 2.0 ontologies as Python objects, modify them, save them, and perform reasoning via HermiT (included). Owlready2 allows a transparent access to OWL ontologies (contrary to usual Java-based API).
Build better together and create solutions that people love
This is an interesting document from a historical perspective. A lot changed between this first public draft and the final specification.
ActivityPub - First Public Working Draft
A manager for Mastodon Lists which lets you add people you follow to lists through an intuitive grid-based interface.
This is the second in a series of posts where the Robert W. Gehls shares his notes on his readings of the minutes of the Social Web Working Group. The first one is here. Future posts to come. In this section, He covers the development of ActivityStreams 2.0, the first goal of the SocialWG charter.
Reading the Minutes of the Social Web Working Group, part 2
ActivityPub.Academy is a learning resource for ActivityPub. The protocol is brought to life by showing Activities sent between different instances in real time! This is Mastodon-oriented, but gives some insight into ActivityPub as well.
This is the public mailing list for the Social Web Incubator Community Group (swicg). Anyone may read or write to this list.
ActivityPub Client-to-Server (AP C2S) is probably the least understood part of ActivityPub and there is very few documentation and running code for it and ActivityPub is mostly underspecified.
"Where ActivityPub developers coordinate their efforts to make the Fediverse a great space for cooperation"
Mastodon ActivityPub-specific documentation.
ActivityPub and ActivityStreams implementation in GNU Guile. This is a link to the test suite code.
Original ActivityPub Test Suite (Pubstrate/Guile)