#+TITLE: The Spritely Institute: New Foundations for Networked Communities #+AUTHOR: Christine Lemmer-Webber & David Thompson #+DATE: 2023-10-23 Mon #+REVEAL_INIT_OPTIONS: width:1200, height:800, controlsLayout: 'edges' # #+OPTIONS: reveal_center:t reveal_progress:t reveal_history:nil reveal_control:t # #+OPTIONS: reveal_mathjax:t reveal_rolling_links:t reveal_keyboard:t reveal_overview:t num:nil # #+OPTIONS: reveal_width:1200 reveal_height:800 #+OPTIONS: toc:nil num:nil reveal_title_slide:nil #+REVEAL_MARGIN: 0.075 #+REVEAL_MIN_SCALE: 0.5 #+REVEAL_MAX_SCALE: 2.5 #+REVEAL_TRANS: cube #+REVEAL_THEME: night #+REVEAL_HLEVEL: 3 #+REVEAL_HEAD_PREAMBLE: #+REVEAL_ROOT: ../static/reveal.js * The Spritely Institute: New Foundations for Networked Communities https://spritely.institute ** Intros! ** We are a research institution! #+REVEAL_HTML: ** Research means collaboration #+REVEAL_HTML: ** COMMENT - 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 *** [[file:../static/ActivityPub-logo-large.png]] *** #+REVEAL_HTML: *** [[file:../static/cyberspace-protocol-requirements.png]] *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: * But it's too hard to build this stuff right now! ** Secure, distributed programming is hard *** Goblins: distributed, cooperative, transactional programming #+REVEAL_HTML: *** Distributed security you can understand - If you don't have it, you can't use it - It's just argument passing! *** COMMENT #+REVEAL_HTML: *** COMMENT #+REVEAL_HTML: *** COMMENT #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** COMMENT #+REVEAL_HTML: *** #+REVEAL_HTML: ** COMMENT Error recovery is hard *** Easy local transactions #+BEGIN_SRC scheme (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])) #+END_SRC *** #+REVEAL_HTML: ** Debugging asynchronous networks is hard *** Time-traveling distributed debugger #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: ** Network protocols are hard *** OCapN: the Object Capability Network #+REVEAL_HTML: