+
+IMPORTANT ------------------------------------------------------------
+
+Cross-test versions
+
+ 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 the cross product of versions.
+
+ 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.
+
+use chroot
+
+ 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
+
+--files-from
+
+ Avoids traversal. Better option than a pile of --include statements
+ for people who want to generate the file list using a find(1)
+ command or a script.
+
+Performance
+
+ Traverse just one directory at a time. Tridge says it's possible.
+
+ Can possibly also be smarter about memory use while looking for hard
+ links by reducing the refcount as we find alternative names.
+
+IPv6
+
+ 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.
+
+ Define a syntax for IPv6 literal addresses. Since they include
+ colons, they tend to break most naming systems, including ours.
+ Based on the HTTP IPv6 syntax, I think we should use
+
+ rsync://[::1]/foo/bar
+ [::1]::bar
+
+ which should just take a small change to the parser code.
+
+Errors
+
+ 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.
+
+File attributes
+
+ Device major/minor numbers should be at least 32 bits each. See
+ http://lists.samba.org/pipermail/rsync/2001-November/005357.html
+
+ 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.
+
+Empty directories
+
+ With the current common --include '*/' --exclude '*' pattern, people
+ can end up with many empty directories. We might avoid this by
+ lazily creating such directories.
+
+zlib
+
+ Perhaps don't use our own zlib. Will we actually be incompatible,
+ or just be slightly less efficient?
+
+logging
+
+ 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
+
+PLATFORMS ------------------------------------------------------------
+
+Win32
+
+ Don't detach, because this messes up --srvany.
+
+ http://sources.redhat.com/ml/cygwin/2001-08/msg00234.html
+
+ According to "Effective TCP/IP Programming" (??) close() on a socket
+ has incorrect behaviour on Windows -- it sends a RST packet to the
+ other side, which gives a "connection reset by peer" error. On that
+ platform we should probably do shutdown() instead. However, on Unix
+ we are correct to call close(), because shutdown() discards
+ untransmitted data.
+
+BUILD FARM -----------------------------------------------------------
+
+Add machines
+
+ AMDAHL UTS (Dave Dykstra)
+
+ Cygwin (on different versions of Win32?)
+
+ HP-UX variants (via HP?)
+
+ SCO
+