Add a short list of the critical things to do for 2.0 to be released.
[xiph/unicode.git] / icecast / TODO
blobb8c9bc30b00ac0d4c34b566a300097770405306c
1 2.0 CRITICAL - These are the things without which 2.0 cannot be released
2 ____________
4 - make install doesn't install everything. Needs to set up config file to point
5   at appropriate places, install web directory somewhere, put config file
6   somewhere. Should icecast automatically (i.e. without needing -c) look for
7   the config file in /etc/icecast.xml or something?
9 - libshout 2.0 and ices 2.0 releases, also an ices 0.x release that works with
10   this. Without source clients, icecast isn't much use...
12 BUGS
13 ----
14 - stats get off?  this needs testing more testing.
16 - some stuff (like 'genre') isn't making it into the stats dump
18 - make install - doesn't install configs?
20 - logging - bytes send and time listening may both be broken?
22 FEATURES
23 --------
25 - pull out vorbis comments.  and send to stats. This seems to be being
26   done, but it isn't working right.
28 - directory server GUID checks
29         directory server does GET /GUID-asldjfasldfjalsdkfjasldkfj HTTP/1.0
30         and either gets a 404 if it's wrong, or a 200 if it's correct.
32 - adding new stats type, event.  events don't modify the global stats tree,
33         ie, source /1234.ogg disconnected
35 - support W3C Extended Logging (http://www.w3.org/TR/WD-logfile.html)
36         toggle between this and Apache Combined Log Format in the config file.
37         default to apache style.
39 - allow using get_predata() stuff to send an "intro" to any newly-connected
40   user?
42 - stats to list currently connected clients: ip and hostname
44 - stream switching (drop clients to another stream on disconnect of source)
45   - a) fallbacks from named location to new mountpoint
46   - OR b) fallbacks for connected clients to new mountpoint (so newly-connecting
47        clients just get a 404 on the old path)
48   - OR c) combination - first one, plus generic alias ability?
50 - /admin/* for all admin functionality
51   - configuring fallbacks
52   - mp3 metadata injection
53   - remote shutdown?
55 - general registerable url-handlers in connection.c rather than hard-coded list
56   (already getting unmaintainable)
58 - httpp - split out query string for further processing
60 - option to use ipv6 (equiv to using <bind-address>::</bindaddress>, I think.
62 - abstract all admin functionality to a set of commands, and command handlers.
63   Make /admin/* just parse according to a set of rules, and dispatch generic
64   commands through that.
65   Use this for alternative admin interfaces (GUI? telnet interface?)
67 - listener authentication (per mountpoint?)
69 - all timer-based functionality (yp updates, slave/relay checks) should have a
70   single timer thread which dispatches events through the normal event
71   mechanism (to worker threads from the main pool). This will reduce the
72   extraneous thread count.
74 - atomic admin function to: set fallback from A->B, remove A, move mountpoint
75   B to A. Needs forced-source removal first.
77 - race condition between avl_tree_unlock(pending_tree) and 
78   thread_cond_wait(&fserv_cond) in fserv.c, it's a pain to fix but should be.
80 - do we need to use locks on the avl client_trees in source.c and fserv.c? 
82