Protocols for synchronisable data stores. The best parts? Fine-grained permissions, a keen approach to privacy, destructive edits, and a dainty bandwidth and memory footprint.
Currently, this repo provides Rust implementations of:
- Everything in the Willow Data Model (parameters, paths, entries, groupings, encodings, store trait).
- Meadowcap, a capability system adaptable to local needs,
SimpleStoreSled
, a sled-powered Willow store implementing theStore
trait, enabling persistent storage of Willow data!
Eventually, this repo will also house Rust implementations of:
- Willow Sideloading protocol, eventually consistent data delivered by any means possible,
- and Willow General Purpose Sync Protocol, private and efficient synchronisation of Willow stores.
We welcome contributions! If you're looking for contribution ideas, please see the repo's issues, milestones, and projects.
- Willow website
- willow-js - TypeScript implementation of Willow Data Model, Sideloading, and General Purpose Sync protocol.
- meadowcap-js - TypeScript implementation of Meadowcap
This repository has many fuzz tests. To use cargo fuzz
commands, you must
first make fuzz
the working directory so that the nightly compiler (on which
cargo-fuzz relies) is used for compiling the tests.
cd fuzz
cargo fuzz run <test_name_here>
There is also a command for running all the fuzz tests sequentially:
cd fuzz
./run_all.sh -- -max_total_time=<number_of_seconds>
This project was funded through the NGI0 Core Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101092990.