Table of contents
[Show/Hide](this is a copy of https://raw.github.com/DrDub/thout/master/ROADMAP)
ROADMAP
Stage 1
- Basic server
* Server asks for a document from all connections, one connection at a time, with timeout. * Server assumes enough resources to keep track of all hashes and connections. * Customizable hash function. * Maximum document size.
- Basic client
* Handles text/plain, text/html. * Documents are . * No hash blacklisting. * No disk storage.
Stage 2
- Extend server with:
* Ask for documents on multiple connections simultaneously (e.g., three connections at the same time). * Do not ask for documents exhaustively to all connections. * Drop hashes and connections to conform to a given resource consumption level.
- Extend the basic client with:
* Console showing received and stored documents. * Handles thout://hash_function/hash URIs. * Hash blacklisting, meaning certain documents known to the user can be explicitly refused to be stored. * Pluggable handling of MIME types.
- (New) Node.js client
* Serves documents from a particular folder. It is intended to work together with a regular HTTP server folder. * This process is quite complex, as internal URIs need to be changed to thout://hash_function/hash URIs. For example: * Page index -links-to-> pages A, B, C * Page A -links-to-> pages B, D * Page B -links-to-> page C, A, index * Page C -links-to-> page D, index * Page D -links-to-> index The graph needs to be made into a tree, by dropping some nodes: * Page index -links-to-> pages A, B, C * Page A -links-to-> pages B, D * Page B -links-to-> page C * Page C -links-to-> page D * Page D Then topologically sorted: {D, C, B, A, index} and hashed in order with the links changed to thout://hash_function/hash links. * Also caches in memory a number of documents for the thout network.
Stage 3
- Extend server with:
* Capability to become a gateway, connecting to another server. * Needs to be able to detect search cycles and break them.
- Extend client with:
* Capability to connect to multiple thout servers, bridging between them.
- Extend Node.js client with:
* Capability to serve documents to multiple thout's servers, bridging between them.
Stage 4
- Freenet add-on:
* Bridges between freenet and thout. * Each freenet node is then potentially a thout node.
Stage 5
(When node.js handles asynchronous crypto.hash with buffers)
- Add to client and server the possibility to stream video.