A presentation at StrangeLoop in in St. Louis, MO, USA by Brooklyn Zelenka
IPVM Seamless Services βFor an Open Worldβ π Light Cones, User Agency, & Connecting Everything 𧩠github.com/ipvm-wg fission.codes
Seamless Services for an Open World
Seamless Services for an Open World We cannot sow seeds with clenched fists. To sow we must open our hands. β Adolfo Perez Esquivel
Seamless Services for an Open World
Seamless Services for an Open World Jesper, I have this idea in which weβll connect all of the worlds Erlang systems to each other, imagine if every process could talk to every other process, world-wide! β Joe Armstrong, email to Jesper L. Andersen
Seamless Services for an Open World Brooklyn Zelenka @expede
Seamless Services for an Open World Brooklyn Zelenka @expede github.com/expede
Seamless Services for an Open World Brooklyn Zelenka @expede Cofounder & CTO at Fission Codes https://fission.codes PLT and DSys are my jam π€ Witchcraft, UCAN, WNFS, Rhizome, Multiformats, EIPs, &c github.com/expede
Seamless Services for an Open World Brooklyn Zelenka @expede Cofounder & CTO at Fission Codes https://fission.codes github.com/expede PLT and DSys are my jam π€ Witchcraft, UCAN, WNFS, Rhizome, Multiformats, EIPs, &c π¦ Rust IPVM implementation (mainly) by Zeeshan Lakhani Joint work with Protocol Labs, Expanso, and others github.com/zeeshanlakhani
Seamless Services for an Open World Rolling Weight
Seamless Services for an Open World Rolling Weight Other 35% IBM 4% Alibaba 4% Google 9% AWS 32% Azure 17%
Seamless Services for an Open World Rolling Weight Other 35% IBM 4% Alibaba 4% Google 9% AWS 32% Azure 17%
Seamless Services for an Open World Rolling Weight Other 35% IBM 4% Alibaba 4% Google 9% AWS 32% Azure 17%
Seamless Services for an Open World Rolling Weight Other 35% IBM 4% Alibaba 4% Google 9% AWS 32% Azure 17%
Seamless Services for an Open World Rolling Weight Other 35% IBM 4% Alibaba 4% Google 9% AWS 32% Azure 17%
Seamless Services for an Open World Everything, Everywhere, All At Once
Seamless Services for an Open World Everything, Everywhere, All At Once Nothing less than connecting all of the worldβs users & services. The βHTTPβ storage and compute equivalent: open, interoperable, & everywhere. Must be substantially better than the status quo.
Seamless Services for an Open World Dependency Stack
Seamless Services for an Open World Dependency Stack Compute β
Seamless Services for an Open World Dependency Stack Compute β Data πΎ
Seamless Services for an Open World Dependency Stack Compute β Data πΎ Auth π
β A Series of Very Reasonable Steps β How We Got Here
How We Got Here One-to-One
How We Got Here One-to-One π π₯
How We Got Here One-to-One π π₯ π’
How We Got Here One-to-One π π₯ π’ π
How We Got Here One-to-One π π₯ π’ β π
How We Got Here One-to-One π π₯ π’ β πͺ π
How We Got Here One-to-One π π₯ π’ β πͺ π
How We Got Here One-to-One π π π π₯ π’ π₯ π’ π₯ π’ β πͺ π
How We Got Here One-to-One π π π π₯ π’ π₯ π’ π₯ π’ β πͺ π π
How We Got Here Hidden Many-to-Many π π π π₯ π₯ π₯ π β β β π π π π π π
How We Got Here Invisible Many-to-Many π π π π₯ π₯ π₯ π β β β π π π π π π
How We Got Here Invisible Many-to-Many π π π π₯ π₯ π₯ β π π π β π βCloudβ π β π β π
How We Got Here Abstract Many-to-Many π π π π₯ π₯ π₯ β π π π β π βServerlessβ π π (AKA more βservers) π© π
How We Got Here β¦and so it was for many yearsβ¦
How We Got Here β¦and so it was for many yearsβ¦ π¦βππΎπ°π’π
How We Got Here Consequences π
How We Got Here Consequences π β’ Single source of truth (βtheβ database)
How We Got Here Consequences π β’ Single source of truth (βtheβ database) β’ Server-centric β’ βFull stack developmentβ β’ DevOps, Docker, k8s, IaC β’ How to train enough engineers?
How We Got Here Consequences π β’ Single source of truth (βtheβ database) β’ Server-centric β’ βFull stack developmentβ β’ DevOps, Docker, k8s, IaC β’ How to train enough engineers?
How We Got Here Random Walk Image by Pradyumna Yadav
How We Got Here Random Walk Image by Pradyumna Yadav
How We Got Here Random Walk π Image by Pradyumna Yadav
How We Got Here Random Walk π π Image by Pradyumna Yadav
How We Got Here Random Walk π§ π π Image by Pradyumna Yadav
How We Got Here Random Walk π π§ π π Image by Pradyumna Yadav
How We Got Here
How We Got Here Not to be bound by certain βobviousβ methodological rules [β¦] is both reasonable and absolutely necessary for the growth of knowledge. [β¦] There are always circumstances when it is advisable not only to ignore the rule, but to adopt its opposite. β Paul Feyerabend, Against Method
How We Got Here Not to be bound by certain βobviousβ methodological rules [β¦] is both reasonable and absolutely necessary for the growth of knowledge. [β¦] There are always circumstances when it is advisable not only to ignore the rule, but to adopt its opposite. β Paul Feyerabend, Against Method
β Weβre Not On Dial-Up Anymore β A New Environment
A New Environment Sending a βDirectβ Message
A New Environment Sending a βDirectβ Message
A New Environment Sending a βDirectβ Message
A New Environment Sending a βDirectβ Message β³ππ’πͺ
A New Environment Users vs Cloud Infra Source: AWS
A New Environment Users vs Cloud Infra 6 7 6 2 1 1 1 1 Source: AWS
A New Environment Users vs Cloud Infra 6 7 6 2 1 1 1 1 Source: AWS
A New Environment Users vs Cloud Infra 6 7 6 2 1 1 1 1 Source: AWS
A New Environment Users vs Cloud Infra 6 7 6 2 1 1 1 1 Source: AWS
A New Environment Users vs Cloud Infra 6 7 2 6 50M 1 1 1 1 Source: AWS
A New Environment Users vs Cloud Infra 371 million 56M/centre 6 7 2 6 50M 1 1 1 1 Source: AWS
A New Environment Users vs Cloud Infra 371 million 56M/centre 6 7 2 6 50M 1 1 ~435 million 435M/centre 1 1 Source: AWS
A New Environment Users vs Cloud Infra 371 million 56M/centre 6 7 2 6 50M 1 1 ~435 million 435M/centre 1 ~1.4 billion 1400M/centre 1 Source: AWS
A New Environment Data Gravity Aggregated Data
A New Environment What 8ms Looks Like
A New Environment What 8ms Looks Like St. Louis β‘ Havana Ideal Vacuum π«
A New Environment What 8ms Looks Like St. Louis β‘ Havana Ideal Vacuum π« St. Louis π NYC Ideal Vacuum π«
A New Environment What 8ms Looks Like St. Louis β‘ Havana Ideal Vacuum π« St. Louis π NYC Ideal Vacuum π« St. Louis π Detroit Ideal Fibre π§Ά
A New Environment Causal Islands ππ
A New Environment Causal Islands ππ
A New Environment Causal Islands ππ
A New Environment Causal Islands ππ
A New Environment Causal Islands ππ
A New Environment Causal Islands ππ
A New Environment Causal Islands ππ
A New Environment
A New Environment As we continue to increase the number of globally connected devices, we must embrace a design that considers every single member in the system as the primary site for the data that it is generates. It is completely impractical that we can look at a single, or a small number, of globally distributed data centers as the primary site for all global information that we desire to perform computations with. β Meiklejohn, A Certain Tendency Of The Database Community
A New Environment Everything, Everywhere
A New Environment Everything, Everywhere Commons Cloud & Edge Far Edge
A New Environment Everything, Everywhere Commons Cloud & Edge Far Edge
A New Environment Everything, Everywhere Commons Cloud & Edge Far Edge
A New Environment
β Getting Back to Our Roots β Networks for Good
Networks for Good Back to Our Roots
Networks for Good Back to Our Roots 1. Decentralisation 2. Non-discrimination 3. Bottom-up Design 4. Universality 5. Consensus β The Web Foundation, History of the Web
Networks for Good Back to Our Roots 1. Decentralisation 2. Non-discrimination 3. Bottom-up Design 4. Universality 5. Consensus en.wikipedia.org/wiki/OSI_model β The Web Foundation, History of the Web
Networks for Good Back to Our Roots 1. Decentralisation 2. Non-discrimination 3. Bottom-up Design 4. Universality 5. Consensus en.wikipedia.org/wiki/OSI_model β The Web Foundation, History of the Web
Networks for Good Back to Our Roots 1. Decentralisation 2. Non-discrimination 3. Bottom-up Design 4. Universality 5. Consensus en.wikipedia.org/wiki/OSI_model β The Web Foundation, History of the Web
Networks for Good User Agency β’ Entry: Empower users to participate β’ Exit: Option to move or leave β’ Safety: Control access to your data β’ Serve: Provide capacity to others
Signs of a Way Out Emerging Definitions
Signs of a Way Out ACL Redux
Signs of a Way Out ACL Redux π§πΎ
Signs of a Way Out ACL Redux π§πΎ β
Signs of a Way Out ACL Redux π§πΎ π β β
Signs of a Way Out ACL Redux π§πΎ π π β β
Signs of a Way Out ACL Redux π§πΎ π π β β
Signs of a Way Out ACL Redux π§πΎ π π β β
Signs of a Way Out ACL Redux π§πΎ π π β Not in control β
Signs of a Way Out ACL Redux π In control π§πΎ π β Not in control β
Signs of a Way Out ACL Redux π π β In control π§πΎ π β Not in control β
Signs of a Way Out Capabilities
Signs of a Way Out Capabilities π΅
Signs of a Way Out Capabilities π΅ β
Signs of a Way Out Capabilities π΅ πΊ Addr β
Signs of a Way Out Capabilities π΅ πΊ Addr π β
Signs of a Way Out Capabilities π΅ πΊ Addr In control π β
Signs of a Way Out Capabilities π΅ πΊ Addr In control π β All req info
Signs of a Way Out Capabilities π΅ πΊ Addr π β
Signs of a Way Out Capabilities π΅ π πΊ π π Addr β
Signs of a Way Out Capabilities π΅ πΊ Addr π β
Signs of a Way Out Capabilities π΅ πΊ Addr π¨π¨ π β
Signs of a Way Out Capabilities π΅ πΊ Addr π π π¨π¨ β
Signs of a Way Out Capabilities π΅ πΊ Addr π π π¨π¨ β π
Signs of a Way Out OAuth Sequence
Signs of a Way Out OAuth Sequence
Signs of a Way Out OAuth Sequence
Signs of a Way Out OAuth Sequence
Signs of a Way Out UCAN Sequence π
Signs of a Way Out UCAN Sequence π
Signs of a Way Out UCAN Sequence π
Signs of a Way Out UCAN Sequence π
Signs of a Way Out
Signs of a Way Out Disorderly Programming π€ β π¨π» β π¨π» π©π» π€
Signs of a Way Out Disorderly Programming π€ β π¨π» β π¨π» π©π» π€
Signs of a Way Out Donβt Make Me Think
Signs of a Way Out Donβt Make Me Think π©π» π±
Signs of a Way Out Donβt Make Me Think π©π» π±
Signs of a Way Out Donβt Make Me Think π©π» π± β β β β β β β β β β β
Signs of a Way Out Donβt Make Me Think π©π» π± β β β β β β β β β β β
Signs of a Way Out Donβt Make Me Think π©π» π± β β β β β β β β β β β
Signs of a Way Out Donβt Make Me Think π©π» π± β β β β β β β β β β β
Compute Substrate β Schedule. Execute. Verify. Reuse β
Compute Substrate Wasm Eats the World π€€
Compute Substrate Wasm Eats the World π€€
Compute Substrate With Their Powers Combined!
Compute Substrate With Their Powers Combined! Compute β Data πΎ Auth π
Compute Substrate With Their Powers Combined! ! e r e h veryw E Compute β Data πΎ Auth π
Compute Substrate With Their Powers Combined! ! e r e h veryw E Compute β Data πΎ Auth π
Compute Substrate With Their Powers Combined! ! e r e h veryw E Compute β Data πΎ Auth π
Compute Substrate With Their Powers Combined! ! e r e h veryw E Compute β Data πΎ Auth π
Compute Substrate With Their Powers Combined! { IPVM ! e r e h veryw E Compute β Data πΎ Auth π
Compute Substrate Code-as-Data
Compute Substrate Code-as-Data Arguments
Compute Substrate Code-as-Data Arguments
Compute Substrate Code-as-Data Task #β£ #β£ #β£ f Arguments Scheduling Con ig, etc
Compute Substrate Code-as-Data Task #β£ #β£ #β£ f Arguments Scheduling Con ig, etc
Compute Substrate Code-as-Data Task #β£ #β£ #β£ f Arguments Scheduling Con ig, etc
Compute Substrate Code-as-Data Task #β£ #β£ #β£ f Arguments Scheduling Con ig, etc
Compute Substrate Code-as-Data Receipt #β£ Task #β£ #β£ #β£ f Arguments Scheduling Con ig, etc
Compute Substrate Code-as-Data Receipt #β£ #β£ Pure Values & E ects Task #β£ #β£ #β£ f ff Arguments Scheduling Con ig, etc #β£ Metadata (e.g. trace)
Compute Substrate Invocation & Distributed Promises
Compute Substrate Invocation & Distributed Promises
Compute Substrate Invocation & Distributed Promises
Compute Substrate Invocation & Distributed Promises
Compute Substrate Invocation & Distributed Promises
Compute Substrate Distributed Invocation
Compute Substrate Distributed Invocation dns:example.com/TYPE=TXT crud/update
Compute Substrate Distributed Invocation dns:example.com/TYPE=TXT crud/update await mailto:alice@example.com msg/send {to: bob@example.com}
Compute Substrate Distributed Invocation dns:example.com/TYPE=TXT crud/update await mailto:alice@example.com msg/send {to: bob@example.com} await mailto:alice@example.com msg/send {to: carol@example.com}
Compute Substrate Distributed Invocation dns:example.com/TYPE=TXT crud/update await await mailto:alice@example.com msg/send {to: bob@example.com} await mailto:alice@example.com msg/send {to: carol@example.com} await https://example.com/report crud/update
Compute Substrate Distributed Invocation dns:example.com/TYPE=TXT crud/update await mailto:alice@example.com msg/send {to: carol@example.com} await mailto:alice@example.com msg/send {to: bob@example.com} await await https://example.com/report crud/update
Compute Substrate Distributed Invocation π©π π¨π³ dns:example.com/TYPE=TXT crud/update await mailto:alice@example.com msg/send {to: carol@example.com} await mailto:alice@example.com msg/send {to: bob@example.com} await await https://example.com/report crud/update
Compute Substrate Matchmaking
Compute Substrate Matchmaking π΅ β
Compute Substrate Matchmaking π΅ β π βπ¨π‘
Compute Substrate Matchmaking π΅ β π π βπ¨π‘
Compute Substrate βNine Ninesβ Is So 1999
Compute Substrate βNine Ninesβ Is So 1999 β 99.99999%
Compute Substrate βNine Ninesβ Is So 1999 β 99.99999% π€ 99.0% β 99.99% β 99.999%
Compute Substrate βNine Ninesβ Is So 1999 β 99.99999% π€ 99.0% β 99.99% β 99.999%
Compute Substrate βNine Ninesβ Is So 1999 β 99.99999% π©π€ π€ 99.0% β 99.99% β 99.999%
Compute Substrate βNine Ninesβ Is So 1999 β 99.99999% π©π€ π€ 99.0% β 99.99% β 99.999% π©π€ π§π€
Compute Substrate βNine Ninesβ Is So 1999 β 99.99999% π©π€ π€ 99.0% β 99.99% β 99.999% π©π€ π§π€
Compute Substrate βNine Ninesβ Is So 1999 β 99.99999% π©π€ π€ 99.0% β 99.99% β 99.999% 11-nines π©π€ π§π€
Compute Substrate βNine Ninesβ Is So 1999 β β¦β-nines 99.99999% π©π€ π€ 99.0% β 99.99% β 99.999% 11-nines π©π€ π§π€
Compute Substrate Cache, Suspend, Move, Verify
Compute Substrate Cache, Suspend, Move, Verify π° π§Ύ π° π§Ύ
Compute Substrate Cache, Suspend, Move, Verify π° π§Ύ π° π§Ύ
Compute Substrate Cache, Suspend, Move, Verify π° π§Ύ π° π§Ύ
Compute Substrate Cache, Suspend, Move, Verify π° π§Ύ π° π§Ύ π° π§Ύ
Compute Substrate With a Little Help From My Friends
Compute Substrate Throughput With a Little Help From My Friends Parallelisation
Compute Substrate With a Little Help From My Friends Throughput Ideal (Linear) Parallelisation
Compute Substrate With a Little Help From My Friends Ideal (Linear) Throughput Amdahlβs Law Parallelisation
Compute Substrate With a Little Help From My Friends Ideal (Linear) Throughput Amdahlβs Law Universal Scaling Law Parallelisation
Compute Substrate With a Little Help From My Friends Ideal (Linear) Throughput Amdahlβs Law Incoherence, Data Contention Parallelisation Universal Scaling Law
Compute Substrate With a Little Help From My Friends Throughput Global Adaptive Optimisation π Ideal (Linear) Amdahlβs Law Incoherence, Data Contention Parallelisation Universal Scaling Law
Compute Substrate With a Little Help From My Friends Throughput Global Adaptive Optimisation π Ideal (Linear) Amdahlβs Law Incoherence, Data Contention Parallelisation Universal Scaling Law
Compute Substrate Run Once, And Never Again
Compute Substrate Run Once, And Never Again Input Hash β Cached Output
Compute Substrate Run Once, And Never Again Input Hash β Cached Output AI moderation & tagging
Compute Substrate Run Once, And Never Again Input Hash β Cached Output AI moderation & tagging Distributed JWT/DID validation
Compute Substrate Run Once, And Never Again Input Hash β Cached Output AI moderation & tagging Distributed JWT/DID validation Transitive trust
Compute Substrate Run Once, And Never Again Input Hash β Cached Output AI moderation & tagging Distributed JWT/DID validation Transitive trust Thumbnails, cropping
Compute Substrate Determinism = Verifiable Computation
Compute Substrate Determinism = Verifiable Computation
Compute Substrate Determinism = Verifiable Computation π° π§Ύ π° π§Ύ π§Ύ
Compute Substrate Determinism = Verifiable Computation π° π§Ύ π° π° π§Ύ π° π§Ύ
Compute Substrate Determinism = Verifiable Computation π° π° β π§Ύ β π§Ύ β π§Ύ π° π°
Compute Substrate Determinism = Verifiable Computation π° π° β π§Ύ β π§Ύ β π§Ύ π° π°
The Safety Dance β Semantics to Climb Out of the Tar Pit β
The Safety Dance πΊ Description vs Invocation
The Safety Dance πΊ Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects β managed effects
The Safety Dance πΊ Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects β managed effects function
The Safety Dance πΊ Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects β managed effects input function
The Safety Dance πΊ Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects β managed effects input function output function
The Safety Dance πΊ Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects β managed effects effect input effect function output function
The Safety Dance πΊ Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects β managed effects effect input function output effect function
The Safety Dance πΊ Managed Effects Mutation E ect Stream Query E ect Stream Pure Function Stream ff ff Base Event Stream tβ
The Safety Dance πΊ Managed Effects Mutation E ect Stream Query E ect Stream Pure Function Stream ff ff Base Event Stream tβ
The Safety Dance πΊ Managed Effects Mutation E ect Stream Query E ect Stream Pure Function Stream ff ff Base Event Stream tβ
The Safety Dance πΊ Managed Effects Mutation E ect Stream Query E ect Stream Pure Function Stream ff ff Base Event Stream tβ
The Safety Dance πΊ Managed Effects Mutation E ect Stream Query E ect Stream Pure Function Stream ff ff Base Event Stream tβ π
The Safety Dance πΊ Managed Effects π Mutation E ect Stream Query E ect Stream Pure Function Stream ff ff Base Event Stream tβ π
The Safety Dance πΊ Managed Effects π Mutation E ect Stream Query E ect Stream Pure Function Stream ff ff Base Event Stream tβ π π
The Safety Dance πΊ Virtual Resiliency
The Safety Dance πΊ Virtual Resiliency Mutable π¦ Idempotent π Deterministic π
The Safety Dance πΊ Virtual Resiliency Mutable π¦ Idempotent π Deterministic π Query A Query B
The Safety Dance πΊ Virtual Resiliency Query A Query B Compute A Mutable π¦ Idempotent π Deterministic π
The Safety Dance πΊ Virtual Resiliency Query A Query B Compute A Mutable π¦ Query C Idempotent π Deterministic π
The Safety Dance πΊ Virtual Resiliency Query A Query B Compute A Mutable π¦ Query C Idempotent π Deterministic π Compute B Query D
The Safety Dance πΊ Virtual Resiliency Query A Query B Compute A Mutable π¦ Query C Idempotent π Deterministic π Compute B Query D Mutation
The Safety Dance πΊ Virtual Resiliency Mutation Query A Query B Compute A Mutable π¦ Query C Mutation Idempotent π Deterministic π Compute B Query D Mutation
The Safety Dance πΊ
The Safety Dance πΊ If their application can be cast as pure data processing, they benefit from the past 40-50 years of work form the database community, [and] completely isolate the developer from the possibility of failure β Goldstein et al, AMBROSIA: Providing Performant Virtual Resiliency for Distributed Applications
The Safety Dance πΊ Simplified Safe Layout
The Safety Dance πΊ Simplified Safe Layout Queries Queries Queries
The Safety Dance πΊ Simplified Safe Layout Queries Queries Queries Pure Computation Pure Computation Pure Computation
The Safety Dance πΊ Simplified Safe Layout Queries Queries Queries Pure Computation Pure Computation Pure Computation
The Safety Dance πΊ Simplified Safe Layout Queries Queries Queries Pure Computation Pure Computation Pure Computation Mutation
The Safety Dance πΊ Simple Example Compute A Query Compute B Mutation
The Safety Dance πΊ Simple Example Compute A Query Compute B Mutation
The Safety Dance πΊ Simple Example Compute A Query π¦Ίβ Compute B Mutation
Wrap Up
Wrap Up Reusable/Remixable Specs
Wrap Up Reusable/Remixable Specs IPVM Workflow π Transactions, Error Handling, Defaults UCAN Pipeline π Call Graph, Awaits, etc IPVM Task β VM Config, Verification, etc UCAN-Chan / γ¦γΌγγ£γ³γ‘γγ Consumable Channels Receipts Attestation, Memoization, etc UCAN Invocation πͺ Input Addressing, Execution, etc UCAN Core π Distributed Authority IPLD-WIT β IDL Varsig β Self-Describing Signatures
github.com/ucan-wg github.com/ipvm-wg π Thank You, Strange Loop π https://fission.codes π§ brooklyn@fission.codes π @expede@octodon.social π¦ bsky.app/profile/expede.wtf
The advent of TCP/IP and the web produced an explosion of innovation by radically lowering the barrier to entry to networking. Thanks to recent technical and social innovation, we now have the building blocks for the next generation of open services: location-free verifiable data and computation. This talk presents UCAN Invocation and the Interplanetary VM (IPVM). IPVM code runs anywhere (even offline), respects data privacy, and services interoperate seamlessly without pre-negotiation.
Verifiable computation opens the door to content addressed invocations, results, and workflows. This greatly lowers the complexity over traditional architectures (e.g. LAMP). Not only is this easier to reason about, it also (paradoxically) has better than linear scaling: the more itβs used, the faster it is! As anyone can participate, it doesnβt depend on the handful of data centres provided by large orgs: anyone can provide capacity (including in underserved regions like Africa and South America).