A very general (and likely quite off) intended basic roadmap for versions (and work
that needs completion prior to hitting said version)...

That said and done, I need to re-order this to match reality, certain version
mile-stones I've almost finished prior to finishing the interceding milestone
work.

0.4			Oct/Nov 2003.
DONE	* option code in diffball, patcher, differ, and convert_delta
DONE	* function that is format aware, handles magic sig's.
DONE	* seperate my modifications of gdiff format into v5, and enable a
	  specific v4 spec.
DONE	* md5 support in cfile- basically flag the cfile at opening, add func
	  for finalizing/retrieving md5.  Refactor cfile (buffering system)
	  for compression support to be added.
DONE	* code cleanup.  EG, add extern global verbosity option for control of
	  printf statements, start adding better definitions throughout code
	  for compilation (eg via compile flags/options disabling certain
	  sections of code).
DONE	* code a solution for handling md5's in file format- basically
	  handle the goofy nature of some formats (bdelta's lack of a complete
	  set of reconstruction commands for instance).  Enable checking of
	  md5's if they're included in file (xdelta format).
DONE	* remove aborts from everything but {diff{er,ball},patcher,convert_delta}.c,
	  unless absolutely needed.
DONE	* check of returned values; DCB_add_(add|copy|overlay) are major offenders.
DONE	* relevant man pages
DONE	* have a basic (not necessarily cleanest/best) gzip compressor setup so
	  compressed xdelta can be handled.
DONE	* abstract dcbuffer to support different types of add/copies sets-
	  ex: bsdiff has technically two add commands, and a copy-
	  basically it's copy overlay, along w/ standard add.
	  Bit of a kludge, needs to be generalized a bit, since it only supports
	  2 add srcs currently.
DONE	* bsdiff support (hokay, so I got ambitious)
DONE	* multipass support
DONE	* verified hash.  Basically, scan the version file for chksum's
	  needed, then scan the reference file for said chksum's.  Doing
	  this allows for a hash entry to be verified, eg mark it such
	  that these two chksum's match.  Way of cutting down on bad
	  matches/worthless seeks.

0.50			Dec 2003
DONE	* write *GOOD* man pages (eye of the beholder?)
DONE	* DCBuffer should be a general struct, with different ways of
	  storing entries.  Full for patching/conversion, matches for
	  standard differencing (difference is it eliminates storing
	  add's in memory, saving memory), llmatches for
	  multipass/insert support.  llmatches is a linked list variant
	  of the matches struct.
DONE	* bsdiff support, possibly included into 0.4.
DONE	* optimizations of buffering system.  Do something about the
	  duplication of buffered data between cfile and differencing alg.
DONE	* Possibly a 'cfileExposeBuffer' type command, that returns a const
	  unsigned char * to the internal cfile buffer.
DONE	* refactor memalias for differing alg.  Basically adjustment of
	  returned values, although exposeBuffer (above) might solve this.
	  I don't like the buffer window into a buffer.  Pointless...
DONE	* have working compression support in cfile.  Not saying it be'll
	  great, just saying have it working.
DONE	* cfile RW support
DONE	* auto-identify patches unless explicitly told the type
DONE	* standardize/fix the hash_size, do it in terms of elements or actual
	  memory size?  thinking memory size, since MOD_HASH is 4 bytes each
	  element, while CMOD_HASH is 8 bytes...

0.60/0.6.2/0.65		Feb-Apr 2005
DONE	* full cfile bzip2 read support (including seeking)
DONE	* full cfile gzip read support (including seeking)
DONE	* compressor identification function (auto-detect compressed files,
	  essentially)
STARTED	* add a set of functions for pulling add len/offset pairs for formats
	  reasoning being, make it a default function so I can move optimizing
	  multiple adds (from diffball) into a single add command in the format
	  encoding.
DONE	* Apply multiple patches in one run
DONE	* sequentially read from a src, writing random- useful for compressed files
DONE	* general reduction of patcher's memory usage; free DCB.full.cl if using a set
	  of sorted lists fex.
DONE	* standardize a buffer abstraction for command_lists.
DONE	* use said standardized command_list
DONE	* bufferless reconstruct; it's not always needed (or wanted, from a memory standpoint)
	  to read in all commands, then process them.  so... bufferless reconstruct for
	  single patch transformations that aren't reordered.

0.70			Oct 2005
DONE * Usable lib, header installation, seperation of libcfile from libdiffball
DONE * memory aliasing for cfile, read and write
DONE * code cleanup, implementation of simple api (api.h)
DONE * cleanup of memory leaks in simple api (mainly error scenarios)
DONE * assuming good design/api, this won't be hard, but begin *initial*
	  creation of a library api.  Subject to change obviously by 1.00, but
	  have something fairly concrete ready to roll.
DONE * cleanup of cfile bugs forcing unneeded lseeks/page refreshs

1.0			June/July 2006
DONE * main functionality nailed down, outstanding bugs killed.


beyond 1.0
???	* possibly adjust formats (encoding/decoding) such that they are
	  multiple functions... eg, attempt to make it such that the needed
	  command space (CommandBuffer) can be optimized down, so that it
	  doesn't require the entire set of delta commands to be stored in mem.
	* suffix based differencing alg.
	* bsdiff write support (using suffix alg) (iffy)
	* add a correcting one pass differencing alg.
	  This would be good for backup solutions, differencing in one pass.
	  If you want this, contact me and I'll be a bit more expedient about it,
	  otherwise I'll write it when I find a need/time.
	* possibly add flag to correcting algs, to flag correcting support
	  on/off (correcting basically allows for correction (duh))- although
	  correcting does slow things down (maybe not by much), possibly give
	  them (user/dev) the option?
STARTED	* optimize existing formats, differencing algs, buffering system.
STARTED	* reiterating, *OPTIMIZE BUFFERING SYSTEM*.
	* locked down library api (obviously).
	* xdelta write support- could do it as of pre-0.4, although md5 support
	  is needed, and the lovely serialsource memory allocation problem-
	  basically the unknown 8 bytes sandwiched between add data and control
	  block.  Contact bdharring at wisc.edu if anyone has ideas/better
	  solution for the serialsource stored memory requirement.
	  No clue why the hell that is stored there let alone if that's what
	  it is...
	* check into, and support if viable, past xdelta formats.
	  likely the serialsource issue listed above is going to be
	  problematic- I'm betting that had a hand in the breaking of backwards
	  compatability in xdelta...
	* bad-chksum cache?
	* add patch info functions, for polling info on existant patches.
	  possibly a new binary, although might be overkill.
STARTED	* gnudiff support working, for both recursive and  non-recursive patch.



Tentative versioning and time release obviously...
Dang crystal ball...

Thing I've found in writing this out, is that there really isn't a helluva lot left libdiffball wise
that is bugging me to fix.  I *do* want to break cfile out on it's own, and redesign it, but that's not a high
priority, nor does it bring any real gains to the delta compression users; it just provides a way to plugin
different transformations (useful, but not a deal breaker).

So... Suggestions welcome.
