From bfdcc107028f64d3d4a6e38ae9732d33182502d6 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 25 Sep 2018 18:20:13 +0200 Subject: Add some ideas --- TODO | 91 ++++++++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 26 deletions(-) (limited to 'TODO') diff --git a/TODO b/TODO index fafcdf7..2034785 100644 --- a/TODO +++ b/TODO @@ -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. + -- cgit v1.2.3