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.

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?

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.