Designing collaborative interfaces on top of CRDTs

Very interesting and broad problem space that can have many good and valid ways of interacting with a particular data model.

That’s what I would like to spend at least 60% of my time doing.


A CRDT version-control-like generic interface, a browser of sorts. An automerge+JSON-LD browser.

A generic interface that supports merging and branching, and networking/p2p mode, manual syncing etc. But that itself does not mean anything in particular about the underlying datastructure.

Much like GitHub Desktop or Sublime Merge doesn’t have any opinions about what type of code you write.

Is this interface

  • Just a new type of version-control interface for automerge for normal people/mortals, or
  • Is it a host for schema-browsers, a wrapper for different views that work on different datasets?

It is possible to start designing and building this interface without actually having the backend code ready?

Will it be a web-app? Will it be a react+electron app?

How can we build super-fast, customisable interfaces on top of CRDTs?

Can we use automerge to save the application state too? Which views and operations we’re doing? Would also enable multiple states, or a saveable state. Would enable infinite back-button moves?