- Racket 100%
| examples | Add bootstrap require | |
| cad.rkt | Add cad.rkt | |
| interfaces.org | Also thank the FOSS & Crafts Studios patreon account supporters | |
| LICENSE.txt | Add LICENSE.txt | |
| README.org | Fix case-sensitive spelling of NLnet | |
This repository shows approaches to handling distributed interfaces and descriptors using Spritely Goblins as an example. It also has a paper!
This work was funded by NLnet and NGI Zero. The bulk of CapTP, the implementation of invokers/incanters, and the design of Content Addressed Terms (not to mention the paper!) has happened under the work of this funding. Thank you!
The core ideas / developments
The main idea here is to enable exploring how another object behaves over a network. This paper, and associated code, do so by taking advantage of distributed object communication using CapTP (more on CapTP). Descriptions are content-addressed permitting definitions to exist anywhere, and querying mechanisms are done through invoker capabilities. But really, read the paper.
Running the examples
Really there are two examples you might want to try:
Running the CAD examples
Pretty simple:
$ cd examples
$ racket cad-examples.rkt
It's pretty simple, it just shows how various kinds of descriptors can be content-addressed in a consistent way.
Running the rich interface examples
You'll need to launch the Tor daemon for Goblins. It's mildly annoying to set up at the time of writing, but the instructions are on the Goblins CapTP documentation page.
Okay, done? Then open two terminals. In the first one:
$ cd examples
$ racket rich-interface-server.rkt
That'll print out two "sturdyrefs", one for the parrot, one for the
describe incanter, that you want to paste to rich-interface-client.rkt.1
But actually, the last line it spits out is just the whole command you want
to copy-paste to run the entirety of that command for your convenience.
Anyway, once you do so it'll do a few things:
- Fetch and print the structured representation of the parrot's remote interface
- Print that out in a human-meaningful form
- Invoke the parrot and print out its result
Legal stuff
Code is licensed under Apache v2, see LICENSE.txt. The paper and this document are dual-licensed under and Apache v2 and CC BY 4.0 International.
By the way, Goblins with Tor Onion Services is peer to peer so client to server so this is kind of a misnomer. But it's the eaiest way to say "here's the thing that will be connecting, and here's the thing it will connect to" in familiar language I know of.