Skip to content

Otto: a unified approach to CRDTs and OT

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE.txt
MIT
LICENSE-MIT.txt
Notifications You must be signed in to change notification settings

tablyinc/otto-test

Repository files navigation

Otto: a unified approach to CRDTs and OT

This repo contains tests for otto. otto enables any boring Rust data structure (without Rc, RefCell etc.) to be used as a replicated data type. It supports achieving convergence via multiple approaches, including:

It also supports combining these approaches to synchronise a mix of clients using both CRDT and OT techniques.

Project aims

  • Minimal bookkeeping (no timestamps, IDs or similar)
  • Rich set of data types (e.g. RichText) and operations (e.g. sort and group_by operations on List<T>)
  • Composability (support arbitrary nesting of types, e.g. List<(u64, List<u8>)>)
  • Differential dataflow support
  • Performance, sufficient for overhead to be negligible in real-world use (within ~1 OoM of Diamond types)
  • Achieve the strongest known useful properties (e.g. convergence and inverse properties)

Data types supported

Data type Operations supported
Map<K, V> insert(K, V), delete(K), map_at(K, V::Instr)
Set<T> insert(T), delete(T)
List<T> insert_at(usize, T), delete_at(usize), map_at(usize, T::Instr)
Register<T> set(T), map(T::Instr)
(A, B, ...) map_a(A::Instr), map_b(B::Instr), ...
#[derive(State)] for arbitrary structs and enums map_field_a(A::Instr), map_field_b(B::Instr), ...
bool u8 u16 u32 u64 u128 i8 i16 i32 i64 i128 f32 f64 char usize isize -

License

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Otto: a unified approach to CRDTs and OT

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE.txt
MIT
LICENSE-MIT.txt

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages