aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2018-09-25 18:20:13 +0200
committerAlex Auvolat <alex@adnab.me>2018-09-25 18:20:13 +0200
commitbfdcc107028f64d3d4a6e38ae9732d33182502d6 (patch)
treeb86e1ffd38a02ae9075f7d6ea5c1bacbbface1de /TODO
parentf8702768d38381390bcdaf50ada28239aab87b56 (diff)
downloadshard-bfdcc107028f64d3d4a6e38ae9732d33182502d6.tar.gz
shard-bfdcc107028f64d3d4a6e38ae9732d33182502d6.zip
Add some ideas
Diffstat (limited to 'TODO')
-rw-r--r--TODO91
1 files changed, 65 insertions, 26 deletions
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.
+