Jungle Monkey TODO ------------------ If you have any feature requests or want to help out, write jm-dev@junglemonkey.net. Please read this file first though. I am more interested in the low-level stuff than the GUI. If you're a GUI coder and are interested in helping out in the GUI code, please email me. Before next unstable (odd numbered) release ========================================== Before next stable (even numbered) release ========================================== - Improve GUI Improve error messages, tooltips Tabs should change color on change Insert files into files list in order Add option to convert /amd paths to /n paths (so as to trick the automounter). Or fix gmc so it doesn't follow symlinks like it does. Fix messed-up sensitivity in Network interface option menu Ask for confirmation before removing your own channel Ask for confirmation before quiting if you are offering files or have channels. Chat scroll bar shouldn't move if scrolled up and someone types something. I don't know how to fix this. - Improve GNOME support Improve gui_activate. There doesn't seem to be an easy way to launch a file via Gnome. - Improve JMLite Add more features: support chat, search, download Check for "ok" filenames when adding - Internal improvements Add garbage to BTP names to fix namespaces. Or, make BTP strict about the protocol name. Mirror based on SHA or look at MTP namespace issues Enforce channels-only policy internally (Problem is when not fully connected to channel and you send announcements.) [I don't remember what this means - DAH] Files should appear immediately. If jmchannels switch to proposed XML protocol, this may be moot. MTP should download from multiple mirrors if it can. This requires extra bookkeeping in MTP (most of the code is there) and changing the recv function to pass an offset (then recv implementations must support random write access). MTP should download files to temp files, then move. Or, move incomplete files to an incomplete directory? MTP get_file_rendezvous - Documentation Do another pass at docs Redo screenshots - Add end-to-end measurements for experiments - Fix known bugs in BUGS - Features lost with rewrite: Get directory (seemed too prone to user error) Auto-mirroring Create channel from directory (need GUI) SHA mirroring (?) Long term: (none of these are definite) ======================================= GUI === - Add a --geometry option. - Allow the user to add links from one channel to another. (Internally, this should be easy, as JM objects are ref counted.) - Add a popup menu on right-click DND. It should allow you to either "Add" or "Create channel and Add". - Add comprehensive channel creation dialog. Features: Create empty channels, channels from directories Set channels-only flag Set channel message-of-the-day (?) Set what other channels the channel is announced on (ie, add links) Set save flag - Make more configurable: Allow option to save everything in one directory Make sorting an option Don't follow static links on drop-and-drag? - Add more features to chat. Especially, a graphical interface. - Allow multiple windows? This was in 0.0.8. There are some static variables, so this will require a bit of clean up. There might be issues with libglade too. - Add drop-and-drag out? General ======= - Add 'short message' as a file type This would let me put up a message like "Welcome to David's Channel! Check out the latest version of Jungle Monkey". File/channel descriptions might be enough. - Add channel descriptions. This would be part of the comprehensive channel creation dialog. - Add a message board - Write a better man page I'm using help2man right now and it's ok - I'd like to include more information though. - Compose and record a Jungle Monkey theme song that will play when JM is started. It should have light, whimsical lyrics and catchy pop hooks. Documenation ============ - SGMLizing README, COPYING, and INSTALL Internal improvements ===================== - Improve SHA cache Make the SHA cache a binary file. It's too big now. Ideally, a daemon would compute the SHA's of all files, store this in one place, and a program could be run to get the (cached?) SHA of a given file. (This would need to be setuid so it could SHA all files). - Allow user to limit bandwidth (up and down) Jungle Monkey Protocol ====================== - Make remove announcements secure Currently, anyone can send a remove message for any file, even files they did not add. Our application does not allow the user to do this, but the code could be modified to allow it. Annoying people could abused this. However, there is a simple solution using crypo. Using a symmetric key function F and a random key K, encrypt some random data M to cyphertext C. The the user first announces a file, he chooses K and M, computes C, and sends the announcement with M and C. K is kept secret. If the user wants to remove the file, he sends a remove announcement with K. Other users (who saved M and C) compute F(M, K) and if the result is C, they know that the remove announcement is from the user who announced the file and they can remove the announcment. Otherwise, they know the remove was forged and do not remove the file. F can be Blowfish using K as the key, or a hash of K and M concatenated, or something else. M does not need to be random - it could be a SHA hash of the announcement. [See Fu's email revocation paper, section 5, in OSDI 2000] - Gzip index files. Smaller files good. - Use SDP (RFC 2327) Searching ========= - Clean up jmmsp_reply_matches. This determines if a file matches a keyword. Ideas: * Have spaces act as implicit and's * Use regex's (GLib 1.4 will have a regular expression support, I think)