Protosocial ActivityPub protocol

Protosocial ActivityPub v1.0.0


SX Solution mockup, showing a sticky note with the text "1. Develop fediverse services with ease".


Pro-social protocol suite for the social web, based on ActivityPub

Protosocial ActivityPub protocol is an extension of W3C ActivityPub that focuses on ease of use for the development of fediverse solutions and services. Together with comprehensive guidance and design tools it provides solution developers simple ways to model rich and interactive social web experiences.


Is that something that sounds attractive to y’all to participate in via Protosocial fellowship?

Protosocial ActivityPub is an opinionated protocol extension of the W3C ActivityPub social web protocol, that is particularly suited for the design and composition of intricate social networking solutions, with a good developer experience. Designed for ease of use, Protosocial ActivityPub exposes a service-oriented social graph of addressible actors to exchange semantic information with.

Conceptual layer
3. Information layer Knowledge graph, linked data, open world
2. Service layer Event-driven, actor model, schema-based, closed world
1. Access layer Social graph, actor discovery, service introspection

In the access layer a Protosocial provider spins up an actor system, and starts one or more application actors. When the actor system is ready, the social graph is accessible to discover actors on the network and communicate with them. Each actor may expose services that can be introspected and invoked to initiate in message exchange between actors.

In Protosocial ActivityPub…

  • Everything is an actor. The social network is a graph of actors.
  • Social network is hosted by “Protosocial providers” via Application actors.
  • Protosocial providers manage one ActorSystem, one or more Application actors.
  • Application actors facilitate discovery, introspection, invocation of services.
  • Services can be introspected and are represented by Service actors.
  • Each actor has an Inbox for messages, can create child actors, can call other actors.
  • Actors that create child actors form a supervision tree leading up to ActorSystem.

Unlike W3C ActivityPub the Protosocial extension…

  • Does not distinguish between S2S and C2S as separate conformance levels.
  • Server, client, instance, user, bot, identity, application, platform are tech layer impl details.
    • Unless they are explicitly modeled in higher conceptual layers.
  • Does not use out-of-bound mechanisms like NodeInfo and WebFinger protocols.
  • Does not use mechanisms that would break the actor model like sharedInbox.
  • Uses W3C ActivityStreams as special-purpose toolkit to model protocol capabilities.

Protosocial extension is service-oriented by means of Service actors. There are 3 service types:

  1. Host services. System services that are provided by ActorSystem, relating to the host.
    • Special System application actor offers e.g. HostInfo, HostAdmin, AppServices services.
  2. Application services. Supportive services that Application actors offer to solution services.
    • Conceptually “applications” are only meaningfully defined in context of the host system.
    • Application actors represent a “service composition” that provides a “solution”.
  3. Solution services. Domain services that model the solution’s social networking use case(s).
    • Model bounded contexts for core and supportive domains of the solution.

(Background to this post was prior discussion on the Groundwork labs matrix chatroom with @stevebate @indieterminacy and @trwnh.)