* Distributed hash lookup service/routing layer: Chord / Secant - Looks up nodes responsible for given blocks: lookup(). - Possible use as a routing layer for RPC (ChordNet). - Secant: a new implementation - easier to build, not dependent on SFS - implemented in Python? - Possible tweaks: use of TCP vs UDP, etc - see braindump. - build this later, if there's time * Distributed hash table: DHash/DHash++/++DHash++ - Stores blocks for a given key. - Ensures distribution/replication for blocks somehow (erasure coding?) - get(), put() calls. - append()? - tagged data format, for different types/versions of blocks * Distributed metadata indexing service - Performs searches: get_metadata() and put_metadata() - KSS for indexing, plus filtering of results by metadata - Recursive insertion for KSS? - Lots of other ideas for this -- see braindumps, etc. * DHT-based file transfer mechanism - Block based - Self-certifying - Files are sets of blocks; obtain blocks from anyone who has them available. - Includes partially-downloaded files and similar files - Use magic algorithm for partitioning into blocks by similarity. - Obtain blocks from multiple sources - Use specialized transport protocol? * DHT-based file sharing system - Built on top of these other services - Be as file-transfer-mechanism agnostic as possible - Support transfer using other mechanisms, i.e. BitTorrent - Still need to divide up file into blocks to allow parts of the file to be transferred using each system -- build abstraction here. - Initially just use some other file-transfer system. - Bootstrap network by usurping files from other networks - Implement using giFT?