How Spritely Goblins Makes Building Distributed Applications Easy!

https://spritely.institute

Intros!

We are a research institution!

Research means collaboration

  • Meet the Spritely (Networked Communities) Institute!
  • We're building the future of networked communities architecture
  • But decentralized networks are too hard!
  • How we're solving these problems
    • A few things you may have seen last year
    • A whole bunch of new stuff this year
  • Where we're going

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

What's on the roadmap for 2024?

  • Persistence!
  • New netlayers! (libp2p, etc)
  • Our tech working in the browser (WASM)!
  • Social user interface work / etc starts ramping up

We are a research institution! Work with us!

https://community.spritely.institute (Code: OCAPN2023)

Questions?

https://spritely.institute