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.
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.
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.
A) PouchDB, Couchbase, Firebase, Realm are all databases that can sync to a "master" node in the cloud.
B) AODV and BATMAN are really an ad-hoc mesh networking and routing protocol.
Ditto is both A and B. You work with Ditto as a database on your mobile, IoT, web app with common database functions (querying, updating, deleting etc...) and we will sync the changes between edge and cloud devices. Most developers cannot sensibly use AODV and BATMAN to build robust collaborative applications, it's too hard. We abstract all of the routing, network resiliency, and replication away from you; just work with the database
All-in-all, the design of Ditto is to be flexible so users can add Ditto to their architecture as easy as possible.
Our replication system is very complex. I am not sure that even publishing our spec would get much usage because it’s so complex.
But maybe we can open source an API?
We’ve got Alumni from Pusher, Basho/Riak, Walmart Labs, Microsoft, to name a few
It's a powerful building block that can be used for proxying any kind of other traffic, either yourself as an app developer or if we end up providing proxy/VPN/other functionality as part of the Ditto SDK.
It's not a "simp" as you say, only pointing out that they are a rather large customer who is free to implement the technology in any way they wish. You're letting your political bias undermine any sort of credible argument.
Btw my post was asking what the air force is using it for. I know they do a variety of things that’s why I asked.
edit: Thank you, below, for the details - so my guesses were more or less "spot on" (communication systems connectivity for things they put in the air) or less charitably, within the bounds of the details in that link.
It's not altruistic, it's strategic to the core.
"We do not allow our third-party service providers to use your Personal Information for their own purposes and only permit them to process your Personal Information for specified purposes and in accordance with our instructions, unless the data is rendered fully anonymous."
You didn't quote this part.
To me, the most straightforward reading is that Ditto does their own advertising, and targets it to specific users by using third party advertisers (Ditto paying the advertisers to place an ad, not the advertisers paying Ditto for the information), who are contractually bound to only use that information to deliver the ad that Ditto placed and not to use the information for their own future benefit.
The only possible reading I can see where this can be interpreted as selling personal information is the fact that the "Advertising and marketing partners" bullet doesn't use the phrase "service providers", and that thus, the contractual restriction on "service providers" could thereby exempt that bullet. Is this what you are hanging your interpretation on?
(Reason for my interest: I regularly read privacy policies, looking for loopholes; there's a huge range not just in privacy practices but in how clearly they are described. Ditto's could be clearer - perhaps by including an explicit statement that they don't sell personal information, as some do - but Ditto's privacy policy is not what that of a company who sells personal information as part of their business model looks like.)