diff options
author | Alex Auvolat <alex@adnab.me> | 2018-09-25 18:20:13 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2018-09-25 18:20:13 +0200 |
commit | bfdcc107028f64d3d4a6e38ae9732d33182502d6 (patch) | |
tree | b86e1ffd38a02ae9075f7d6ea5c1bacbbface1de /TODO | |
parent | f8702768d38381390bcdaf50ada28239aab87b56 (diff) | |
download | shard-bfdcc107028f64d3d4a6e38ae9732d33182502d6.tar.gz shard-bfdcc107028f64d3d4a6e38ae9732d33182502d6.zip |
Add some ideas
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 91 |
1 files changed, 65 insertions, 26 deletions
@@ -1,10 +1,35 @@ +KEEP IT SIMPLE, STUPID! +----------------------- + +Ideas are all over the place for this project. When adding something, let's +make sure it's reasonnable to do so and doesn't burden the user with some +overcomplicated concepts. We want the minimal and most elegant solution that +achieves our goals. + + +TASK LIST +========= + +- Highest priority: pagehash, sign +- Medium priority: dht, ep, dep + +Fix page hash semantics (pagehash, EASY) +----------------------- + +Store and transmit the term binary and not the term itself so that +we are sure serialization is unique and hash is the same everywhere. + +Terminology: stop using the word "block", use "page" everywhere. + + DHT to find peers for a given shard (dht, EASY) ----------------------------------- First option: use a library for MLDHT, makes everything simple but makes us use UDP which does not work with Tor (can fix this later). -Second option: custom DHT protocol. +Second option: custom DHT protocol (we probably won't be doing this +anytime soon, if ever at all) Epidemic broadcast (ep, EASY) @@ -23,31 +48,6 @@ Best option: those that we are connected to + some random to reach a quota (for example 10 or so) -Block store root & GC handling (gc, QUITE EASY) ------------------------------- - -We want the block store app to be aware of what blocks are needed -or not. The Page protocol already implements dependencies between -blocks. - -The block store keeps all pages that have been put for a given -delay. Once the delay is passed, the pages are purged if they are -not required by a root we want to keep. - - -Partial sync/background pull for big objects (bg, req: gc, QUITE EASY) --------------------------------------------- - -Implement the copy protocol as a lazy call that launches the copy -in background. - -Remove the callback possibility in MerkleSearchTree.merge so that -pulling all the data is not required for a merge. The callback can -be only called on the items that are new in the last n (ex. 100) -items of the resulting tree, this is not implemented in the MST but -in the app that uses it since it is application specific. - - Partial merges, background pulls, caching (cache, req: bg, HARD) ----------------------------------------- @@ -109,3 +109,42 @@ Automated algorithms that take account the trust values in access control decisions (obviously these can only run when an identity with admin privilege is running). + +Shard dependency management (dep, MED) +--------------------------- + +Some Shards may pull other shards in, under certain conditions. For example +a stored folder shard will just be a list of other shards that we all pull in. + +We want a way to have toplevel shards, shards that are dependencies of +toplevel shards, and shards that we keep for a number of days as a cache but +will expire automatically. + + +COMPLETED TASKS +=============== + +Block store root & GC handling (gc, QUITE EASY) +------------------------------ + +We want the block store app to be aware of what blocks are needed +or not. The Page protocol already implements dependencies between +blocks. + +The block store keeps all pages that have been put for a given +delay. Once the delay is passed, the pages are purged if they are +not required by a root we want to keep. + + +Partial sync/background pull for big objects (bg, req: gc, QUITE EASY) +-------------------------------------------- + +Implement the copy protocol as a lazy call that launches the copy +in background. + +Remove the callback possibility in MerkleSearchTree.merge so that +pulling all the data is not required for a merge. The callback can +be only called on the items that are new in the last n (ex. 100) +items of the resulting tree, this is not implemented in the MST but +in the app that uses it since it is application specific. + |