I've made massive strides on CapTP for @spritelyproject and honestly, I think this is the most important work I've done in my life. But it's hard to explain *why* when few people even know what CapTP *is*.
So: CapTP explainer 🧵, right here (with blogpost to follow):
"Distributed object programming": Yes, CapTP allows you to program across networks with the level of convenience as if you were programming against *local objects*.
(Throw out your assumptions of "objects" as OOP, this can be functional; @spritelyproject's is)
Well, 250 lines for the protocol, a mere 300 lines more for the GUI: https://dustycloud.org/blog/spritely-goblins-v0.7-released/
And it was *easy* for me to think about the security properties... because I was just thinking about how the *program* worked.
That means less time spent on "bespoke APIs".
Before I get any further on the "cool details": I want to emphasize that CapTP is not a @spritelyproject
invention. Mark S. Miller and many others helped me understand the design, which goes back 20 years in the E language: http://erights.org
You may have also even used a variant of CapTP: Cap'N Proto is a kind of CapTP, and many of its users don't know.
We hope to standardize this variant of CapTP in @spritelyproject and be interoperable with @agoric@twitter.com even though we use Scheme and they use JS. Language-agnostic!
Now the state of things: Agoric and @spritelyproject both want to implement the same CapTP (we aren't yet). @spritelyproject is a bit further ahead right now, but only got there with the help of folks at Agoric, so we really are working together!
(The reason @spritelyproject is further ahead is that Agoric is doing the hard work of helping the Javascript community get the features necessary to build this dream (important!); @spritelyproject started off on a more obscure foundation that already had all the needed pieces.)
So what now? I just implemented the last two hard pieces in @spritelyproject's CapTP: "handoffs" and "shortening/unwrapping" of object references that come home, which honestly is extra technical details that aren't important to go into here.
So what's next?
First, I need to clean things up. Then I need to do a writeup of how things currently work in our implementation. Then @spritelyproject and Agoric can talk more about how to get our implementations to align. That process is going to take quite a while but now it can start.
A virtual worlds demo is probably the next big @spritelyproject demo; no promises on when the delivery is, but hopefully in 4 months. The first one will be a minimal distributed textual virtual world (like a MUD), then after that a 2d top-down viewpoint one. Probably.
@cwebber
I'm super excited, congrats on your breakthrough! I'm dying to contribute when I have the chance to (and when I understand enough to). I'm slowly understanding the potential of @spritelyproject.
Keep being visionary.
@torresjrjr @spritelyproject Thank you! :)