I've been trying to get into dat recently and I'm wondering about the difference between dat
and the hyperdrive
module.
2 Answers
TL;DR: Dat is for end users and Hyperdrive for developers.
Dat is a user friendly interface for sharing distributed files. Anyone can download the program and use it to securely share files peer-to-peer.
Under the hood it uses Hyperdrive which is a Node.js package that aims to implement the same APIs as Node.js' core fs module, but it also offers data replication features.
There also is a dat-node module to use Dat's features in your own Node.js applications. With dat-node it is even easier than with Hyperdrive (just a little less flexible) to connect your own Node.js application to the distributed network.
If you compare the documentation of Hyperdrive and dat-node you'll quickly spot the simplified interface which dat-node provides.

- 987
- 1
- 14
- 22
-
Thanks for your answer. It would be awesome if you could (if you're up for it of course) subscribe to dat, dat-project and hyperdrive tags. I think it's a good idea to have a bunch of people ready to help out with dat related questions on SO. – rtn Jul 20 '17 at 21:53
-
Note that Dat Project structure can be a bit confusing to newcomers. I found the term `Dat` can mean an application, an API, a CLI, or the entire ecosystem for creating decentralized apps. – Arnold Schrijver Jul 21 '17 at 04:51
-
Also you shouldn't mention Hyperdrive without mentioning [Hypercore](https://github.com/mafintosh/hypercore). Both of these projects are where newcomers first bump into the Dat Project. While they are core modules of Dat ecosystem, they have their own separate repo's and that relationship is easily missed. – Arnold Schrijver Jul 21 '17 at 04:55
-
Oh, and `Dat` can also mean file archive, or file archive specification. Almost forgot ;) – Arnold Schrijver Jul 21 '17 at 05:13
-
**PS**: I am currently drafting a [proposal](https://github.com/datproject/discussions/issues/62) to position Dat / Dat Project as *"a decentralized message-based system on top of raw streams"*, which would significantly broaden its applicability for decentralized application design in general. – Arnold Schrijver Jul 21 '17 at 05:13
-
1Now that there's a "hyperdrive-daemon" destined for end-users this answer doesn't seem up to date (and the situation is even more confusing) – remram Jun 03 '20 at 14:52
2020 Update: Main points From Paul Frazee's Changing to "Hyper" and the future of the Dat ecosystem
- The dat-protocol is now the hypercore-protocol
dat://
URLs are nowhyper://
URLs- Hypercore-protocol has new governance led by Matthias Buus
- "Dat" now a "consortium/collective/community interested in all things decentralisation/local-first/peer-to-peer"
Also I've noticed the term hyper*
being used to broadly describe the suite of modules/abstractions related to the hypercore protocol (e.g. hyperspace, hyperswarm, hyperdrive).

- 29,398
- 28
- 117
- 170