Skip to content

ActivityPub / fediverse federation #39

@nwwatson

Description

@nwwatson

Summary

Prose has no fediverse/ActivityPub integration. ActivityPub is the protocol powering Mastodon, Threads (Meta), and the broader fediverse. Federation allows blog posts to appear in Mastodon feeds and enables fediverse users to follow, like, and reply to posts.

Who Has This

  • WriteFreely — Full ActivityPub integration
  • Micro.blog — Native federation
  • WordPress — Via official ActivityPub plugin

Why This Matters

ActivityPub is a growing W3C standard for decentralized social networking. Integration expands content distribution to millions of fediverse users without relying on corporate platforms. It aligns perfectly with Prose's self-hosted, data-ownership philosophy.

Recommended Implementation

Core Concepts

  • Each blog becomes an ActivityPub "Actor" with an inbox/outbox
  • Published posts become "Note" or "Article" activities
  • Fediverse users can follow the blog actor to receive posts
  • Comments from fediverse users appear as local comments

Steps

  1. Implement WebFinger endpoint (/.well-known/webfinger)
  2. Create Actor endpoint (blog profile in ActivityPub format)
  3. Implement inbox/outbox endpoints
  4. Sign outgoing activities with HTTP Signatures
  5. Broadcast "Create" activities when posts are published
  6. Process incoming "Follow", "Like", "Create" (reply) activities

Key Files to Create

  • app/controllers/activitypub/ — WebFinger, Actor, Inbox, Outbox controllers
  • app/services/activitypub/ — Activity serialization, HTTP signature signing/verification
  • app/jobs/DeliverActivityJob for federated delivery
  • config/routes.rb — ActivityPub routes

Gems to Consider

  • httparty or faraday — HTTP client for federation delivery
  • Custom HTTP Signatures implementation (no mature Ruby gem exists)

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNet-new functionalitytier-3-nice-to-haveDifferentiators and emerging standards

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions