An Overview of Spritely's Distributed Tech

https://spritely.institute

We are a research institution!

Research means collaboration

On "Networked Communities" at a high level

ActivityPub-logo-large.png

cyberspace-protocol-requirements.png

But it's too hard to build this stuff right now!

Secure, distributed programming is hard

Goblins: distributed, cooperative, transactional programming

Distributed security you can understand

  • If you don't have it, you can't use it
  • It's just argument passing!

Error recovery is hard

Easy local transactions

(define (^mint _bcom)
  (define-values (decr-seal decr-unseal _decr-sealed?)
    (make-sealer-triplet 'mint))
  (define (^purse _bcom initial-balance)
    (define-cell balance
      initial-balance)
    (define (<=-balance? amount)
      (<= amount ($ balance)))
    (define/contract (decr amount)
      (-> (and/c integer? (>=/c 0) <=-balance?)
          any/c)
      ($ balance (- ($ balance) amount)))
    (define/contract (deposit-method amount src)
      (-> (and/c integer? (>=/c 0)) any/c any/c)
      ((decr-unseal ($ src 'get-decr)) amount)
      ($ balance (+ ($ balance) amount)))
    (methods
     [(get-balance) ($ balance)]
     [(sprout) (spawn ^purse 0)]
     [deposit deposit-method]
     [(get-decr) (decr-seal decr)]))
  (define/contract (fiat-make-purse initial-balance)
    (-> (and/c integer? (>=/c 0)) any/c)
    (spawn ^purse initial-balance))
  (methods [new-purse fiat-make-purse]))

Debugging asynchronous networks is hard

Time-traveling distributed debugger

Network protocols are hard

OCapN: the Object Capability Network

Distributed GC?!?!

Flexible "netlayers"!!!

Promise pipelining?!?!?!?!

You don't have to think about any of this!

Explaining these ideas is hard

Building these abstractions is hard

We are a research institution! Work with us!

Questions?