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:
- Host services. System services that are provided by
ActorSystem
, relating to the host.
- Special
System
application actor offers e.g. HostInfo
, HostAdmin
, AppServices
services.
- 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”.
- 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.)