https://github.com/earthstar-project/willow-rs
Implementations of the Willow family of specifications in Rust.
https://github.com/earthstar-project/willow-rs
decentralised eventually-consistent local-first rust sync willow
Last synced: about 1 year ago
JSON representation
Implementations of the Willow family of specifications in Rust.
- Host: GitHub
- URL: https://github.com/earthstar-project/willow-rs
- Owner: earthstar-project
- License: apache-2.0
- Created: 2024-06-10T07:48:41.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-08T14:18:48.000Z (about 1 year ago)
- Last Synced: 2025-04-08T14:41:10.004Z (about 1 year ago)
- Topics: decentralised, eventually-consistent, local-first, rust, sync, willow
- Language: Rust
- Homepage: https://willowprotocol.org
- Size: 1.3 MB
- Stars: 60
- Watchers: 6
- Forks: 6
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# willow-rs
> 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](https://willowprotocol.org/specs/data-model/index.html#data_model)
(parameters, paths, entries, groupings, encodings, store trait).
- [Meadowcap](https://willowprotocol.org/specs/meadowcap/index.html#meadowcap),
a capability system adaptable to local needs,
- `SimpleStoreSled`, a [sled](https://docs.rs/sled/latest/sled/)-powered
Willow [store](https://willowprotocol.org/specs/data-model/index.html#store)
implementing the `Store` trait, enabling persistent storage of Willow data!
_Eventually_, this repo will also house Rust implementations of:
- [Willow Sideloading protocol](https://willowprotocol.org/specs/sideloading/index.html#sideloading),
eventually consistent data delivered by any means possible,
- and
[Willow General Purpose Sync Protocol](https://willowprotocol.org/specs/sync/index.html#sync),
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.
## See also
- [Willow website](https://willowprotocol.org)
- [willow-js](https://github.com/earthstar-project/willow-js) - TypeScript
implementation of Willow Data Model, Sideloading, and General Purpose Sync
protocol.
- [meadowcap-js](https://github.com/earthstar-project/meadowcap-js) - TypeScript
implementation of Meadowcap
## Fuzz tests
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
```
There is also a command for running all the fuzz tests sequentially:
```
cd fuzz
./run_all.sh -- -max_total_time=
```
---
This project was funded through the [NGI0 Core](https://nlnet.nl/core) Fund, a
fund established by [NLnet](https://nlnet.nl/) with financial support from the
European Commission's [Next Generation Internet](https://ngi.eu/) programme,
under the aegis of
[DG Communications Networks, Content and Technology](https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en)
under grant agreement No
[101092990](https://cordis.europa.eu/project/id/101092990).