#+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:
*** COMMENT Distributed GC?!?!
*** COMMENT Flexible "netlayers"!!!
*** COMMENT Promise pipelining?!?!?!?!
** Explaining these ideas is hard
***
#+REVEAL_HTML:
***
#+REVEAL_HTML:
***
#+REVEAL_HTML:
***
#+REVEAL_HTML:
** Hoot: putting Spritely's tech in the hands of users
#+REVEAL_HTML:
*** COMMENT
#+REVEAL_HTML:
***
#+BEGIN_SRC scheme
(define (update from to)
(do ((y 0 (+ y 1)))
((= y grid-size))
(do ((x 0 (+ x 1)))
((= x grid-size))
(let* ((t (grid-ref from x y))
(t* (cond
((= t empty) empty)
((= t cu)
(if (<= 1 (neighbors from x y) 2) ehead cu))
((= t ehead) etail)
((= t etail) cu))))
(grid-set! to x y t*)))))
#+END_SRC
***
#+REVEAL_HTML:
* 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!
#+REVEAL_HTML:
https://community.spritely.institute (Code: OCAPN2023)
* Questions?
#+REVEAL_HTML:
https://spritely.institute