
$Id: TODO.txt,v 1.8 1999/05/01 00:20:54 cyp Exp $

This file contains a list of mini-projects. Submissions as well as 
volunteers :) are welcome. 

The list is maintained by Cyrus "cyp" Patel <cyp@fb14.uni-mainz.de>. 
To avoid having the wheel reinvented, please holler if you wish
to tackle a project. 

*Do not* add bug reports or platform specific to-do (which are synonymous 
with 'bug' or 'feature request') here. 

If you have the expertise but lack the time to handle a project, 
please post your willingness to assist to coders@lists.distributed.net.
Perhaps someone else has what you don't. :)

-- Clean up the cores.                                       Priority: HIGH
   a) The ideal prototype for any core, regardless of project,
      s32 (*core_unit)( RC5unitWork *, u32 *timeslice, void *membuff );
      1) it does its own pre- and post-incrementation, 
      2) timeslice to 'nbits' ('nodes') conversion, 
      3) store the effective timeslice back in *timeslice
      4) return a rescode == RESULT_[FOUND|NOTHING|WORKING] or -1 if error
      Also note that the call is to a function pointer that is selected
      in Problem::LoadState() based on contest number and cputype. 
   b) Clean up "ANSI" core(s) 
      a) get rid of the RC5CORE stuff from ./configure
      b) rename the cores from [rc5|des]_unit_func to 
         [rc5|des]_ansi_[x]_unit_func 
      c) fix the cores to use timeslice

-- Devise and write a better filebuffer scheme.       Priority: in-progress
   a) better "locking". The current method of writing 0x1 to tag
      a file as 'locked' is not ideal. Using a specific value to 
      identify the lock as the client's own would probably solve
      all locking problems.
   b) contain both in and completed blocks in a single file. Even 
      better would be a format that accomodates blocks from all 
      projects.
   c) The buffer format must support FIFO. The current FIFO scheme 
      uses a "find one more suitable than default" scheme. It works 
      well and has a low overhead. 
   d) The buffer format should allow variable record size or sufficient
      per record padding that we can add fields without having to 
      redesign the whole mess again soon.

-- Write a routine to import/export uuencoded buffers for/from users
   that can only update their buffers via mail. The functions to
   import binary buffer records already exists.           Priority: Medium
        
-- Add FTP as a supported buffer exchange protocol. The client could
   directly STOR buff-in.xx and requests to RETR rc5 would cause the
   keyserver to return a rc5 block from its ready queue.   Priority: Low
    
-- Write a small routine to obtain a list of the local host's UP af_inet 
   if's by using SNMP or ... Use ioctl() to do the same (for your port).
   Linux/OS/2/FreeBSD/OpenBSD are already implemented      Priority: Low
							   
-- Modify client to use an ini file format with more varied sections
   to classify the option categories better.          Priority: in-progress

-- Split network.cpp into netio primitives and high-level/wrapper handling
   functions. Something along the lines of whats used in the proxy would
   be nice, but without the bloat please.             Priority: in-progress

-- Convert all references to u64 structures (fake u64 that is) from {hi,lo} 
   to u32 hi; u32 lo; (discard structure).                 Priority: Low
   
