Our document model is a distributed program. A network of computers ran the same program, exchanging messages to maintain a shared state.
I believe we can build other Distributed Programs using the same software design primitives. Inbox is a good exercise. Instead of designing the Inbox Program as a centralized program on a server, what if we open the door to make it a Distributed Program?
Our principle is to build a decentralized web. How can we keep that promise if a necessary service, such as the inbox service, is centralized?
The primitives of Distributed Programs would be:
Objects as conceptual abstractions.
Messages as CRDT operations.
A distributed syncing engine.
Hypermedia Caps.