Skip to content

Instantly share code, notes, and snippets.

@RangerMauve
Last active April 9, 2019 23:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RangerMauve/17e4ccd38f15a905e3f15793c5bf2699 to your computer and use it in GitHub Desktop.
Save RangerMauve/17e4ccd38f15a905e3f15793c5bf2699 to your computer and use it in GitHub Desktop.
Tools in the Dat Toolbelt

Dat Toolbelt

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.

Data

  • 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
  • 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?

P2P discovery

  • 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?)

Reliability

  • 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

Application development / delivery

  • 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

API

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment