It'll really be nice being at the end of this CapTP journey and being able to be like, "Yeah! It works!"
But I am much less terrified mid-journey than I was at the start! (Thank you to everyone who have been helping me and answering questions, you know who you are!)
@pea Oh boy! This is a great question! I agree that it hasn't been described succinctly.
I am going to take on that challenge.... but after I finish preparing lunch :)
@pea Ok, tl;dr on CapTP as promised: Stands for "Capability Transport Protocol", allows for secure distributed programming across "mutually suspicious" systems efficiently, with distributed garbage collection and a highly efficient promise resolution system!
This is fast, powerful, and efficient enough to do something as advanced as distributed virtual worlds despite a potentially hostile network!
@pea IN OTHER WORDS: let's say you want a distributed programming environment. And actually, you want to open it up to the entire internet! Except you don't trust the whole internet. But you want to be able to make cool things and hand out access! But you don't want to run out of memory for all the garbage sitting around. And you want to be able to make programming this system not resemble "callback hell" and have it be efficient!
CapTP does *all those things*.
@pea You might want this for all sorts of things. But a really, really hard use case is distributed social worlds, where all that stuff has to be efficient and it has to be easy for users to program in!
Here's the best part: CapTP was designed with exactly that use case in mind. Its origin is from Electric Communities Habitat!
@pea CapTP, the concept, has been implemented a number of times since Electric Communities, so it's more like a family of protocols with some shared fundamentals than a single protocol right now. But maybe there will be a Common Lisp / Scheme-like unification effort soon.
@cwebber is there a page/reference about capTP? i'm curious/interested
@robey There are a number of pages, but I'm going to ack here that I don't think any of them are super easy to understand for a newcomer:
I am also documenting my journey here: https://groups.google.com/forum/#!topic/cap-talk/xWv2-J62g-I
@cwebber thanks! the captain link is actually quite readable! (tho it may help that i've been writing distsys for a couple of decades)
@cwebber hahahaha as someone who's always wanted to write a distributed mud, you can't imagine my crushing disappointment that the author never wrote this page: http://www.erights.org/elib/capability/ode/ode-game.html
@cwebber Does CapTP require the same functions to exist on both sides of the protocol?
Calculator example: if I try to tell vatB (+ 2 2) it would need to know the + operation (and I would need the cap to use it) in addition to the data sent over the wire?
@cj No it does not!
Instead you can have a reference to an adder on the other end and pass it two numbers to add, and resolve that promise!
@cwebber Ah, so that reference would need to point back to a vat that has that operator. Kind of parallels Dependency Injection over the network, or passing in a function over the network, etc.
Thanks for clarifying!
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!