Hi folks, Dorian here.
Some of you may know me, and an even smaller subset may know that I’m working on an application server called Intertwingler, whose purpose is to create a durable substrate for making websites out of very large numbers of very small objects, with many many many (typed) links that do not break.
(See my Summer of Protocols paper, Retrofitting the Web for a background on Intertwingler, or a newsletter I just shipped that has a much more concise description.)
The short-term goal is the planning tool I’m calling Sense Atlas (that’ll be slow to load at first until sometime next week when I implement internal caching, lol), but in the longer term I am looking at Intertwingler (or likely a successor) to act as a general-purpose server for what I’ve termed “dense hypermedia” networks. I also have a plan to federate Intertwingler, though using little more than ordinary HTTP reverse proxying.
Intertwingler backs onto an RDF graph database for what I’m calling “transparent” resources, (ie structured data objects that do not correspond to any canonical string of bytes) and a content-addressable store for “opaque” (i.e., arbitrary byte segments the system can’t see into). It also functions roughly as a microservice bus, including an interface for transformation functions that can compose to operate over HTTP messages. I am calling this configuration “Semantic REST”.
Anyway, what I’m getting at is that Intertwingler has the basic ingredients for a PDS, albeit one that is potentially agnostic about what language it speaks. A use case for this would be a BlueSky PDS that was also a personal Mastodon instance, plus whatever else comes along in the future. The goal at this stage is mainly a flex just to say I can do it, but I anticipate it will yield valuable insights.
I see two immediate challenges:
- reconciling Lexicon with RDF, such that there can be a lossless pair of pure, deterministic functions that can map between them (or prove they can’t exist)
- reconciling HTTP/REST with WebSocket/XRPC (something I plan on exploring anyway—mapping message semantics to resources and back)
I’m not asking for anybody’s help at this time, just announcing that I’m considering doing this. Intertwingler is still pretty rough (I’m still a few months away from an installation candidate). But the goal is to make it indistinguishable from the point of view of the network from any other PDS.
PS: I submitted a talk to ATmosphereConf about this.