Ditto, a company building peer-to-peer and offline-first data sync, writes on Rust, CRDTs, Bluetooth on iOS, and mobile networking.
HN mentions come largely from Ditto staff and users who recommend its sync SDK and note Rust's tradeoffs, like training hires and slow compiles.
We've created a peer to peer database at https://www.ditto.live . It runs on servers, WASM, and mobile all with a shared code base. Each row in the database is a robust CRDT that can sync deltas (or diffs) very efficiently. In addition, we are just about to add binary file sync that is quite reminiscent of bittorrent and has all the goodness of retries, resuming downloads, canceling, and pausing all baked in.
The most unique feature of Ditto is really our networking stack. Devices that have the database can sync over any available transport: mDNS, WiFi Direct, AWDL, Bluetooth Low Energy.
Here it is in action: https://www.youtube.com/watch?v=1P2bKEJjdec
Here's a video of how being p2p allowed us to architect a database that fall back to mesh networks if the server can't be reached:
https://www.youtube.com/watch?v=0IAle9BYlxQ
We're launching with several massive enterprise companies this year and some mid-to-small ones as well. On your next flight, if you notice that the flight attendants and pilots are using mobile devices to collaborate in realtime even if the internet is down: it's us ;-)!
A couple of notes about how the SDK works:
1. The CRDT that backs our data structure for each row in the database looks like a JSON object to the end user.
2. It is capable of substring modifications, array and map mutations
3. Conflict resolution is automatic and deterministic, the default behavior is LWW but can be customized as long as it's deterministic.
4. It's written…
"syncing doesn’t work without a server"
I don't think this is true, granted there are some big challenges to transfering data between devices without a central server, but there are several projects like https://dxos.org/ which use p2p, and also there's https://ditto.live/ which uses bluetooth/wifi direct for cases where all users will be in the same room or on the same local network (imagine wanting to play chess with a friend sitting in a different row on a plane without wifi - I was in this situation recently and was pretty surprised that I couldn't find anything on the app store that could do this!)
Of course most of the time its better to have a server because p2p still has a lot of difficulties and often having a central 'source of truth' is worth the costs that come with a server based architecture. So imo things like https://electric-sql.com/ or https://www.triplit.dev/ or the upcoming https://zerosync.dev/ will be far better choices for anyone wanting to build a local first app used by many users.
Ditto (https://www.ditto.live/about) | REMOTE (USA Only) | Full-Time | Senior Software Engineer | Rust
Ditto aims to expand the internet beyond traditional reach. Our groundbreaking edge sync platform is powered by peer-to-peer database technology that runs on mobile, web, IoT, and server systems, enabling devices to sync data in real-time even without the internet.
We work with a variety of customers including the U.S. Air Force, Chick-Fil-A, and Alaska Airlines. We have been featured in top publications including the WSJ and TechCrunch: https://www.ditto.live/about/ditto-in-the-news
Both of these roles are focused on the core of our platform which is written entirely in Rust.
Senior Software Engineer -- P2P file sharing: https://grnh.se/60d02b496us
Senior Software Engineer -- Replication: https://grnh.se/dd88c0f26us
From Ditto's "privacy policy":
Ditto uses your personal information in the following instances: ...
Deliver direct marketing communications to you regarding our products and services that we may think are of interest to you. ... We share Personal Information with third parties ... Depending on how you use the Site or Services, the following categories of third parties collect data on our behalf or receive Personal Information ... Advertising and marketing partners.[1]
That pretty much says what they're really doing.
[1] https://www.ditto.live/legal/privacy-policy
Ditto is a very viable solution, we offer device sync even without a central server. Ditto is a cloud optional edge sync platform that can sync data between devices, even without the internet. We are partnered with MongoDB to provide an alternative to Device Sync. I encourage everyone to read our docs:
https://ditto.live/
It seems so: https://github.com/nwestfall/BlazorDB
Although this might be using JavaScript interop instead of using WebAssembly directly.
Edit: check this out: https://www.ditto.live/
It’s a multi language CRDT implementation that seems to use WebAssembly to be available in multiple languages.