
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 will not retrieve deleted files when 'nodelete' is used.

Known Standards Compliance Problems:

- RFC959: handle telnet control characters?
- RFC1945: better persistent connection handling for HTTP/1.0 servers
- RFC2518: parse DAV:status
- RFC2616: cope with long header lines.
- RFC2617: possibly realm, domain issues. auth-int untested.

Vague roadmap:

0.8: Stable release after bug-ridden 0.7.
0.9: [Currently under development]
 - Abstract out file state representation. 
 - Dynamically update files list. Extensible info file format.
 - Add 'default' rcfile option.
 - 'Safe' option for sites.
0.10: Solidity and stability - OOM, error reporting
0.11: Protocols - HTTP/1.1 audit, FTP fetch mode testing.

Big Features:

- Get rid of namespace violations: *_t, str{strip,split}
- 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) 
- Store access permissions for local/remote, and mirror them properly.
  Support access permissions for WebDAV: custom live props, or ACL extns.
- Symlink 'maintain' mode for FTP: can you create symlinks over FTP???
- Rewrite to make _update + _synch etc dynamically update the files list.
- Determine and remove or document files list order dependancies.
- 'safety' option, which stores the REAL remote file mod time
  in the storage file, checks it before and retrieves it after doing
  a file update... MDTM both for FTP, If-Unmodified-Since + HEAD for
  WebDAV. A half-way house between no safety and the complete safety 
  offered by file locking etc.
- Change info file format to be extensible without breaking backwards
  compat. Probable grammar:
   <info file> := NULL | <single file info> <info file>
   <single file info> := <filename> EOL <fields> EOL
   <fields> := NULL | <field> TAB <field>
   <field> := <field type> <field contents>
   <field type> := 'A'...'Z' | 'a...z'
   <field contents> := <anything-but-TAB-or-EOL>
  Maybe use URI %<hex><hex>-type encoding for filenames...
- Write complete documentation using GNU texinfo, for a printed manual
  and info pages.
- IPv6 support.
- Abstract out file state representation, make configurable.
  Allow specifying state by:
  a) Checksum (i.e. MD5) only <- good for spotting moved files, slow
  b) Modtime, size <- default, fast
  c) ...?
  Needed e.g. for people using RCS, where modtime will change on ci but
  file contents don't.

Must-have-for-1.0 features:

- Full RFC2068, 2518 compliance audit.

Probably-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. 
- Intelligent file movement detector, to spot whole moved directories, also
  renamed files (size/date match only, fuzzy match on name change? i.e.
  foo.html -> foo2.html).
- Make the protocol drivers and sites code thread-safe.

Little features:

- 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)
- Rewrite to use seperate lists for local + remote files?
- Nicer rcfile format - lex'n'yacc.
- Optionally display FTP goodbye message for e.g. quota levels.
- Allow default options to be specified in rcfile - nodelete, checkmoved,
  exclude, ascii, ftp *, http *.

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.
