delightful-fediverse-apps/Watchlist-for-ActivityPub-developer-resources.md
2021-09-02 06:00:14 +00:00

19 KiB

  • ✔️ == added to live website at fediverse.party
  • ✒️ == newly added to this page (added, not altered. Only @light to remove please)

Contents

Developer tools

Libraries

  • ✔️ ActivityPhp (site, Fedi account): A PHP implementation of ActivityPub protocol based upon the ActivityStreams 2.0 data format. MIT, PHP

  • ✔️ ActivityPub Express: Modular ActivityPub implementation as Express.js middleware to easily add decentralization and federation to Node apps -, Javascript

  • ✔️ ActivityPub-PHP (Fedi account): A PHP implementation of the ActivityPub protocol (used in Pterotype plugin). MIT, PHP

  • ✔️ activityPub4j: W3C ActivityPub and ActivityStreams implementation in Java using Spring Boot. ?, Java (no license, see: issue)

  • ✔️ ActivityStreams: Full ActivityStreams 1.0 and 2.0 reference implementation in Java. Apache-2.0, Java

  • ✒️ ActivityServe: A very light ActivityPub library in Go (used to power pherephone) MIT, Go

  • ✔️ ActivityStreams-2: ActivityStreams 2.0 library for Node.js and TypeScript. Apache-2.0, Typescript

  • ✔️ astreams (Fedi account): A hand-crafted implementation of the Activity Streams 2.0 specification in Go, especially suitable for projects implementing ActivityPub. AGPL-3.0, Go

  • ✔️ atoot: Library providing an easy way to create Mastodon API applications MIT, Python

  • ✒️ Clovis: [ARCHIVED] Implementation of ActivityPub in Scala. (Hobby project included here for reference only.) AGPL-3.0, Scala

  • ✔️ CommonsPub (site): Building blocks for creating multifunctional federated networks with ActivityPub. AGPL-3.0, Elixir

  • ✔️ corpus-activity-streams: Activity Streams 2.0 vocabulary data and alternative docs. Unlicense license, Typescript

  • ✒️ dda-masto-embed (Fedi account): Embeds mastodon timline into a html page. Uses JS, no intermediate server required. Apache-2.0, ClojureScript

  • ✔️ Express ActivityPub: A very simple reference implementation of an ActivityPub server using Express.js. MIT, Javascript

  • ✔️ Federation: Library to abstract social web federation protocols like ActivityPub, Diaspora and Matrix (see docs) BSD-3-clause, Python

  • ✔️ Golang ActivityPub (Fedi account): Libraries for using ActivityPub in the Go language. MIT, Go

  • ✔️ go-fed activity (site, Fedi account): 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). BSD-3-clause, Go

  • ✔️ go-fed apcore (site, Fedi account): A powerful single server ActivityPub framework for performant Fediverse applications. AGPL-3.0, Go

  • ✒️ go-mastodon: Mastodon client for Golang. MIT, Go

  • ✔️ http-signature: Implementation of the HTTP Signature scheme as used in ActivityPub. Apache-2.0, Typescript

  • ✔️ Little Boxes: Tiny ActivityPub framework, both database and server agnostic ISC, Python

  • ✔️ Little Library: A digital give-a-book, take-a-book library for ebooks AGPL-3.0, Javascript

  • ✔️ Mastodon.py: Python wrapper for the Mastodon API. MIT, Python

  • ✔️ Pubstrate: ActivityStreams and ActivityPub library implementation for GNU Guile. Includes a full ActivityStreams library and most of an ActivityPub implementation. GPL-3.0, Guile

  • ✔️ Python ActivityPub: A general ActivityPub library MPL-2.0, Python

Plugins

Relays

For an overview of known relays, see A sorted list of ActivityPub relays for Mastodon or Pleroma.

Bridges

  • ✔️ BirdSiteLIVE (Fedi account): An ethical bridge from Twitter AGPL-3.0, C#

  • ✔️ BridgyFed (site): Bridges the IndieWeb to federated social networks: ActivityPub, OStatus, etc. Public Domain, Python

  • ✔️ Fediverse-Action: Github Action that posts to Fediverse when code is changed. ISC License, Javascript

  • ✔️ feed2toot: Parses RSS feeds, identifies new posts and posts them on the Mastodon social network (using the Mastodon API). MIT, Python

  • ✔️ gemifedi: A Gemini frontend to the fediverse (specifically, Mastodon and Pleroma instances). AGPL-3.0, Rust

  • ✔️ Kazarma: A Matrix bridge to ActivityPub. AGPL-3.0, Elixir

  • ✔️ Libervia (site, Fedi account): An XMPP <=> ActivityPub gateway project doubled with XMPP Pubsub end-to-end encryption AGPL-3.0, Python

  • ✔️ ligh7hau5: A Matrix to Fediverse / ActivityPub client / bridge. Also, some media proxying. GPL-3.0, Javascript

  • ✔️ Moa (site): A Mastodon, Twitter, and Instagram Cross-poster. MIT, Python

  • ✔️ MXToot (Fedi account): A Matrix <--> Mastodon bot written in Java. Apache-2.0, Java

  • ✔️ Nautilus: A standalone service to deliver posts from your own website to ActivityPub followers. Apache-2.0, PHP

  • ✔️ PeerTube (on Matrix) Search: 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. GPL-3.0, Python

  • ✔️ RSS-to-ActivityPub Converter: Convert any RSS feed to an ActivityPub actor that can be followed by users on ActivityPub-compliant social networks like Mastodon. MIT, Javascript

  • ✔️ YouTube2PeerTube: A bot that mirrors YouTube channels to PeerTube channels as videos are released in a YouTube channel. AGPL-3.0, Python

Utilities

  • ✒️ ActivityPubSchema: JSON Schema definition of the ActivityStreams and ActivityPub specifications. MIT, Javascript

  • ✔️ FediHealth: Software to help you define federation policies for your node. AGPL-3.0, Python

  • ✔️ Fediverse Stats (Fedi account): Collects maximum number of alive fediverse's servers and then query their API to obtain their registered users. GPL-3.0, Python

  • ✔️ Mastodon Bot Autoresponder (Fedi account): a bot that implements group functionality in Mastodon. MIT, Python

  • ✔️ OCR Bot (Fedi account): An OCR (Optical Character Recognition) bot for Mastodon (and compatible) instances AGPL-3.0, Python

  • ✔️ Pherephone: 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. AGPL-3.0, Go

  • ✔️ tags-pub: Provides hashtag objects on the ActivityPub network. Apache-2.0, Javascript

  • ✔️ tootgroup.py: Emulate group accounts on Mastodon. GPL-3.0, Python

  • ✔️ yt2pt: A simple set of scripts to quickly import your youtube channel to Peertube. MIT, Javascript

✔️ Moderator Alerts (Fedi account): Mastodon moderation alerts using Pushover.net. -, Python

Testing

  • ✔️ activitypub-mock: A mock ActivityPub server to use in testing code Apache-2.0, Javascript

  • ✒️ dfk-ap (site): A small ActivityPub debugging server on Glitch MIT, Javascript

  • ✔️ FediDB: A suite of tools for AP devs to help make it easier to test and validate your implementation with existing implementations like Mastodon, PeerTube, Pixelfed and Pleroma -, -

  • ✔️ Test Suite: An unofficial partially-automated ActivityPub test suite AGPL-3.0, Go

Miscellaneous projects

This category is for any code project related to the Fediverse. They need not be directly development related.

  • ✒️ Sepia Search (site): A search engine of PeerTube videos and channels Developed by Framasoft AGPL-3.0, Typescript

Social sharing

  • ✔️ Share Buttons: Share buttons that support dynamic input of Fediverse URLs and require no Javascript. AGPL-3,0, PHP

  • ✔️ Share Freedom: Firefox toolbar extension to share the current browser tab to the Fediverse GPL-3.0, Javascript

Other projects

Reference material

Protocol specifications

  • ✔️ ForgeFed, formerly GitPub (site, Fedi account): A set of extensions to ActivityPub for federation between code forges (i.e. git hosting sites like GitLab, Gogs, Gitea, etc. Reference implementation is Vervis). CC0-1.0

  • ✔️ LitePub (Fedi account): A set of extensions to AP, being developed by devs from Pleroma and Mastodon (status: for the most part litepub group folded back into SocialCG, see: issue)

  • ✔️ NodeInfo2: An effort to create a standardized way of exposing metadata about a server. Helps expose ownership and organization details, usage statistics and protocol capabilities. CC0-1.0

  • ✒️ Podcasting: Workspace for defining ActivityPub and ActivityStream extensions for Podcasting with the intention to define a W3C Recommendation for them.

  • ✔️ SciFed (Fedi accounts: @rigelk, @cerisara): A specification standard (Draft) for federation of scientific activities and content using ActivityPub, developed as part of the OLKi project.

API documentation

Tutorials

Getting started

ActivityPub server-to-server (S2S)

ActivityPub client-to-server (C2S)

WebFinger

Security

NodeInfo

Research & Development

Datashards

Object capabilities

Federated auth/authz

Content addressing

Distributed Mutable Containers

  • ✒️ Distributed Mutable Containers (DMC): Distributed data structures that can hold references to content while allowing replicas of the data structures to diverge and merge without conflict (developed by DREAM)

Peer-to-peer networking