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.
To be clear, we are not in the business of selling personal information. We are in the "picks and shovels" business - building great tools for other developers to use. Both myself and cofounder Max are app developers by background and we got into infrastructure software by wanting to simplify app development for ourselves and others. P2P is highly motivating because it enables use-cases that have greater data control and privacy - both of which are deeply important to us.
This is cool! I have no idea what's the use-case behind it, but it is really awesome if properly implemented (which seems like a gigantic challenge).
Super cool to see us on HN! The use cases are for projects, products, enterprises to build collaborative apps that can sync with the internet but fall back to local P2P connections when internet connectivity fails. Furthermore we added offline first as an additional guard for some resiliency.
We help solve a class of apps like:
1. Desk-less worker apps for the enterprise: think people who use mobile apps for the vast majority of their work: pilots, flight attendants, construction, maintenance 2. Retail, inventory warehousing, point of sale systems where being able to communicate between kiosks, service tablets, and display systems quickly even if there are interruptions in service 3. Education: it’s very often parents give their kids phones without a data plan, so their school or learning apps need to be able to collaborate with other students or teachers regardless of connectivity 4. Robotics, agriculture technology, IoT - often these applications have hard requirements to communicate with other local devices without any dependency of the internet
I can keep going!
Again, So happy to see us on HN! Thank you!
EDIT: is there ever a plan to open this as a spec?
Of course, Realm was later acquired by MongoDB, and currently exists as some kind of Frankenstein's monster product in an attempt to drum up Atlas sales.
Interesting how the acquisition pushed some of the devs to create better tech, but they had to give up the original product along the way.
How would this compare to https://briarproject.org/ ? Have you generalized their protocol for many other applications?
edit: turns out my guess was essentially correct! that general use case is indeed what the USAF is using Ditto for https://www.sbir.gov/node/1629457
So happy to see the support from the Hacker News community.
I should mention Ditto is a massively ambitious company, we are doing fantastic with traction across major industries.
Our entire core code base is written in Rust and I know HN goes crazy for Rust. If you’re really interested in working on very hard problems like CRDTs, partial replication, query based replication, peer to peer adhoc sync, mesh network or distributed security: please definitely take a look at our openings.
www.ditto.live/jobs
You’ll work on problems that are incredibly difficult, unique and rewarding that you won’t find anywhere else!
I had a poke around your documentation but didn't find a high level system architecture. Without having to dig into the open source code could you provide a link to somewhere I can read about the underlying data model and how it works? Do you have a paper or patent describing this technology anywhere? Thanks!
1: https://docs.ditto.live/javascript/common/how-it-works/mesh-...
Being always on the road, I often have my emails/contacts/todolist/pictures/whatever scatered accross all my devices, with no easy way to synchronize them without getting access to wifi.
This means in transport, in the country side, or in another country, my system is in shamble. Also, it means everything is slow to sync.
Yesterday I had to send a AI model to my colleague next to me. I was on linux, he was on windows. The fastest way was to get a usb stick. That should be a click in 2022. The closest to something reliable to do this was duckto, but it's not maintained anymore.
Good luck to ditto!
Syncthing is painless, with available local network detection of other clients. If either device has a webcam, the QR codes in the web UI make it quite quick to have a synchronized folder between two systems.
With the current offering, I feel at anytime there could be a "takeover" by a well-run open-source initiative and "everyone loses".
Syncthing is open and uses the Mozilla Public License: https://syncthing.net/
If its a niche thing, the community for each software could be cut in half, etc.
If it can deal with all the "weird" (its very normal for space, just not used anywhere else) batched radio communication standards from the Consultative Committee for Space Data Systems (CCSDS) then intermittent communications aren't as big of a problem.
However it will also need to handle "old data that can be deleted client side". A satellite will generate a lot of data that it doesn't need to keep but will want to transfer to the ground and keep on the ground, telemetry and tracking metrics, system statuses etc. One way is to keep all this buffered on the satellite, and transmit to the ground, then you can throw it away, etc.. But having a synchronised store is a much simpler programming model, you push important data into the store and let it look after itself, and simple code is easier to make more reliable and reliability is key for anything in aerospace. However it can't result in the remote device being "full", it's a 100% non-starter. The client/remote end has to be able to throw away old/expired data while the central store is able to keep that data, without requiring awkward secondary systems polling the latest state on the ground side to save current data into a separate system to store historical data, that would just be shifting the complexity around.
To help users with eviction, we are adding support for dynamic queries, for example, using "now" for a date in the query to aid in creating TTL logic. In addition, to built-in TTL as well.
Satellite comms are definitely a great fit for another reason, since Ditto's replication is "delta-based" it will only sync differences. Our protocol is designed to overlay on top of custom arbitrary links, including unreliable ones. Not familiar with CCSDS, but we have explored Link16, and even built-in we replicate over BLE GATT.
Hope that helps and perhaps we can get Ditto into space!
[1] https://docs.ditto.live/ios/common/concepts/syncing-data#evi...
Im definitely going to have to dig in deeper and check out the rust stack! I’ll be sure to get in touch about the various CCSDS data transmission related stuff once I get there, since if you’ve looked at Link16 I’m sure you’re probably interested in adding more aerospace communications link standards/mechanisms.
https://www.unix.com/man-page/OSX/1/ditto/
Somehow I always found it to be an odd tool, but I could never exactly pinpoint why.
Why no LAN for web browser mode? A pwa with offline support should be able to sync with other resolvable ips on the same pan, no? Hopefully WebBluetooth will be available soon too?
Regardless you definitely wouldn't be able to do browser-to-browser discovery and connection via HTTP or WebSockets, since you can't create a web server in browser, but I imagine you could do P2P via WebRTC if you can just find a way to discover the other peer's details in the first place.
1: https://developer.mozilla.org/en-US/docs/Web/API/Web_Share_A...
Alternatively, for "truly" offline sync, a "license" token must still be obtained from Ditto's servers at some initial deployment phase.
Really cool library, but the dependency on Ditto's infrastructure is an itch to scratch.
I think this is our biggest differentiator compared to other sync systems.
PS: They don't. Was wondering whether I missed something
WebBLE support is on our roadmap though!
However, if you use Ditto in an electron (and soon Tauri) you’ll be able to take advantage of multicast, BLE, P2P WiFi etc… while “feeling browser”-like with your development.
This project was so close
Something with its new unguided bombs they’re testing, or the new bomber it’s rolling out this year? The hundreds of Phoenix Ghost “Kamikaze” drone bombs they just revealed?
Are programs like this funding this project? I will pass.
Why are you simping for them without basis? Your absurd comparison would only make sense if the franchise the killer shopped at continued to provide them service and used them in marketing materials as a marker of trust or prestige.