123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529 |
- -*- indented-text -*-
- FEATURES ------------------------------------------------------------
- Use chroot only if supported
- Allow supplementary groups in rsyncd.conf 2002/04/09
- Handling IPv6 on old machines
- Other IPv6 stuff
- Add ACL support 2001/12/02
- proxy authentication 2002/01/23
- SOCKS 2002/01/23
- FAT support
- --diff david.e.sewell 2002/03/15
- Add daemon --no-fork option
- Create more granular verbosity 2003/05/15
- DOCUMENTATION --------------------------------------------------------
- Keep list of open issues and todos on the web site
- Perhaps redo manual as SGML
- LOGGING --------------------------------------------------------------
- Memory accounting
- Improve error messages
- Better statistics Rasmus 2002/03/08
- Perhaps flush stdout like syslog
- Log child death on signal
- verbose output David Stein 2001/12/20
- internationalization
- DEVELOPMENT --------------------------------------------------------
- Handling duplicate names
- Use generic zlib 2002/02/25
- TDB 2002/03/12
- Splint 2002/03/12
- PERFORMANCE ----------------------------------------------------------
- Traverse just one directory at a time
- Allow skipping MD4 file_sum 2002/04/08
- Accelerate MD4
- TESTING --------------------------------------------------------------
- Torture test
- Cross-test versions 2001/08/22
- Test on kernel source
- Test large files
- Create mutator program for testing
- Create configure option to enable dangerous tests
- Create pipe program for testing
- Create test makefile target for some tests
- RELATED PROJECTS -----------------------------------------------------
- rsyncsh
- http://rsync.samba.org/rsync-and-debian/
- rsyncable gzip patch
- rsyncsplit as alternative to real integration with gzip?
- reverse rsync over HTTP Range
- FEATURES ------------------------------------------------------------
- Use chroot only if supported
- If the platform doesn't support it, then don't even try.
- If running as non-root, then don't fail, just give a warning.
- (There was a thread about this a while ago?)
- http://lists.samba.org/pipermail/rsync/2001-August/thread.html
- http://lists.samba.org/pipermail/rsync/2001-September/thread.html
- -- --
- Allow supplementary groups in rsyncd.conf 2002/04/09
- Perhaps allow supplementary groups to be specified in rsyncd.conf;
- then make the first one the primary gid and all the rest be
- supplementary gids.
- -- --
- Handling IPv6 on old machines
- The KAME IPv6 patch is nice in theory but has proved a bit of a
- nightmare in practice. The basic idea of their patch is that rsync
- is rewritten to use the new getaddrinfo()/getnameinfo() interface,
- rather than gethostbyname()/gethostbyaddr() as in rsync 2.4.6.
- Systems that don't have the new interface are handled by providing
- our own implementation in lib/, which is selectively linked in.
- The problem with this is that it is really hard to get right on
- platforms that have a half-working implementation, so redefining
- these functions clashes with system headers, and leaving them out
- breaks. This affects at least OSF/1, RedHat 5, and Cobalt, which
- are moderately improtant.
- Perhaps the simplest solution would be to have two different files
- implementing the same interface, and choose either the new or the
- old API. This is probably necessary for systems that e.g. have
- IPv6, but gethostbyaddr() can't handle it. The Linux manpage claims
- this is currently the case.
- In fact, our internal sockets interface (things like
- open_socket_out(), etc) is much narrower than the getaddrinfo()
- interface, and so probably simpler to get right. In addition, the
- old code is known to work well on old machines.
- We could drop the rather large lib/getaddrinfo files.
- -- --
- Other IPv6 stuff
-
- Implement suggestions from http://www.kame.net/newsletter/19980604/
- and ftp://ftp.iij.ad.jp/pub/RFC/rfc2553.txt
- If a host has multiple addresses, then listen try to connect to all
- in order until we get through. (getaddrinfo may return multiple
- addresses.) This is kind of implemented already.
- Possibly also when starting as a server we may need to listen on
- multiple passive addresses. This might be a bit harder, because we
- may need to select on all of them. Hm.
- -- --
- Add ACL support 2001/12/02
- Transfer ACLs. Need to think of a standard representation.
- Probably better not to even try to convert between NT and POSIX.
- Possibly can share some code with Samba.
- NOTE: there is a patch that implements this in the "patches" subdir.
- -- --
- proxy authentication 2002/01/23
- Allow RSYNC_PROXY to be http://user:pass@proxy.foo:3128/, and do
- HTTP Basic Proxy-Authentication.
- Multiple schemes are possible, up to and including the insanity that
- is NTLM, but Basic probably covers most cases.
- -- --
- SOCKS 2002/01/23
- Add --with-socks, and then perhaps a command-line option to put them
- on or off. This might be more reliable than LD_PRELOAD hacks.
- -- --
- FAT support
- rsync to a FAT partition on a Unix machine doesn't work very well at
- the moment. I think we get errors about invalid filenames and
- perhaps also trying to do atomic renames.
- I guess the code to do this is currently #ifdef'd on Windows;
- perhaps we ought to intelligently fall back to it on Unix too.
- -- --
- --diff david.e.sewell 2002/03/15
- Allow people to specify the diff command. (Might want to use wdiff,
- gnudiff, etc.)
- Just diff the temporary file with the destination file, and delete
- the tmp file rather than moving it into place.
- Interaction with --partial.
- Security interactions with daemon mode?
- -- --
- Add daemon --no-fork option
- Very useful for debugging. Also good when running under a
- daemon-monitoring process that tries to restart the service when the
- parent exits.
- -- --
- Create more granular verbosity 2003/05/15
- Control output with the --report option.
- The option takes as a single argument (no whitespace) a
- comma delimited lists of keywords.
- This would separate debugging from "logging" as well as
- fine grained selection of statistical reporting and what
- actions are logged.
- http://lists.samba.org/archive/rsync/2003-May/006059.html
- -- --
- DOCUMENTATION --------------------------------------------------------
- Keep list of open issues and todos on the web site
- -- --
- Perhaps redo manual as SGML
- The man page is getting rather large, and there is more information
- that ought to be added.
- TexInfo source is probably a dying format.
- Linuxdoc looks like the most likely contender. I know DocBook is
- favoured by some people, but it's so bloody verbose, even with emacs
- support.
- -- --
- LOGGING --------------------------------------------------------------
- Memory accounting
- At exit, show how much memory was used for the file list, etc.
- Also we do a wierd exponential-growth allocation in flist.c. I'm
- not sure this makes sense with modern mallocs. At any rate it will
- make us allocate a huge amount of memory for large file lists.
- -- --
- Improve error messages
- If we hang or get SIGINT, then explain where we were up to. Perhaps
- have a static buffer that contains the current function name, or
- some kind of description of what we were trying to do. This is a
- little easier on people than needing to run strace/truss.
- "The dungeon collapses! You are killed." Rather than "unexpected
- eof" give a message that is more detailed if possible and also more
- helpful.
- If we get an error writing to a socket, then we should perhaps
- continue trying to read to see if an error message comes across
- explaining why the socket is closed. I'm not sure if this would
- work, but it would certainly make our messages more helpful.
- What happens if a directory is missing -x attributes. Do we lose
- our load? (Debian #28416) Probably fixed now, but a test case would
- be good.
- -- --
- Better statistics Rasmus 2002/03/08
- <Rasmus>
- hey, how about an rsync option that just gives you the
- summary without the list of files? And perhaps gives
- more information like the number of new files, number
- of changed, deleted, etc. ?
- <mbp>
- nice idea there is --stats but at the moment it's very
- tridge-oriented rather than user-friendly it would be
- nice to improve it that would also work well with
- --dryrun
- -- --
- Perhaps flush stdout like syslog
- Perhaps flush stdout after each filename, so that people trying to
- monitor progress in a log file can do so more easily. See
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108
- -- --
- Log child death on signal
- If a child of the rsync daemon dies with a signal, we should notice
- that when we reap it and log a message.
- -- --
- verbose output David Stein 2001/12/20
-
- At end of transfer, show how many files were or were not transferred
- correctly.
- -- --
- internationalization
- Change to using gettext(). Probably need to ship this for platforms
- that don't have it.
- Solicit translations.
- Does anyone care? Before we bother modifying the code, we ought to
- get the manual translated first, because that's possibly more useful
- and at any rate demonstrates desire.
- -- --
- DEVELOPMENT --------------------------------------------------------
- Handling duplicate names
- Some folks would like rsync to be deterministic in how it handles
- duplicate names that come from mering multiple source directories
- into a single destination directory; e.g. the last name wins. We
- could do this by switching our sort algorithm to one that will
- guarantee that the names won't be reordered. Alternately, we could
- assign an ever-increasing number to each item as we insert it into
- the list and then make sure that we leave the largest number when
- cleaning the file list (see clean_flist()). Another solution would
- be to add a hash table, and thus never put any duplicate names into
- the file list (and bump the protocol to handle this).
- -- --
- Use generic zlib 2002/02/25
- Perhaps don't use our own zlib.
- Advantages:
-
- - will automatically be up to date with bugfixes in zlib
- - can leave it out for small rsync on e.g. recovery disks
- - can use a shared library
- - avoids people breaking rsync by trying to do this themselves and
- messing up
- Should we ship zlib for systems that don't have it, or require
- people to install it separately?
- Apparently this will make us incompatible with versions of rsync
- that use the patched version of rsync. Probably the simplest way to
- do this is to just disable gzip (with a warning) when talking to old
- versions.
- -- --
- Splint 2002/03/12
- Build rsync with SPLINT to try to find security holes. Add
- annotations as necessary. Keep track of the number of warnings
- found initially, and see how many of them are real bugs, or real
- security bugs. Knowing the percentage of likely hits would be
- really interesting for other projects.
- -- --
- PERFORMANCE ----------------------------------------------------------
- Allow skipping MD4 file_sum 2002/04/08
- If we're doing a local transfer, or using -W, then perhaps don't
- send the file checksum. If we're doing a local transfer, then
- calculating MD4 checksums uses 90% of CPU and is unlikely to be
- useful.
- We should not allow it to be disabled separately from -W, though
- as it is the only thing that lets us know when the rsync algorithm
- got out of sync and messed the file up (i.e. if the basis file
- changed between checksum generation and reception).
- -- --
- Accelerate MD4
- Perhaps borrow an assembler MD4 from someone?
- Make sure we call MD4 with properly-sized blocks whenever possible
- to avoid copying into the residue region?
- -- --
- TESTING --------------------------------------------------------------
- Torture test
- Something that just keeps running rsync continuously over a data set
- likely to generate problems.
- -- --
- Cross-test versions 2001/08/22
- Part of the regression suite should be making sure that we
- don't break backwards compatibility: old clients vs new
- servers and so on. Ideally we would test both up and down
- from the current release to all old versions.
- Run current rsync versions against significant past releases.
- We might need to omit broken old versions, or versions in which
- particular functionality is broken
- It might be sufficient to test downloads from well-known public
- rsync servers running different versions of rsync. This will give
- some testing and also be the most common case for having different
- versions and not being able to upgrade.
- The new --protocol option may help in this.
- -- --
- Test on kernel source
- Download all versions of kernel; unpack, sync between them. Also
- sync between uncompressed tarballs. Compare directories after
- transfer.
- Use local mode; ssh; daemon; --whole-file and --no-whole-file.
- Use awk to pull out the 'speedup' number for each transfer. Make
- sure it is >= x.
- -- --
- Test large files
- Sparse and non-sparse
- -- --
- Create mutator program for testing
- Insert bytes, delete bytes, swap blocks, ...
- -- --
- Create configure option to enable dangerous tests
- -- --
- Create pipe program for testing
- Create pipe program that makes slow/jerky connections for
- testing Versions of read() and write() that corrupt the
- stream, or abruptly fail
- -- --
- Create test makefile target for some tests
- Separate makefile target to run rough tests -- or perhaps
- just run them every time?
- -- --
- RELATED PROJECTS -----------------------------------------------------
- rsyncsh
- Write a small emulation of interactive ftp as a Pythonn program
- that calls rsync. Commands such as "cd", "ls", "ls *.c" etc map
- fairly directly into rsync commands: it just needs to remember the
- current host, directory and so on. We can probably even do
- completion of remote filenames.
- -- --
- http://rsync.samba.org/rsync-and-debian/
- -- --
- rsyncable gzip patch
- Exhaustive, tortuous testing
- Cleanups?
- -- --
- rsyncsplit as alternative to real integration with gzip?
- -- --
- reverse rsync over HTTP Range
- Goswin Brederlow suggested this on Debian; I think tridge and I
- talked about it previous in relation to rproxy.
- Addendum: It looks like someone is working on a version of this:
- http://zsync.moria.org.uk/
- -- --
|