1. A generic CRDT library, preferably in C or something that exposes a C interface. This is probably very hard or even impossible, depending on how much must be abstracted and how much work the developer must do to express edits in terms of the CRDT.
2. A P2P backend for said library for streaming edits.
3. A networked data store, maybe as-a-service, for versioning and persistence.
2 and 3 might even be made transparent to non-CRDT-aware applications through FUSE, but that's not a hard requirement.
1. A generic CRDT library, preferably in C or something that exposes a C interface. This is probably very hard or even impossible, depending on how much must be abstracted and how much work the developer must do to express edits in terms of the CRDT.
2. A P2P backend for said library for streaming edits.
3. A networked data store, maybe as-a-service, for versioning and persistence.
2 and 3 might even be made transparent to non-CRDT-aware applications through FUSE, but that's not a hard requirement.