diff options
-rw-r--r-- | RATIONALE | 45 | ||||
-rw-r--r-- | README | 100 | ||||
-rw-r--r-- | TODO | 41 | ||||
-rwxr-xr-x | contrib/report.sh | 21 | ||||
-rwxr-xr-x | mkinstalldirs | 5 |
5 files changed, 111 insertions, 101 deletions
@@ -1,12 +1,13 @@ | |||
1 | This document is a summary of why we're moving to GNUnet NG and what | 1 | This document is a summary of the changes made to GNUnet for version |
2 | this major redesign tries to address. | 2 | 0.9.x (from 0.8.x) and what this major redesign tries to address. |
3 | 3 | ||
4 | First of all, the redesign does not (intentionally) change anything | 4 | First of all, the redesign does not (intentionally) change anything |
5 | fundamental about the application-level protocols or how files are | 5 | fundamental about the application-level protocols or how files are |
6 | encoded and shared. However, it is not protocol-compatible due to | 6 | encoded and shared. However, it is not protocol-compatible due to |
7 | other changes that do not relate to the essence of the application | 7 | other changes that do not relate to the essence of the application |
8 | protocols. | 8 | protocols. This choice was made since productive development and |
9 | 9 | readable code were considered more important than compatibility at | |
10 | this point. | ||
10 | 11 | ||
11 | The redesign tries to address the following major problem groups | 12 | The redesign tries to address the following major problem groups |
12 | describing isssues that apply more or less to all GNUnet versions | 13 | describing isssues that apply more or less to all GNUnet versions |
@@ -26,10 +27,10 @@ PROBLEM GROUP 1 (scalability): | |||
26 | mutexes and almost 1000 lines of lock/unlock operations. | 27 | mutexes and almost 1000 lines of lock/unlock operations. |
27 | It is challenging for even good programmers to program or | 28 | It is challenging for even good programmers to program or |
28 | maintain good multi-threaded code with this complexity. | 29 | maintain good multi-threaded code with this complexity. |
29 | The excessive locking essentially prevents GNUnet from | 30 | The excessive locking essentially prevents GNUnet 0.8 from |
30 | actually doing much in parallel on multicores. | 31 | actually doing much in parallel on multicores. |
31 | * Despite efforts like Freeway, it was virtually | 32 | * Despite efforts like Freeway, it was virtually |
32 | impossible to contribute code to GNUnet that was not | 33 | impossible to contribute code to GNUnet 0.8 that was not |
33 | writen in C/C++. | 34 | writen in C/C++. |
34 | * Changes to the configuration almost always required restarts | 35 | * Changes to the configuration almost always required restarts |
35 | of gnunetd; the existence of change-notifications does not | 36 | of gnunetd; the existence of change-notifications does not |
@@ -44,11 +45,11 @@ PROBLEM GROUP 1 (scalability): | |||
44 | days, result in really nasty and hard-to-find crashes. | 45 | days, result in really nasty and hard-to-find crashes. |
45 | * structs of function pointers in service APIs were | 46 | * structs of function pointers in service APIs were |
46 | needlessly adding complexity, especially since in | 47 | needlessly adding complexity, especially since in |
47 | most cases there was no polymorphism | 48 | most cases there was no actual polymorphism |
48 | 49 | ||
49 | SOLUTION: | 50 | SOLUTION: |
50 | * Use multiple, lously-coupled processes and one big select | 51 | * Use multiple, lously-coupled processes and one big select |
51 | loop in each (supported by a powerful library to eliminate | 52 | loop in each (supported by a powerful util library to eliminate |
52 | code duplication for each process). | 53 | code duplication for each process). |
53 | * Eliminate all threads, manage the processes with a | 54 | * Eliminate all threads, manage the processes with a |
54 | master-process (gnunet-arm, for automatic restart manager) | 55 | master-process (gnunet-arm, for automatic restart manager) |
@@ -65,13 +66,15 @@ SOLUTION: | |||
65 | => Process priorities can be used to schedule the CPU better | 66 | => Process priorities can be used to schedule the CPU better |
66 | Note that we can not just use one process with a big | 67 | Note that we can not just use one process with a big |
67 | select loop because we have blocking operations (and the | 68 | select loop because we have blocking operations (and the |
68 | blocking is outside of our control, thanks MySQL, | 69 | blocking is outside of our control, thanks to MySQL, |
69 | sqlite, gethostbyaddr, etc.). So in order to perform | 70 | sqlite, gethostbyaddr, etc.). So in order to perform |
70 | reasonably well, we need some construct for parallel | 71 | reasonably well, we need some construct for parallel |
71 | execution. | 72 | execution. |
72 | 73 | ||
73 | RULE: If your service contains blocking functions, it | 74 | RULE: If your service contains blocking functions, it |
74 | MUST be a process by itself. | 75 | MUST be a process by itself. If your service |
76 | is sufficiently complex, you MAY choose to make | ||
77 | it a separate process. | ||
75 | * Eliminate structs with function pointers for service APIs; | 78 | * Eliminate structs with function pointers for service APIs; |
76 | instead, provide a library (still ending in _service.h) API | 79 | instead, provide a library (still ending in _service.h) API |
77 | that transmits the requests nicely to the respective | 80 | that transmits the requests nicely to the respective |
@@ -121,6 +124,8 @@ SOLUTION: | |||
121 | thing given the potential for bugs. | 124 | thing given the potential for bugs. |
122 | * There is no more TIME API function to do anything | 125 | * There is no more TIME API function to do anything |
123 | with 32-bit seconds | 126 | with 32-bit seconds |
127 | * There is now a bandwidth API to handle | ||
128 | non-trivial bandwidth utilization calculations | ||
124 | 129 | ||
125 | 130 | ||
126 | PROBLEM GROUP 3 (statistics): | 131 | PROBLEM GROUP 3 (statistics): |
@@ -237,18 +242,15 @@ PROBLEM GROUP 6 (FS-APIs): | |||
237 | * FILENAME metadata is killed by ECRS/FSUI to avoid | 242 | * FILENAME metadata is killed by ECRS/FSUI to avoid |
238 | exposing HOME, but what if the user set it manually? | 243 | exposing HOME, but what if the user set it manually? |
239 | 244 | ||
240 | SOLUTION (draft, not done yet, details missing...): | 245 | SOLUTION: |
241 | * Eliminate threads from FS-APIs | 246 | * Eliminate threads from FS-APIs |
242 | => Open question: how to best write the APIs to | 247 | * Incrementally store FS-state always also on disk using many |
243 | allow integration with diverse event loops | 248 | small files instead of one big file |
244 | of GUI libraries? | ||
245 | * Store FS-state always also on disk | ||
246 | => Open question: how to do this without | ||
247 | compromising state/scalability? | ||
248 | * Have API to manipulate sharing tree before | 249 | * Have API to manipulate sharing tree before |
249 | upload; have auto-construction modify FILENAME | 250 | upload; have auto-construction modify FILENAME |
250 | but allow user-modifications afterwards | 251 | but allow user-modifications afterwards |
251 | 252 | ||
253 | |||
252 | PROBLEM GROUP 7 (User experience): | 254 | PROBLEM GROUP 7 (User experience): |
253 | * Searches often do not return a sufficient / significant number of | 255 | * Searches often do not return a sufficient / significant number of |
254 | results | 256 | results |
@@ -281,11 +283,12 @@ SUMMARY: | |||
281 | - network traffic monitors (goal: eliminate) | 283 | - network traffic monitors (goal: eliminate) |
282 | - IPC semaphores (goal: d-bus? / eliminate?) | 284 | - IPC semaphores (goal: d-bus? / eliminate?) |
283 | - second timers | 285 | - second timers |
284 | - DNS lookup (goal: have async service; issue: still need synchronous | ||
285 | resolution in places, current code may not be portable) | ||
286 | => code shrunk from 61 files to 34, 22k LOC to 15k LOC, 470k to 330k (with symbols) | ||
287 | * New features in util: | 286 | * New features in util: |
288 | - scheduler | 287 | - scheduler |
289 | - service and program boot-strap code | 288 | - service and program boot-strap code |
289 | - bandwidth and time APIs | ||
290 | - buffered IO API | ||
291 | - HKDF implementation (crypto) | ||
290 | * Major changes in util: | 292 | * Major changes in util: |
291 | - more expressive server (replaces selector) | 293 | - more expressive server (replaces selector) |
294 | - DNS lookup replaced by async service | ||
@@ -7,13 +7,13 @@ What is GNUnet? | |||
7 | GNUnet is peer-to-peer framework focusing on security. The first and | 7 | GNUnet is peer-to-peer framework focusing on security. The first and |
8 | primary application for GNUnet is anonymous file-sharing. GNUnet is | 8 | primary application for GNUnet is anonymous file-sharing. GNUnet is |
9 | currently developed by a worldwide group of independent free software | 9 | currently developed by a worldwide group of independent free software |
10 | developers. GNUnet is a part of the GNU project (http://www.gnu.org/). | 10 | developers. GNUnet is a GNU package (http://www.gnu.org/). |
11 | 11 | ||
12 | This is an ALPHA release. There are known and significant bugs as | 12 | This is an ALPHA release. There are known and significant bugs as |
13 | well as many missing features in this release. | 13 | well as many missing features in this release. |
14 | 14 | ||
15 | For a longer description of the GNUnet System see our webpages | 15 | Additional documentation about GNUnet can be found at |
16 | http://www.gnu.org/software/gnunet/ and https://ng.gnunet.org/. | 16 | https://gnunet.org/. |
17 | 17 | ||
18 | 18 | ||
19 | Dependencies: | 19 | Dependencies: |
@@ -45,40 +45,41 @@ How to install? | |||
45 | 45 | ||
46 | The fastest way is to use a binary package if it is available for your | 46 | The fastest way is to use a binary package if it is available for your |
47 | system. For a more detailed description, read the installation | 47 | system. For a more detailed description, read the installation |
48 | instructions on the webpage at https://ng.gnunet.org/installation. | 48 | instructions on the webpage at https://gnunet.org/installation. |
49 | |||
50 | GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/) | ||
51 | and libgcrypt (http://www.gnupg.org/). You can specify the path to | ||
52 | libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also | ||
53 | need either sqlite (http://www.sqlite.org/) or MySQL | ||
54 | (http://www.mysql.org/). | ||
49 | 55 | ||
50 | If you install from source, you need to install GNU libextractor first | 56 | If you install from source, you need to install GNU libextractor first |
51 | (download from http://www.gnu.org/software/libextractor/). We also | 57 | (download from http://www.gnu.org/software/libextractor/). We also |
52 | recommend installing GNU libmicrohttpd. Then you can start the actual | 58 | recommend installing GNU libmicrohttpd (download from |
53 | GNUnet compilation process with: | 59 | http://www.gnu.org/software/libmicrohttpd/). Then you can start the |
60 | actual GNUnet compilation process with: | ||
54 | 61 | ||
55 | $ ./configure --prefix=$HOME --with-extractor=$HOME | 62 | $ ./configure --prefix=$HOME --with-extractor=$HOME |
56 | $ make | 63 | $ make |
57 | # make install | 64 | # make install |
58 | # sudo -u gnunet gnunet-setup # (note: does not yet exist!) | 65 | # sudo -u gnunet mkdir ~/.gnunet/ |
66 | # sudo -u gnunet touch ~/.gnunet/gnunet.conf | ||
59 | # sudo -u gnunet gnunet-arm -s | 67 | # sudo -u gnunet gnunet-arm -s |
60 | 68 | ||
61 | This will compile and install GNUnet to ~/bin/, ~/lib/ and ~/man/. | 69 | This will compile and install GNUnet to $HOME/bin/, $HOME/lib/ and |
62 | gnunet-setup will create the configuration; this step is interactive. | 70 | $HOME/share/ and start the system with the default configuration. It |
63 | You can run gnunet-setup as root for a system-wide installation or as | 71 | is recommended that you add a user "gnunet" to run "gnunet-arm". You |
64 | a particular user to create a personal installation. It is | 72 | can then still run the end-user applications as another user. If you |
65 | recommended that you add a user "gnunet" to run "gnunet-arm". You can | ||
66 | then still run the end-user applications as another user. If you | ||
67 | create a user "gnunet", it is recommended that you edit the | 73 | create a user "gnunet", it is recommended that you edit the |
68 | configuration file slightly so that data can be stored in | 74 | configuration file slightly so that data can be stored in |
69 | "/var/lib/gnunet"; you may also want to use "/etc/gnunet.conf" for the | 75 | "/var/lib/gnunet"; you may also want to use "/etc/gnunet.conf" for the |
70 | configuration in this case. | 76 | location of the configuration file in this case. |
71 | 77 | ||
72 | Note that additional, per-user configuration files | 78 | Note that additional, per-user configuration files |
73 | (~/.gnunet/gnunet.conf) need to be created by each user (for example, | 79 | (~/.gnunet/gnunet.conf) need to be created by each user (for example, |
74 | by running gnunet-setup). For more general information about the GNU | 80 | by running gnunet-setup). For more general information about the GNU |
75 | build process read the INSTALL file. | 81 | build process read the INSTALL file. |
76 | 82 | ||
77 | GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/) | ||
78 | and libgcrypt. You can specify the path to libgcrypt by passing | ||
79 | "--with-gcrypt=PATH" to configure. You will also need either sqlite | ||
80 | (version 3 or higher) or MySQL (version 5.0 or higher). | ||
81 | |||
82 | If you are compiling the code from subversion, you have to run | 83 | If you are compiling the code from subversion, you have to run |
83 | ". bootstrap" before ./configure. If you receive an error during the | 84 | ". bootstrap" before ./configure. If you receive an error during the |
84 | running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not | 85 | running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not |
@@ -91,24 +92,20 @@ $ aclocal -I /usr/local/share/aclocal | |||
91 | Configuration | 92 | Configuration |
92 | ============= | 93 | ============= |
93 | 94 | ||
94 | // FIXME: update this section once we have gnunet-setup! GNUnet uses | 95 | GNUnet uses two types of configuration files, one that specifies the |
95 | two types of configuration files, one for the daemon (called | 96 | system-wide defaults (typically located in /usr/share/gnunet/defaults |
96 | gnunetd.conf) and one for each user (gnunet.conf). You can create and | 97 | .conf) and a second one that overrides default values with |
97 | edit these configuration files with the gnunet-setup tool. The | 98 | user-specific preferences. The user-specific configuration file |
98 | defaults that are created the first time you run gnunet-setup are | 99 | should be located in "~/.gnunet/gnunet.conf" or its location can be |
99 | usually ok, you may want to adjust the limitations (space consumption, | 100 | specified by giving the "-c" option to the respective GNUnet |
100 | bandwidth, etc.) though. The configuration files are human-readable; | 101 | application. |
101 | GNUnet's configuration is typically located at | ||
102 | "~/.gnunet/gnunet.conf". | ||
103 | 102 | ||
104 | You MUST create "~/.gnunet/gnunet.conf" explicitly before starting | 103 | The defaults that are shipped with the installation are usually ok, |
105 | GNUnet, and the recommended way to do this is to run gnunet-setup. | 104 | you may want to adjust the limitations (space consumption, bandwidth, |
106 | You can also create an empty configuration file, in which case | 105 | etc.) though. The configuration files are human-readable. Note that |
107 | default values will be used for everything. | 106 | you MUST create "~/.gnunet/gnunet.conf" explicitly before starting |
108 | 107 | GNUnet. You can either copy "defaults.conf" or simply create an empty | |
109 | If you want to use a different configuration file, pass the name of | 108 | file. |
110 | the configuration file as an argument with the option "-c" to any | ||
111 | GNUnet application. | ||
112 | 109 | ||
113 | 110 | ||
114 | Usage | 111 | Usage |
@@ -126,19 +123,19 @@ $ cat $SERVICEHOME/data/hosts/* > the_file | |||
126 | 123 | ||
127 | and offering 'the_file' via your web server. Alternatively, you can | 124 | and offering 'the_file' via your web server. Alternatively, you can |
128 | run the build-in web server by adding '-p' to the OPTIONS value | 125 | run the build-in web server by adding '-p' to the OPTIONS value |
129 | in the "hostlist" section of gnunet.conf. | 126 | in the "hostlist" section of gnunet.conf and opening the respective |
127 | HTTPPORT to the public. | ||
130 | 128 | ||
131 | If the solution with the URL is not feasible for your situation, you | 129 | If the solution with the hostlist URL is not feasible for your |
132 | can also add hosts manually. Simply copy the hostkeys to | 130 | situation, you can also add hosts manually. Simply copy the hostkeys |
133 | "$SERVICEHOME/data/hosts/" (where $SERVICEHOME is the directory | 131 | to "$SERVICEHOME/data/hosts/" (where $SERVICEHOME is the directory |
134 | specified in the /etc/gnunet.conf configuration file). | 132 | specified in the gnunet.conf configuration file). |
135 | 133 | ||
136 | Now start the local node using "gnunet-arm -s". GNUnet should run 24/7 if | 134 | Now start the local node using "gnunet-arm -s". GNUnet should run 24/7 if |
137 | you want to maximize your anonymity. | 135 | you want to maximize your anonymity. |
138 | 136 | ||
139 | // FIXME: gnunet-gtk is not yet supported in 0.9.x | 137 | The GTK user interface is shipped separately. After downloading and |
140 | The GTK user interface is shipped separately from GNUnet. After | 138 | installing gnunet-gtk, you can invoke the GUI with: |
141 | downloading and installing gnunet-gtk, you can invoke the GUI with: | ||
142 | 139 | ||
143 | $ gnunet-gtk | 140 | $ gnunet-gtk |
144 | 141 | ||
@@ -202,13 +199,13 @@ Running http on port 80 | |||
202 | ======================= | 199 | ======================= |
203 | 200 | ||
204 | In order to hide GNUnet's HTTP traffic perfectly, you might consider | 201 | In order to hide GNUnet's HTTP traffic perfectly, you might consider |
205 | running GNUnet's HTTP transport on port 80. However, you should not | 202 | running GNUnet's HTTP transport on port 80. However, we do not |
206 | run GNUnet as root. Instead, forward port 80 to say 8080 with this | 203 | recommend running GNUnet as root. Instead, forward port 80 to say |
207 | command (as root, in your startup scripts): | 204 | 8080 with this command (as root, in your startup scripts): |
208 | 205 | ||
209 | # iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 | 206 | # iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 |
210 | 207 | ||
211 | Then set in the HTTP section of gnunetd.conf the "ADVERTISED-PORT" | 208 | Then set in the HTTP section of gnunet.conf the "ADVERTISED-PORT" |
212 | to "80" and "PORT" to 8080. You can do the same trick for the | 209 | to "80" and "PORT" to 8080. You can do the same trick for the |
213 | TCP and UDP transports if you want to map them to a priviledged | 210 | TCP and UDP transports if you want to map them to a priviledged |
214 | port (from the point of view of the network). | 211 | port (from the point of view of the network). |
@@ -227,12 +224,11 @@ P2P over SMTP, read the instructions at http://gnunet.org/smtp.php3 | |||
227 | Stay tuned | 224 | Stay tuned |
228 | ========== | 225 | ========== |
229 | 226 | ||
230 | * http://www.gnu.org/software/gnunet/ | 227 | * https://gnunet.org/ |
231 | * http://gnunet.org/ | ||
232 | * https://gnunet.org/bugs/ | 228 | * https://gnunet.org/bugs/ |
233 | * https://ng.gnunet.org/ | 229 | * https://gnunet.org/svn/ |
230 | * http://www.gnu.org/software/gnunet/ | ||
234 | * http://mail.gnu.org/mailman/listinfo/gnunet-developers | 231 | * http://mail.gnu.org/mailman/listinfo/gnunet-developers |
235 | * http://mail.gnu.org/mailman/listinfo/help-gnunet | 232 | * http://mail.gnu.org/mailman/listinfo/help-gnunet |
236 | * http://mail.gnu.org/mailman/listinfo/info-gnunet | 233 | * http://mail.gnu.org/mailman/listinfo/info-gnunet |
237 | * http://mail.gnu.org/mailman/listinfo/gnunet-svn | 234 | * http://mail.gnu.org/mailman/listinfo/gnunet-svn |
238 | |||
@@ -4,6 +4,8 @@ | |||
4 | [On W32, we need to select after calling socket before doing connect etc.] | 4 | [On W32, we need to select after calling socket before doing connect etc.] |
5 | * TRANSPORT: | 5 | * TRANSPORT: |
6 | - HTTP backend [MW] | 6 | - HTTP backend [MW] |
7 | - UDP fails non-deterministically on niko; suspect that it uses hostname-derived, | ||
8 | invalid 10.0.0.x address for test-message (which creates transmission failure) [CG] | ||
7 | - Jun 27 11:51:54 core-7670 ERROR Assertion failed at gnunet-service-core.c:3616. | 9 | - Jun 27 11:51:54 core-7670 ERROR Assertion failed at gnunet-service-core.c:3616. |
8 | (transport notified us that we connected to ourselves!!!) | 10 | (transport notified us that we connected to ourselves!!!) |
9 | * CORE: | 11 | * CORE: |
@@ -11,25 +13,22 @@ | |||
11 | disconnect in a timely fashion (waits for connection timeout); | 13 | disconnect in a timely fashion (waits for connection timeout); |
12 | need to figure a way to make it near-instant in those cases | 14 | need to figure a way to make it near-instant in those cases |
13 | (i.e. rapid reduction in timeout on transport-level disconnect) [CG] | 15 | (i.e. rapid reduction in timeout on transport-level disconnect) [CG] |
16 | => may have been fixed with instant-notification of disconnect | ||
17 | to core on session-oriented connection hick-up; not perfect but | ||
18 | likely good enough until we get ATS going; still should be tested... | ||
14 | - derived key generation [Nils] | 19 | - derived key generation [Nils] |
15 | * DHT: [Nate] | 20 | * DHT: [Nate] |
16 | - implement DHT service | 21 | - implement DHT service |
17 | - implement testcases | ||
18 | - implement performance tests | 22 | - implement performance tests |
19 | * FS: [CG] | 23 | * FS: [CG] |
20 | - service: | 24 | - service: |
21 | + trust: do not charge when "idle" / load considerations (migration, routing) | 25 | + trust: do not charge when "idle" / load considerations (migration, routing) |
22 | + artificial delays | 26 | + artificial delays |
23 | + active reply route caching design & implementation of service; gap extension! | 27 | + active reply route caching design & implementation; gap extension! |
24 | - non-anonymous FS service (needs DHT) | 28 | - non-anonymous FS service (needs DHT) |
25 | + DHT integration for search | 29 | + DHT integration for search |
26 | + CS-DHT-functions (DHT-put of LOC) | 30 | + CS-DHT-functions (DHT-put of LOC) |
27 | + P2P-functions (DHT-get) | 31 | + P2P-functions (DHT-get) |
28 | - implement FS performance tests | ||
29 | + insert | ||
30 | + download | ||
31 | + search | ||
32 | + unindex | ||
33 | * GNUNET-GTK: [CG] | 32 | * GNUNET-GTK: [CG] |
34 | - implement publish dialog details: | 33 | - implement publish dialog details: |
35 | + open (import directory structure) | 34 | + open (import directory structure) |
@@ -56,9 +55,6 @@ | |||
56 | - right-clicking on NS list in search dialog should open menu that allows | 55 | - right-clicking on NS list in search dialog should open menu that allows |
57 | + viewing full meta data | 56 | + viewing full meta data |
58 | + deletion of namespace info | 57 | + deletion of namespace info |
59 | - extend peer dialog with green-yellow-red connectivity status lights | ||
60 | - extend peer dialog with country flags and names | ||
61 | - implement statistics tabs | ||
62 | - do meaningful update to status line (starting up, peer running, #connections, shutdown, ...) | 58 | - do meaningful update to status line (starting up, peer running, #connections, shutdown, ...) |
63 | - implement unindex operation (use dialog with all indexed files for selection) | 59 | - implement unindex operation (use dialog with all indexed files for selection) |
64 | - implement download by URI dialog; figure out where to display those downloads! | 60 | - implement download by URI dialog; figure out where to display those downloads! |
@@ -74,10 +70,10 @@ | |||
74 | 70 | ||
75 | 71 | ||
76 | 0.9.0pre3: | 72 | 0.9.0pre3: |
73 | * Determine RC bugs and fix those! | ||
77 | * TRACEKIT: [MW] | 74 | * TRACEKIT: [MW] |
78 | - good to have for DV/DHT evaluation! | 75 | - good to have for DV/DHT evaluation! |
79 | * Determine RC bugs and fix those! | 76 | * DATASTORE: [NN] |
80 | * DATASTORE: | ||
81 | - GNUNET_DATASTORE_cancel method not tested | 77 | - GNUNET_DATASTORE_cancel method not tested |
82 | * TESTING: [Nate] | 78 | * TESTING: [Nate] |
83 | - test basic peer re-configure | 79 | - test basic peer re-configure |
@@ -97,14 +93,29 @@ | |||
97 | - reconstruct IBLOCKS from DBLOCKS if possible (during download; see FIXME in fs_download) | 93 | - reconstruct IBLOCKS from DBLOCKS if possible (during download; see FIXME in fs_download) |
98 | - add support for pushing "already seen" search results to FS service for bloomfilter (can wait) | 94 | - add support for pushing "already seen" search results to FS service for bloomfilter (can wait) |
99 | - use different 'priority' for probe downloads vs. normal downloads | 95 | - use different 'priority' for probe downloads vs. normal downloads |
96 | - implement FS performance tests | ||
97 | + insert | ||
98 | + download | ||
99 | + search | ||
100 | + unindex | ||
100 | * ARM: [CG/Safey] | 101 | * ARM: [CG/Safey] |
101 | - better tracking of which config changes actually need to cause process restarts by ARM. | 102 | - better tracking of which config changes actually need to cause process restarts by ARM. |
102 | - handle gnunet-arm -k in combination with auto-start magic (what is the right thing here?) | 103 | - handle gnunet-arm -k in combination with auto-start magic (what is the right thing here?) |
103 | - discover dependencies between services | 104 | - discover dependencies between services |
104 | * STATISTICS: | 105 | * STATISTICS: [NN] |
105 | - test notification-based statistics API | 106 | - test notification-based statistics API |
107 | - implement statistics GUI | ||
108 | * PEERINFO: [NN] | ||
109 | - move peerinfo to new GUI? | ||
110 | - extend peer dialog with green-yellow-red connectivity status lights | ||
111 | - extend peer dialog with country flags and names | ||
106 | * SETUP: | 112 | * SETUP: |
107 | - design & implement new setup tool | 113 | - design & implement new setup tool |
114 | * GNUNET-GTK: | ||
115 | - add tool bar | ||
116 | * MONKEY: [Safey] | ||
117 | - '-m EMAIL' option for alternative e-mail TO | ||
118 | - '-f FILENAME' option to write report to file instead of e-mail (for testing!) | ||
108 | 119 | ||
109 | 0.9.0: | 120 | 0.9.0: |
110 | * new webpage: | 121 | * new webpage: |
@@ -145,13 +156,13 @@ | |||
145 | (Note: build library always, build service when libxml2/etc. are available) | 156 | (Note: build library always, build service when libxml2/etc. are available) |
146 | * FS: [CG] | 157 | * FS: [CG] |
147 | - Remove KBlocks in gnunet-unindex (see discussion with Kenneth Almquist on gnunet-devs in 9/2009) | 158 | - Remove KBlocks in gnunet-unindex (see discussion with Kenneth Almquist on gnunet-devs in 9/2009) |
148 | * PEERINFO: [CG] | 159 | * PEERINFO: [NN] |
149 | - expire 'ancient' HELLOs (those without valid addresses AND that | 160 | - expire 'ancient' HELLOs (those without valid addresses AND that |
150 | we have not 'used' (for their public keys) in a while; need a way | 161 | we have not 'used' (for their public keys) in a while; need a way |
151 | to track actual 'use') | 162 | to track actual 'use') |
152 | - make sue we also trigger notifications whenever HELLOs expire | 163 | - make sue we also trigger notifications whenever HELLOs expire |
153 | * VPN | 164 | * VPN |
154 | * UTIL: | 165 | * UTIL: [CG] |
155 | - allow limiting UNIX socket access by UID/GID | 166 | - allow limiting UNIX socket access by UID/GID |
156 | 167 | ||
157 | 168 | ||
diff --git a/contrib/report.sh b/contrib/report.sh index 521226c94..aab0c2082 100755 --- a/contrib/report.sh +++ b/contrib/report.sh | |||
@@ -7,8 +7,6 @@ else | |||
7 | WHICH=type | 7 | WHICH=type |
8 | fi | 8 | fi |
9 | 9 | ||
10 | echo "On some systems, you may need to change /bin/sh to point to bash" | ||
11 | echo | ||
12 | echo "Please submit the following information with your bug report: " | 10 | echo "Please submit the following information with your bug report: " |
13 | echo "--------------------------------------------------------------" | 11 | echo "--------------------------------------------------------------" |
14 | OS=`uname -s 2>/dev/null` | 12 | OS=`uname -s 2>/dev/null` |
@@ -86,9 +84,17 @@ fi | |||
86 | TEST=`$WHICH gnunetd 2>/dev/null` | 84 | TEST=`$WHICH gnunetd 2>/dev/null` |
87 | if test -n "$TEST"; then | 85 | if test -n "$TEST"; then |
88 | gnunetd -v | sed -e "s/v//" 2>/dev/null |\ | 86 | gnunetd -v | sed -e "s/v//" 2>/dev/null |\ |
89 | awk '{print "GNUnet : "$2}' | 87 | awk '{print "GNUnet 0.8 : "$2 (may conflict!)}' |
90 | else | 88 | else |
91 | echo "GNUnet : Not Found" | 89 | echo "GNUnet 0.8 : Not Found (good)" |
90 | fi | ||
91 | |||
92 | TEST=`$WHICH gnunet-arm 2>/dev/null` | ||
93 | if test -n "$TEST"; then | ||
94 | gnunet-arm -v | sed -e "s/v//" 2>/dev/null |\ | ||
95 | awk '{print "GNUnet 0.9 : "$2}' | ||
96 | else | ||
97 | echo "GNUnet 0.9 : Not Found" | ||
92 | fi | 98 | fi |
93 | 99 | ||
94 | TEST=`$WHICH libgcrypt-config 2> /dev/null` | 100 | TEST=`$WHICH libgcrypt-config 2> /dev/null` |
@@ -169,13 +175,6 @@ else | |||
169 | fi | 175 | fi |
170 | 176 | ||
171 | 177 | ||
172 | TEST=`grep "Id:" /usr/include/adns.h 2> /dev/null` | ||
173 | if test -n "$TEST"; then | ||
174 | echo "$TEST" | awk '{print "GNU adns : "$4}' | ||
175 | else | ||
176 | echo "GNU adns : Not found" | ||
177 | fi | ||
178 | |||
179 | TEST=`which qmake 2> /dev/null` | 178 | TEST=`which qmake 2> /dev/null` |
180 | if test -x "$TEST"; then | 179 | if test -x "$TEST"; then |
181 | qmake --version | tail -n 1 | awk '{print "Qt : "$4}' | 180 | qmake --version | tail -n 1 | awk '{print "Qt : "$4}' |
diff --git a/mkinstalldirs b/mkinstalldirs index ef7e16fda..4191a45db 100755 --- a/mkinstalldirs +++ b/mkinstalldirs | |||
@@ -1,7 +1,7 @@ | |||
1 | #! /bin/sh | 1 | #! /bin/sh |
2 | # mkinstalldirs --- make directory hierarchy | 2 | # mkinstalldirs --- make directory hierarchy |
3 | 3 | ||
4 | scriptversion=2006-05-11.19 | 4 | scriptversion=2009-04-28.21; # UTC |
5 | 5 | ||
6 | # Original author: Noah Friedman <friedman@prep.ai.mit.edu> | 6 | # Original author: Noah Friedman <friedman@prep.ai.mit.edu> |
7 | # Created: 1993-05-16 | 7 | # Created: 1993-05-16 |
@@ -157,5 +157,6 @@ exit $errstatus | |||
157 | # eval: (add-hook 'write-file-hooks 'time-stamp) | 157 | # eval: (add-hook 'write-file-hooks 'time-stamp) |
158 | # time-stamp-start: "scriptversion=" | 158 | # time-stamp-start: "scriptversion=" |
159 | # time-stamp-format: "%:y-%02m-%02d.%02H" | 159 | # time-stamp-format: "%:y-%02m-%02d.%02H" |
160 | # time-stamp-end: "$" | 160 | # time-stamp-time-zone: "UTC" |
161 | # time-stamp-end: "; # UTC" | ||
161 | # End: | 162 | # End: |