diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 150 |
1 files changed, 150 insertions, 0 deletions
@@ -0,0 +1,150 @@ | |||
1 | PHASE #1: (Goal: settle key design questions) | ||
2 | |||
3 | Core: | ||
4 | * API review: should "bpm" and "last_activity" arguments be | ||
5 | included in the ClientEventHandler? | ||
6 | * Internal: topology | ||
7 | * Internal: bandwidth allocation (inbound limits, trust) | ||
8 | * Internal: advertising (propagate other peers' HELLOs, find new ones) | ||
9 | * Internal: bootstrapping | ||
10 | => bootstrap should use plugins, possible multiple at the same time! | ||
11 | |||
12 | Util: | ||
13 | * Should "server" argument be given in event callbacks? | ||
14 | * consider adding "get_time" to "configuration" API | ||
15 | |||
16 | |||
17 | PHASE #2: (Goal: recover basic core functionality) | ||
18 | |||
19 | Datastores: | ||
20 | * implement sqlite-based sqstore/datastore service | ||
21 | + implement library (talks to service) | ||
22 | + implement service (datastore + talks to plugin) | ||
23 | + implement sqlite plugin (talks to DB) | ||
24 | * implement sqlite-based dstore services | ||
25 | + implement library (talks to service) | ||
26 | + implement service (talks to plugin) | ||
27 | + implement sqlite plugin (talks to DB) | ||
28 | |||
29 | Applications: | ||
30 | * implement hostlist service (need to bootstrap!) | ||
31 | * DHT, DV | ||
32 | * FS / fs-libs | ||
33 | |||
34 | Databases: | ||
35 | * mysql & postgres backend | ||
36 | |||
37 | Transports: | ||
38 | * UDP backend (need LIBRARY to support (de)fragmentation!) | ||
39 | * HTTP backend | ||
40 | * Testing: | ||
41 | + Testcases for set_quota, timeouts, disconnects, transmit_ready_cancel | ||
42 | + Better coverage of gnunet-service-transport (hello validation) | ||
43 | + direct test of plugins compliance to plugin API | ||
44 | |||
45 | |||
46 | PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009] | ||
47 | |||
48 | * testing | ||
49 | * setup | ||
50 | * gtk, qt GUIs | ||
51 | * tbench | ||
52 | * tracekit | ||
53 | * vpn | ||
54 | |||
55 | |||
56 | |||
57 | Minor TODO items: | ||
58 | * SERVER: | ||
59 | - inefficient memmove | ||
60 | * TRANSPORT: | ||
61 | - transport_api: support forcing disconnects through low quotas! | ||
62 | - API: consider having core provide priority and possibly | ||
63 | deadline information for each message | ||
64 | (likely important for DV plugin which wants to loop back!) | ||
65 | - implement transport API to pretty-print transport address | ||
66 | + transport_api extension (API extension!) | ||
67 | + service-transport extension (protocol extension) | ||
68 | - add calls to statistics in various places | ||
69 | - implement gnunet-transport (transport configurator / tester) | ||
70 | - UPnP-based IP detection | ||
71 | (Note: build library always, build service when libxml2/etc. are available) | ||
72 | - instantly filter addresses from *other* peers that | ||
73 | are *equal* to our own address + port (i.e., localhost:2086). We | ||
74 | no longer filter those for outgoing (helps with loopback testing | ||
75 | and keeps the code clean), but we should filter strictly *impossible* | ||
76 | incoming addresses! This is for efficiency, not correctness. | ||
77 | - We currently are happy to take any address told to us in a WELCOME | ||
78 | to our set of addresses; we should have some minimal threshold-based | ||
79 | scheme, limiting both the total number of addresses that we accept | ||
80 | this way as well as requiring multiple confirmations; also, we | ||
81 | should possibly try to confirm that the given address works for | ||
82 | us ourselves (loopback-style) before adding it to the list | ||
83 | [SECURITY issue] | ||
84 | - not sure current way of doing ACKs works well-enough | ||
85 | with unreliable transports where the ACK maybe lost; | ||
86 | the "is_new" check would then possibly prevent future | ||
87 | ACKs to be delivered, all while we're happily | ||
88 | receiving messages from that peer! Worse, the other | ||
89 | peer won't generate another ACK since it thinks we're | ||
90 | connected just fine... | ||
91 | Key questions: | ||
92 | + How necessary is ACKing in the first place? (alternatives?) | ||
93 | + Should we transmit ACKs in response to every HELLO? (would that | ||
94 | fully address the problem?) | ||
95 | - latency measurements implemented in the transport | ||
96 | plugins makes it only work for bi-di transports | ||
97 | and results in code replication | ||
98 | - should latency be included in the ReceiveCallback and | ||
99 | NotifyConnect or passed on request? | ||
100 | * SETUP: | ||
101 | - auto-generate "defaults.conf" using gnunet-setup from "config.scm" | ||
102 | - integrate all options into "config.scm" | ||
103 | - change config-file writing to exclude options set to default values | ||
104 | * ARM: | ||
105 | - implement exponential back-off for service restarts | ||
106 | - better tracking of which config changes actually need to cause process restarts by ARM. | ||
107 | - have way to specify dependencies between services (to manage ARM restarts better) | ||
108 | * PEERINFO: | ||
109 | - have gnunet-peerinfo print actual host addresses again | ||
110 | - add option to gnunet-peerinfo to modify trust value | ||
111 | * POSTGRES-DB: | ||
112 | - finish postgres implementation; simplify other SQLs using new stats | ||
113 | * HTTPS transport | ||
114 | - PolariSSL for MHD? | ||
115 | - https integration | ||
116 | * GAP improvements: | ||
117 | - active reply route caching design & implementation of service, | ||
118 | gap extension! | ||
119 | |||
120 | => PRE-RELEASE | ||
121 | |||
122 | PHASE #4: [completion-goal: mid 2010] | ||
123 | * Documentation | ||
124 | * new webpage | ||
125 | |||
126 | |||
127 | |||
128 | |||
129 | Stuff to remember: | ||
130 | * Features eliminated from util: | ||
131 | - threading (goal: good riddance!) | ||
132 | - complex logging features [ectx-passing, target-kinds] (goal: good riddance!) | ||
133 | - complex configuration features [defaults, notifications] (goal: good riddance!) | ||
134 | - network traffic monitors (goal: eliminate) | ||
135 | - IPC semaphores (goal: d-bus? / eliminate?) | ||
136 | - second timers | ||
137 | - DNS lookup (goal: have async service; issue: still need synchronous resolution in places, current code may not be portable) | ||
138 | => code shrunk from 61 files to 34, 22k LOC to 15k LOC, 470k to 330k (with symbols) | ||
139 | * New features in util: | ||
140 | - scheduler | ||
141 | - service and program boot-strap code | ||
142 | * Major changes in util: | ||
143 | - more expressive server (replaces selector) | ||
144 | * Open questions: | ||
145 | - how to integrate scheduler with GTK event loop! | ||
146 | |||
147 | |||
148 | |||
149 | Test coverage: | ||
150 | * UTIL: 75%, 4914 out of 6463 | ||