
Bugs:

- So far unreproducable synch mode bugs reported by David Massart
- Possible that the WebDAV 422 seen against Cyberteams is a sitecopy
  bug.
- Fetch mode for FTP rarely works
- Synch mode won't transfer in ASCII mode, nor maintain symlinks, nor
  correctly order file deletions.
- Filename conflicts are not handled by update or synch mode: case:
  Directory exists remote called "foo". Delete locally, replaced with 
  file called "foo". Bang.

sitecopy-ng completion:

- Merge changes from 0.7 branch:
    doc/
- Remove checking for remote modtime in fetch mode

Known Standards Compliance Problems:

- RFC959: handle telnet control characters?
- RFC1945: better persistent connection handling for HTTP/1.0 servers
- RFC2616: cope with arbitrarily long header lines.
- RFC2518: accept collection URI's in DAV:href without trailing slash,
           parse DAV:status
- RFC2617: possibly realm, domain issues. auth-int untested.

Big Features:

- It may be possible to support GNOME libxml... screem will want this to 
  avoid having to ship expat too.
- Filename conflict resolution for update mode, as per bug.
- Verify mode for 'safe mode' sites, also a --force-overwrite to force
  updates... maybe --prompt-overwrite too.
- Some kind of user-feedback for slow startup in checksumming mode?
  takes approx 1 sec to MD5 a 10mb file on a K5 166 -> okay for average-sized
  sites.
- "Check server" function, --check-server, probes for 100-expect capability,
  etc.
- Support for other better/faster checksumming algorithms: SHA1?
  (implemented under GPL in gnupg... could nick code).
- Abstract out expat handling a bit? cdata code is copy'n'paste between
  sitestore.c and httpdav.c
- Get rid of namespace violations: *_t
- Per-site lockfiles?
- Interactive prompting for server/proxy username/passwords?
- Display more meaningful errors for fetch mode
- Parse DAV:status cdata, and collect only 2xx-type resources,
  ignore 4xx resources, do something meaningful with 3xx-type resources:
  fetch DAV:reftarget property and read symlink target. Report 5xx as error?  
- Frontends using other GUI toolkits, e.g. Qt, fltk, wx-Windows, Windows 
  native, (n)curses.
- Read HTTP proxy from HTTP_PROXY/http_proxy environment variable.
- Support FTP proxying (how?)
- Cope with out-of-memory situations i.e. malloc()/realloc() returns NULL
- Internationalization and localization
- WebDAV: do compressed transfer-encodings (use zlib?).
  Better error messages. Pipelining would be nice, but hard.
  PROPFIND: Okay to use encoding= etc? (not atm, it breaks IIS5-beta) 
- Support access permissions for WebDAV: custom live props, or ACL extns.
- Symlink 'maintain' mode for FTP: can you create symlinks over FTP???
- Determine and remove or document files list order dependancies.
- IPv6 support.

Must-have-for-1.0 features:

- Cope with out-of-memory situations i.e. malloc()/realloc() returns NULL
- Full RFC2068, 2518 compliance audit.
- Write complete documentation using GNU texinfo, for a printed manual
  and info pages.

Not-till-after-1.0 features:

- Use an better data structure for the files list, indexed by filename,
  to speed up site_readfiles, which has time O(n*m) (n=#local files, m=
  #remote files) at the moment. Hash by MD5 - ideal for checksum sites?
  Separate hash by filename?
- Intelligent file movement detector, to spot whole moved directories
- Make the protocol drivers and sites code thread-safe.
- Abstract protocol drivers into a mc VFS-like 'open', 'read' etc.
  Abstract sites code so that "local" and "remote" can be handled by any 
  of {file, http, ftp}. Allows file->file sites, which screem wants.
- consequently, read ls-laR.txt files and be more like 'mirror'

Little features:

- Do default ports, netrc lookups for the proxy too
- SOCKS5 support.
- Make the WebDAV code more modular - abstract out XML/207 response
  handling somewhat.
- Synch mode: Only connect to the server when needed - i.e., moving/deleting
  local files -> no connection needed.
- console: Allow user to update just a single file? --only=...?
- Report corrupt info files back to the user.
- Check write return codes in site_writefiles, signal the error if
  the info file doesn't get written properly.
- Get WebDAV auth failures back to the user properly.
- Get warning (i.e. non-fatal) messages to the user. Get rid of all
  the perror() calls if possible -> esp. in socket.c
- Sort out error reporting between the various abstraction layers.
- Add quota management, specify a per-site quota and only do update
  if the result means the site will stay under quota.
  -> problem: a directory uses up k's, but how many?
- Check remote directory exists on initial connection in FTP (chdir/ls)
- Nicer rcfile format - lex'n'yacc.
- Optionally display FTP goodbye message for e.g. quota levels.

Things You Might Like to Do On A Rainy Day:

- Investigate any extra handling needed for servers which have case
  insensitive filenames
- Native Windows port (e.g. reimplement socket.c using the Winsock API)
- Convince the maintainer that it's more productive to spend time 
  implementing features than carefully crafting a mile-long TODO list.

Gnome Stuff:

- Integrating fetch-mode and resynch into the app.
- Rescan (mucho different to refresh) for changing local root dirs
  without having to restart or hack the rcfile.
- Panel applet for easily updating sites in a couple of clicks.
- Rewrite the site tree population code to be more efficient. Hopefully
  convince Joe to change the way sitecopy stores files to something other
  than a linked list. As soon as I figure out myself what would be better that
  is.
- Bring back optional 'slim' mode which will take up less desktop real estate.
- Popup menus for the site/file tree.
- Single file updates.
- View files/dirs using gnome mime types.

Long term GUI things:

- Html based reports - integration into FE apps, and possible auto uploading
  to the remote site. (useful as a "recent changes" page)
* Please send any suggestions you may have as to the format/design/type of
  reports that you might find useful.
