49b1fc73bb96200611b41b1baa8d89e97003b97d
[oweals/gnunet.git] / TODO
1 Implementable right now (but not necessarily important), with caveats
2 (unavailable components that will limit what can be implemented right
3 away), in order in which they will likely be done:
4 * TESTING
5 * FS (DHT not available)
6 * SETUP
7 * DV (distributed testing not available)
8 * TBENCH (distributed testing not available)
9 * TRACEKIT (distributed testing not available)
10 * HTTP transport
11 * FRAGMENTATION
12 * MySQL / Postgres plugins (datastore, datacache)
13 * UPNP
14
15
16 PHASE #2: (Goal: recover basic file-sharing functionality)
17 * TESTING (needed for DV, DHT, Topology)
18   - implement library for local testing
19     + modify configuration to allow controlling
20       connections for non-local starts
21     + CORE service does not start with valid peer ID (all zeross)
22       -- testcase fails!
23     + consider changing API for peer-group termination
24       to call continuation when done
25     + testbed creation with topology (needs working F2F topology) [Nate]
26     + testbed with churn [Nate]
27   - implement testcases for library
28     + get test for basic peer start to work!
29     + test basic peer connect
30     + test group start
31     + test basic peer re-configure [Nate]
32     + test topology creation [Nate]
33     + test churn generation [Nate]
34 * TOPOLOGY:
35   - implement testcases (needs TESTING)
36 * HOSTLIST:
37   - implement testcases
38 * FS (basic anonymous FS only)
39   - design network structs (CS)
40     + search/download, response
41   - implement basic FS library
42     - keyword-search
43     - download (need search to be done)
44   - design network structs (P2P)
45     + query
46     + response
47   - implement FS service
48     + datastore request queueing mechanism
49     + CS-functions (search, download, index, get_indexed, unindex)
50     + P2P-functions (query, response)
51   - implement testcases 
52     + URI API
53     + getopt API
54     + sharing API
55       ~ file-information
56       ~ publish (insert, index)
57       ~ download
58       ~ search
59       ~ unindex
60       ~ namespaces
61       ~ collection
62     + directory API
63 * new webpage
64   - install on proper server
65   - activate as ng.gnunet.org
66 => Deploy(able) development network
67
68
69 PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009]
70 * Module features to implement:
71   - advanced FS API parts
72     + namespaces
73       ~ fundamental namespace API
74       ~ SBlock search
75       ~ KSBlocks!?
76     + collection
77     + location URIs (publish, search, download)
78     + persistence support (publish, unindex, search, download)
79     + datastore reservation (publishing)
80     + indexing: index-failure-cleanup
81   - implement adv. FS testcases 
82     + insert: sblocks, loc uris
83     + download: loc uris
84     + search: sblocks, skblocks, loc uris
85     + namespaces
86     + collection
87   - implement FS performance tests (needs TESTING)
88     + insert
89     + download
90     + search
91     + unindex
92   - non-anonymous FS service (needs DHT)
93     + basic DHT integration
94     + CS-DHT-functions (DHT-put of LOC)
95     + P2P-functions (DHT-get)
96   - setup (RC-pre0)
97     + default generation
98     + need to settle basic design; do we want to keep guile?
99   - testing (RC-pre0)
100     + implement library for distributed testing [Nate]
101     + implement testcases for distributed testing [Nate]
102   - tbench (RC-pre1)
103     + good to have for DV evaluation!
104   - DV (RC-pre1)
105     + write DV API 
106     + implement DV service [Nate & CG]
107     + implement DV library [Nate]
108     + implement DV transport plugin [Nate & CG]
109     + implement testcases [Nate]
110     + implement performance tests [Nate]
111   - tracekit (RC-pre2)
112     + good to have for DV/DHT evaluation!
113   - DHT (RC-pre2)
114     + implement DHT service (needs DV, DATACACHE)
115     + implement DHT library
116     + implement testcases
117     + implement performance tests
118 * GUIs to implement:
119   - gtk (RC-pre1)
120     + how to integrate scheduler with GTK event loop!
121   - fuse (RC-pre2)
122   - qt (RC-pre3)
123     + see discussions @ FISL about integration with event loop!
124 * Plugins to implement:
125   - UDP backend (RC-pre2)
126     + Fragmentation library 
127     + actual plugin
128   - HTTP backend (RC-pre2)
129 * Determine RC bugs and fix those!
130
131 => PRE-RELEASE
132
133
134 PHASE #4: [completion-goal: mid 2010]
135 * Documentation
136   - Doxygen generation
137   - lcov generation
138   - update man pages
139   - update webpage documentation
140 * new webpage:
141   - expand bibliography
142   - convert documentation pages to books
143   - update books (especially for developers)
144   - create good Drupal theme for GNUnet
145   - make a NICE download page and figure out how to 
146     enable developers to publish TGZs nicely
147   - port "contact" page; add impressum
148   - add content type for "todo" items?
149   - DNS activation
150 * Plugins to implement:
151   - MySQL database backends
152     + datacache
153     + datastore
154   - Postgres database backends
155     + datacache
156     + datastore
157   - vpn
158 * Determine RC bugs and fix those!
159
160 => 0.9.0 RELEASE
161
162
163
164
165 Post 0.9.0 features:
166 * SMTP transport backend
167 * HTTPS transport backend
168   - improved HTTPS support in MHD
169   - actual plugin