Dat has a cool ecosystem with a bunch of different people working on interesting things. This is a list of what I'd like to have in an official Dat Toolbelt along with tutorials on how to use these tools.
- Files
- Create a file, share it with a
dat://
link - All archives should be multiwritable, with mounts / etc
- Should be able to listen to changes to path in the archive regardless of if there's mounts along the way
- File load should be shared
- Should be stored in some sort of cache regardless of platform
- Create a file, share it with a
- Append-only Logs (Feeds?)
- Should support arbitrary data
- Sparsely replicated by default
- Watch for changes
- Single writer?
- Foundation for fancier data
- Structures built on top of Feeds
- Key Value Store (HyperDB)
- Kappa Architecture (Kappa-db)
- Multifeed?
- Main data structures should have a way to "just work" in terms of replication
- If a Dat is mounted, we should replicate with both the mouter and the mountee swarms
- We should try to reuse connections as much as possible
- We should be able to ask our peer to fetch data they don't have from their peers
- Should be able to get duplex connections for a given
key
- Enables application developers to build P2P things that aren't 'Dat' for stuff like games and custom discovery mechanisms
- Should support whatever transports are available to the platform
- (WiFi MDNS, Internet with DHT, local BT, WifiDirect, etc)
- Should work in browsers
- Should use transport level encryption
- Doesn't get broken by knowing a Dat key (Noise?)
- Dat Stores
- Make it easy to keep content online if your computer is offline
- Should be easy to set up a store that runs on a Device you control
- The store should be able to handle any of the Dat data structures
- Abstract away interaction with the store from the store location
- Automatically discover stores on the network to present to users (so they don't need to deal with raw IP addresses)
- Dat Discovery Proxies
- Used for accessing a Dat P2P network the user can't directly connect to
- The server provides the raw Peer discovery mechanism over a single connection
- This is how discovery works in web browsers
- It should be easy to set up and discovery these proxies
- We should have a high level API that would work the same in all environments
- Beaker browser for P2P websites / webapps
- Firefox / Chrome extensions to enable same workflow as Beaker
- Datmobile (eventually) for Mobile websites / webapps
- React-Native API for native mobile apps
- dat-installer for loading mobile app downloads from the P2P network
- Electron based apps
- Dat CLI for loading content and interacting with the ecosystem
- Rust API for native code integration