]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - roadmap.txt
make pyflakes run faster and with more alacrity
[tahoe-lafs/tahoe-lafs.git] / roadmap.txt
1
2 ['*' means complete]
3
4 Connection Management:
5 *v1: foolscap, no relay, live=connected-to-queen, broadcast updates, full mesh
6  v2: live != connected-to-queen, connect on demand
7  v3: relay?
8
9 File Encoding:
10 *v1: single-segment, no merkle trees
11 *v2: multiple-segment (LFE)
12 *v3: merkle tree to verify each share
13 *v4: merkle tree to verify each segment
14  v5: only retrieve the minimal number of hashes instead of all of them
15
16 Share Encoding:
17 *v1: fake it (replication)
18 *v2: PyRS
19 *v2.5: ICodec-based codecs, but still using replication
20 *v3: C-based Reed-Solomon
21
22 URI:
23 *v1: really big
24  v2: derive more information from version and filesize, to remove codec_name,
25      codec_params, tail_codec_params, needed_shares, total_shares, segment_size
26
27 Upload Peer Selection:
28 *v1: permuted peer list, consistent hash
29 *v2: permute peers by verifierid and arrange around ring, intermixed with
30      shareids on the same range, each share goes to the
31      next-clockwise-available peer
32  v3: reliability/goodness-point counting?
33  v4: denver airport (chord)?
34
35 Download Peer Selection:
36 *v1: ask all peers
37  v2: permute peers and shareids as in upload, ask next-clockwise peers first
38      (the "A" list), if necessary ask the ones after them, etc.
39  v3: denver airport?
40
41 Filetable Maintenance:
42 *v1: queen-based tree of MutableDirectoryNodes, persisted to queen's disk
43      no accounts
44  v2: move tree to client side, serialize to a file, upload,
45      queen.set_filetable_uri (still no accounts, just one global tree)
46  v3: break world up into accounts, separate mutable spaces. Maybe
47      implement SSKs
48  v4: filetree
49
50 Checker/Repairer:
51 *v1: none
52  v2: centralized checker, repair agent
53  v3: nodes also check their own files
54
55 Storage:
56 *v1: no deletion, one directory per verifierid, no owners of shares,
57      leases never expire
58 *v2: multiple shares per verifierid [zooko]
59  v3: deletion
60  v4: leases expire, delete expired data on demand, multiple owners per share
61
62 UI:
63 *v1: readonly webish (nevow, URLs are filepaths)
64 *v2: read/write webish, mkdir, del (files)
65  v2.5: del (directories)
66  v3: PB+CLI tool.
67  v3.5: XUIL?
68  v4: FUSE
69
70 Operations/Deployment/Doc/Free Software/Community:
71  - tweak licence as per zfec's recent tweak
72  - move this file into the wiki
73  - Windows port and testing
74  - Trac instance
75  - extirpate all references to "queen" and "metatracker"
76  - set up public trac, buildbot reports, mailing list, download page
77
78 back pocket ideas:
79  when nodes are unable to reach storage servers, make a note of it, inform
80  queen eventually. queen then puts server under observation or otherwise
81  looks for differences between their self-reported availability and the
82  experiences of others
83
84  store filetable URI in the first 10 peers that appear after your own nodeid
85  each entry has a sequence number, maybe a timestamp
86  on recovery, find the newest
87
88  multiple categories of leases:
89   1: committed leases -- we will not delete these in any case, but will instead
90      tell an uploader that we are full
91    1a: active leases
92    1b: in-progress leases (partially filled, not closed, pb connection is
93        currently open)
94   2: uncommitted leases -- we will delete these in order to make room for new
95      lease requests
96    2a: interrupted leases (partially filled, not closed, pb connection is
97        currently not open, but they might come back)
98    2b: expired leases
99
100   (I'm not sure about the precedence of these last two. Probably deleting
101   expired leases instead of deleting interrupted leases would be okay.)
102
103 big questions:
104  convergence?
105  peer list maintenance: lots of entries
106