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 in the Common social groundwork matrix chatroom with @stevebate @indieterminacy and @trwnh.)