Web Native File System Brooklyn Zelenka, @expede
• Cofounder/CTO at Fission • PLT, VMs, FP, Distributed Systems • Previously an Ethereum Core Dev • FOSS — Witchcraft, Exceptional, &c
Slide 4
Web Native 🚀
Slide 5
Web Native
Web Apps are Too Hard — Shrink the Development Cycle
Slide 6
Web Native
Web Apps are Too Hard — Shrink the Development Cycle Users 👨🏫👩🏭🧑⚕👷
Developer 👩💻
Slide 7
Web Native
Web Apps are Too Hard — Shrink the Development Cycle Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 API / GQL ↕ Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻
Slide 8
Web Native
Web Apps are Too Hard — Shrink the Development Cycle Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 API / GQL ↕ Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻
Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 Developer 👩💻
Fission ⚛
Slide 9
Web Native
Web Apps are Too Hard — Shrink the Development Cycle Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 API / GQL ↕ Current
Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻
Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 Developer 👩💻
Fission ⚛
Slide 10
Web Native
Web Apps are Too Hard — Shrink the Development Cycle Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 API / GQL ↕ Current
Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻
Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 Developer 👩💻
Fission ⚛
New
Slide 11
Web Native
Web Apps are Too Hard — Shrink the Development Cycle Users 👨🏫👩🏭🧑⚕👷 Browser 🖥
Current
Users 👨🏫👩🏭🧑⚕👷 Browser 🖥
Fission ⚛
API / GQL ↕
Developer 👩💻
Server ⚙
Quick iteration 🔄
Data Store 🗃 DevOps 📤 Developer 👩💻
Focus on end users 💁 Lower barrier to entry 👨🎨
New
Slide 12
Web Native
New assumptions ~ new approach
• Different world from web’s beginnings • Don’t need to rely on client/server • New features naturally fall out of the architecture • Location independent data • Client side encryption • Networked machines → networked data
Slide 13
Web Native
Abstraction Layers
Slide 14
Web Native
Abstraction Layers
🎮 Application Layer Business Logic 🛠 Platform Layer WebNative File System 🌐 Protocol Layer IPFS
Web Native
Components
Durable Store WebNative File System
Data Layer
Write Access UCAN
Networking Stack DNS, IPFS, PubSub
AuthN & AuthZ
Read Access OCAP
Identity did:key
Slide 19
Web Native
Components
Multi Device / User
Offline & Async Sharing Exchange Store
Soft Realtime Multiuser Automerge CRDT
Durable Store WebNative File System
Data Layer
Write Access UCAN
Networking Stack DNS, IPFS, PubSub
AuthN & AuthZ
Read Access OCAP
Identity did:key
Slide 20
Web Native
Components
App Abstractions Fission SDK
Multi Device / User
Offline & Async Sharing Exchange Store
Soft Realtime Multiuser Automerge CRDT
Durable Store WebNative File System
Data Layer
Write Access UCAN
Networking Stack DNS, IPFS, PubSub
AuthN & AuthZ
Read Access OCAP
Identity did:key
Slide 21
Web Native
Dev’s App Business Logic & View
Components
App Abstractions Fission SDK
Multi Device / User
Offline & Async Sharing Exchange Store
Soft Realtime Multiuser Automerge CRDT
Durable Store WebNative File System
Data Layer
Write Access UCAN
Networking Stack DNS, IPFS, PubSub
AuthN & AuthZ
Read Access OCAP
Identity did:key
Slide 22
Web Native File System 🗂🚀
Slide 23
File System
🛠 High Level Layout
Slide 24
File System
🛠 High Level Layout
boris.fission.name
Slide 25
File System
🛠 High Level Layout
Public
Photos
Avatars
Apps
boris.fission.name
Slide 26
File System
boris.fission.name
🛠 High Level Layout
Public
Photos
Avatars
Private
Apps
Photos
Apps
Family Photos
My Gallery
Slide 27
File System
boris.fission.name
🛠 High Level Layout
Public
Photos
Avatars
Private
Apps
Shared By Me
Photos
Apps
Family Photos
My Gallery
Keys and Keys Keysand and Pointers Pointers Pointers
Slide 28
File System
boris.fission.name
🛠 High Level Layout
Public
Photos
Avatars
Private
Apps
Shared By Me
Photos
Apps
Family Photos
My Gallery
Keys and Keys Keysand and Pointers Pointers Pointers
Shared w/ Me
Keys and Pointers
Slide 29
File System
Quick Demo
📺
Slide 30
Common Concepts 🤝
Slide 31
Common Concepts
🛠🌐 Virtual Nodes
Slide 32
Common Concepts
🛠🌐 Virtual Nodes
Raw Node
Slide 33
Common Concepts
🛠🌐 Virtual Nodes
Raw Node
File Node
Raw Data
Metadata
Slide 34
Common Concepts
🛠🌐 Virtual Nodes
Raw Node
File Node
Raw Data
Metadata
Directory Node
Index
Metadata
Slide 35
Common Concepts
🛠🌐 Virtual Nodes
Raw Node
• Virtual Node • Consistent interface • Arbitrary metadata • More than POSIX • Tags, creators, MIME, sources, &c
File Node
Raw Data
Metadata
Directory Node
Index
Metadata
Slide 36
Common Concepts
🛠 Hard vs Soft Links
Slide 37
Common Concepts
🛠 Hard vs Soft Links • Hard links • Direct reference • 2 pointers ~ duplicate
Slide 38
Common Concepts
🛠 Hard vs Soft Links • Hard links • Direct reference • 2 pointers ~ duplicate • Soft links
• Like a symlink or web link • 2 pointers ~ latest • May break • Always some version available
Slide 39
Common Concepts
🛠 Hard vs Soft Links • Hard links • Direct reference • 2 pointers ~ duplicate • Soft links
• Like a symlink or web link • 2 pointers ~ latest • May break • Always some version available
Slide 40
Common Concepts
🛠 Hard vs Soft Links • Hard links • Direct reference • 2 pointers ~ duplicate • Soft links
• Like a symlink or web link • 2 pointers ~ latest • May break • Always some version available
Slide 41
Common Concepts
🛠 Hard vs Soft Links • Hard links • Direct reference • 2 pointers ~ duplicate • Soft links
• Like a symlink or web link • 2 pointers ~ latest • May break • Always some version available
Slide 42
Common Concepts
🛠 Hard vs Soft Links • Hard links • Direct reference • 2 pointers ~ duplicate • Soft links
• Like a symlink or web link • 2 pointers ~ latest • May break • Always some version available
Slide 43
File System
🛠 The z-dimension: versioning & events
Slide 44
File System
🛠 The z-dimension: versioning & events
Photos@r0
Vacation
Avatars@r0
beach.png
caricature.jpg Revision 0
Slide 45
File System
🛠 The z-dimension: versioning & events
Photos@r0
Vacation
Avatars@r0
beach.png
caricature.jpg Revision 0 🕙
Private Nodes
current rev + 2n —2m current rev + 2n
🛠 Progressive Fast Forward
Rev 3 (Complete)
Rev 0
Rev 1 (Partial)
Rev 2 (Partial)
Slide 82
Private Nodes
current rev + 2n —2m current rev + 2n
🛠 Progressive Fast Forward
Rev 3 (Complete)
Rev 0
Rev 1 (Partial)
Rev 2 (Partial)
Slide 83
Private Nodes
current rev + 2n —2m current rev + 2n
🛠 Progressive Fast Forward
Rev 3 (Complete)
Rev 0
Rev 1 (Partial)
Rev 2 (Partial)
Slide 84
Private Nodes
current rev + 2n —2m current rev + 2n
🛠 Progressive Fast Forward O(2 * log n)
Rev 3 (Complete)
Rev 0
Rev 1 (Partial)
Rev 2 (Partial)
Slide 85
File Sharing 🎁
Slide 86
File Sharing
Shared by/with Me
Slide 87
File Sharing
Shared by/with Me
Shared by Me
Slide 88
File Sharing
Shared by Me
Shared by/with Me did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur
Slide 89
File Sharing
Shared by Me
Shared by/with Me did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur
Human Readable Name
🔑
Symlink
Slide 90
File Sharing
Shared by Me
Shared by/with Me did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur
Human Readable Name
🔑
Symlink
Slide 91
File Sharing
Shared by Me
Shared by/with Me did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur
Human Readable Name
🔑
Symlink
Slide 92
File Sharing
Shared by Me
Shared by/with Me
Shared with Me
did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur
Human Readable Name
🔑
Symlink
Slide 93
Recap 🔁
Slide 94
Recap
boris.fission.name
Public
Photos
Avatars
Private
Apps
Shared By Me
Photos
Apps
Family Photos
My Gallery
Keys and Keys Keysand and Pointers Pointers Pointers
Shared w/ Me
Keys and Pointers
Slide 95
https://fission.codes https://talk .fission.codes h t t p s : / /d i s c o r d . g g / z A Q B D E q
😁 THANK YOU 🎉 brooklyn@fission.codes g i t h u b . c o m /e x p e d e @expede
Slide 96
https://fission.codes https://talk .fission.codes h t t p s : / /d i s c o r d . g g / z A Q B D E q
😁 THANK YOU 🎉 brooklyn@fission.codes g i t h u b . c o m /e x p e d e @expede