5b3b4d48a440b297e652cd104bef496de726f210
[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 zeros)
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   - implement basic FS library
40     - download API
41     - gnunet-search (binary)
42     - gnunet-download (binary)
43   - API FIX: change type for anonymity/priority from unsigned int to uint32_t!
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   - lcov
65   - buildbot
66   - migrate Mantis?
67   - download links on Drupal?
68   - run peer
69   - configure hostlist
70   - install on proper server
71 => Deploy(able) development network
72
73
74 PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009]
75 * Module features to implement:
76   - advanced FS API parts
77     + namespaces
78       ~ fundamental namespace API
79     + search: SBlocks, KSBlocks, probes
80     + collection
81     + location URIs (publish, search, download)
82     + persistence support (publish, unindex, search, download)
83     + datastore reservation (publishing)
84     + indexing: index-failure-cleanup
85   - implement adv. FS testcases 
86     + insert: sblocks, loc uris
87     + download: loc uris
88     + search: sblocks, skblocks, loc uris
89     + namespaces
90     + collection
91   - implement FS performance tests (needs TESTING)
92     + insert
93     + download
94     + search
95     + unindex
96   - non-anonymous FS service (needs DHT)
97     + basic DHT integration
98     + CS-DHT-functions (DHT-put of LOC)
99     + P2P-functions (DHT-get)
100   - setup (RC-pre0)
101     + default generation
102     + need to settle basic design; do we want to keep guile?
103   - testing (RC-pre0)
104     + implement library for distributed testing [Nate]
105     + implement testcases for distributed testing [Nate]
106   - tbench (RC-pre1)
107     + good to have for DV evaluation!
108   - DV (RC-pre1)
109     + write DV API 
110     + implement DV service [Nate & CG]
111     + implement DV library [Nate]
112     + implement DV transport plugin [Nate & CG]
113     + implement testcases [Nate]
114     + implement performance tests [Nate]
115   - tracekit (RC-pre2)
116     + good to have for DV/DHT evaluation!
117   - DHT (RC-pre2)
118     + implement DHT service (needs DV, DATACACHE)
119     + implement DHT library
120     + implement testcases
121     + implement performance tests
122 * GUIs to implement:
123   - gtk (RC-pre1)
124     + how to integrate scheduler with GTK event loop!
125   - fuse (RC-pre2)
126   - qt (RC-pre3)
127     + see discussions @ FISL about integration with event loop!
128 * Plugins to implement:
129   - UDP backend (RC-pre2)
130     + Fragmentation library 
131     + actual plugin
132   - HTTP backend (RC-pre2)
133 * Determine RC bugs and fix those!
134
135 => PRE-RELEASE
136
137
138 PHASE #4: [completion-goal: mid 2010]
139 * Documentation
140   - Doxygen generation
141   - lcov generation
142   - update man pages
143   - update webpage documentation
144 * new webpage:
145   - expand bibliography
146   - convert documentation pages to books
147   - update books (especially for developers)
148   - create good Drupal theme for GNUnet
149   - make a NICE download page and figure out how to 
150     enable developers to publish TGZs nicely
151   - port "contact" page; add impressum
152   - add content type for "todo" items?
153   - DNS activation
154 * Plugins to implement:
155   - MySQL database backends
156     + datacache
157     + datastore
158   - Postgres database backends
159     + datacache
160     + datastore
161   - vpn
162 * Determine RC bugs and fix those!
163
164 => 0.9.0 RELEASE
165
166
167
168
169 Post 0.9.0 features:
170 * SMTP transport backend
171 * HTTPS transport backend
172   - improved HTTPS support in MHD
173   - actual plugin