Implementable right now (but not necessarily important), with caveats (unavailable components that will limit what can be implemented right away), in order in which they will likely be done: * TESTING-TESTBED [Nate] * SETUP * DV [Nate] * TBENCH * TRACEKIT * FRAGMENTATION [Ji Lu] * HTTP transport * MySQL / Postgres plugins (datastore, datacache) * UPNP [Milan] * ARM [Safey] * FS [Christian] 0.9.0pre0: * HOSTLIST/PEERINFO/CORE/TRANSPORT/TOPOLOGY: - hostlist server learns about 2nd peer, but soon forgets! - peers do not seem to connect (at least not for long!) * TOPOLOGY: - needs more testing (especially F2F topology) - calls 'GNUNET_CORE_peer_request_connect' with 'my_identity' as the PID, despite having specific checks to prevent exactly that (!?) => assertion failure in gnunet-service-core:2255 (hostlist test) * CORE: - needs more testing * UTIL: - load: need way to determine network load (up/down) -- and quickly so! - trust: need *fast* way to check/update trust in peers (async peerinfo would not be right) - scheduler should change OS process priority based on task priority; should make better use of task priorities in general * TRANSPORT: - disconnect notifications from TCP not always as nice as we might want them to be (but how can we do this cleanly given that UDP is connectionless?) - TCP not used bi-directionally (especially important also for PONG!) Need a way for plugin to tell to service that it can *reliably* transmit PONGs. Need *good* way to ensure only one (plugin) session is active at any given point in time; need systematic way to periodically probe latency/ transport cost changes - hostlist testcase shows that (randomly) we jump to an address that seems to be a plugin function *after* the plugin has been unloaded (directly from scheduler); check that *all* plugin tasks are cancelled after plugin is unloaded! (need better testcases for that...) * STATISTICS: - synchronous/asynchronous API (& implementation) is not nice; => provide notification-based API - does not seem to work with timeouts (especially if service is not running) * DATACACHE: - add stats (# bytes available, # bytes used, # PUTs, # GETs, # GETs satisfied) * ARM: - need to get rid of synchronous API for service starts (cause all kinds of problems) [=> eliminate for need to tell ARM about service starts most of the time!] [Safey] * HELLO: - need function to test "equivalency" of HELLOs; use in topology! * FS: - gnunet-publish cannot be aborted using CTRL-C - gnunet-publish segfaults if file does not exist - on some systems, keyword search does not find locally published content (need testcase of command-line tools!) - 2-peer download is still too slow (why?) * Module features to implement: - advanced FS API parts + namespaces: fundamental namespace API + search: SBlocks, KSBlocks, probes, notify FS-service of known results + collection + location URIs (publish, search, download) + persistence support (publish, unindex, search, download) + indexing: index-failure-cleanup + download: management/bounding of parallel downloads (for recursive dl.) + datastore reservation (publishing) + gnunet-publish (URI args) + gnunet-download (directory) + gnunet-search (options, incl. namespace search) + gnunet-download (many options) + gnunet-directory (man page, options) + gnunet-pseudonym (all of it) + gnunet-service-fs (remove failing on-demand blocks, stats, hot-path routing, load-based routing, nitpicks) + datastore: do active migration support here? - implement adv. FS testcases + getopt API + insert: sblocks, loc uris + download: loc uris + search: sblocks, skblocks, loc uris + namespaces + collection - implement FS performance tests (needs TESTING) + insert + download + search + unindex - non-anonymous FS service (needs DHT) + basic DHT integration + CS-DHT-functions (DHT-put of LOC) + P2P-functions (DHT-get) - setup (RC-pre0) + default generation + need to settle basic design; do we want to keep guile? - testing (RC-pre0) + modify configuration to allow controlling connections for non-local starts + testbed creation with topology (needs working F2F topology) [Nate] + testbed with churn [Nate] + implement library for distributed testing [Nate] + implement testcases for distributed testing [Nate] + test basic peer re-configure [Nate] + test topology creation [Nate] + test churn generation [Nate] * WWW: - Get IPv6 hooked up - change DNS 0.9.0pre1: * Module features to implement: - tbench (RC-pre1) + good to have for DV evaluation! - DV (RC-pre1) + write DV API + implement DV service [Nate & CG] + implement DV library [Nate] + implement DV transport plugin [Nate & CG] + implement testcases [Nate] + implement performance tests [Nate] * GUIs to implement: - gtk (RC-pre1) + how to integrate scheduler with GTK event loop! 0.9.0pre2: * Module features to implement: - tracekit (RC-pre2) + good to have for DV/DHT evaluation! - DHT (RC-pre2) + implement DHT service (needs DV, DATACACHE) + implement DHT library + implement testcases + implement performance tests * GUIs to implement: - fuse (RC-pre2) * Plugins to implement: - UDP backend (RC-pre2) + Fragmentation library + actual plugin - HTTP backend (RC-pre2) 0.9.0pre3: * GUIs to implement: - qt (RC-pre3) + see discussions @ FISL about integration with event loop! * Determine RC bugs and fix those! 0.9.0: * Documentation - update man pages - update webpage documentation * new webpage: - expand bibliography - convert documentation pages to books - update books (especially for developers) - create good Drupal theme for GNUnet - make a NICE download page and figure out how to enable developers to publish TGZs nicely - port "contact" page - add content type for "todo" items? - DNS activation * Plugins to implement: - MySQL database backends + datacache + datastore - Postgres database backends + datacache + datastore - vpn * Determine RC bugs and fix those! 0.9.x: * Plugins to implement: - SMTP transport backend - HTTPS transport backend + improved HTTPS support in MHD + actual plugin * Remove KBlocks in gnunet-unindex (see discussion with Kenneth Almquist on gnunet-devs in 9/2009) * Allow checking of presence of search results and/or content via command-line tools (add options to gnunet-search / gnunet-download to limit search to local peer) * STATISTICS: - should use BIO instead of mmap * PEERINFO: - expire 'ancient' HELLOs (those without valid addresses AND that we have not 'used' (for their public keys) in a while; need a way to track actual 'use') - make sue we also trigger notifications whenever HELLOs expire