The Construction
Everything must run in a web page.
Use WebRTC for presence signalling and peer-to-peer communication.
The block device
Implement the idea behind the “demo” so that each “data store” runs on a different device.
At that point there is already a useful proof of concept for an audience: “take out your phones, open this page, change the data — you are all storing it, and every change is visible to everyone.”
The file system
Implement an API equivalent to the iSCSI protocol to access the block device.
Port a concurrent file system to asm.js (GFS2, for example) and plug it into that API.
Identity
Choose a protocol to authenticate users.
- Invent one.
- Reuse an existing protocol.
- Reuse an existing identity (Signal, BlockStack, and so on).
Credits
Find a way to account for each user’s rights so that cheating is hard. Random peers could, for example, attest that resources were made available.
How is storage of a piece of data “paid for” over time?
- For private data, the cost falls entirely on a single user.
- For shared or public data, the cost should be split between whoever writes the data and whoever reads it. Many formulae are possible, including a possible reward for the author (editorial content) or even for those who access it (advertising content).
Signalling
Set up a “signalling” system between users for shared data — a publish/subscribe model on a shared item. Perhaps Signal’s? In that case their identity protocol could be adopted as well.