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