                                                            -*- text -*-
Originators and Contributors up to 0.9.5
---------------------------------------

Andrew Tridgell and Paulus Mackerras started this whole mess.  Luke
Leighton was a tremendous help in sorting out the combined
encoding/signature algorithm.

Thanks to Linuxcare, Inc, for their support of this project.

Neale Banks <neale@lowendale.com.au>: the first known user outside of
OzLabs.

Paul `Rusty' Russell <rusty@rustcorp.com>
Andrew Tridgell <tridge@samba.org>
Paulus Mackerras
Peter Barker <pbarker@samba.org>
Neale Banks <neale@lowendale.com.au>
Luke Kenneth Casson Leighton
Tim Potter
Hugh Blemings
David Gibson


Contributors by release
-----------------------

The following is a list of contributors for each release. It is
possible we have missed some contributors. If you know of anyone who
has been omitted and deserves to be included, please send the details
so they can be added.

For later releases, contributors are listed in NEWS.

Contributors for 0.9.6

 * Wayne Davison <wayned@users.sourceforge.net>
  - librsync sf project admin
  - sf project creation, import cvs etc
  - many cvs commits of submitted patches
  - rsync.h -> librsync.h rename
  - librsync-conf.h addition and config.h issue resolution

 * Martin Pool <mbp@users.sourceforge.net>
  - sf project admin
  - sf project developers setup

 * Donovan Baarda <abo@minkirri.apana.org.au>
  - librsync sf project admin
  - sf project tracker and lists setup
  - MSVC6 and cygwin compiling patch and updates
  - mdfour optimisations and cleanups patch
  - autconf/autmake cleanups
  - large file debugging and fixes
  - build and release

 * Ben Escoto <bescoto@users.sourceforge.net>
  - librsync sf project admin

 * Ben Elliston <bje@air.net.au>
  - many cvs commits before migrating to sf

 * Robert Weber <chipsforbrains@users.sourceforge.net>
  - bigendian and >512M mdfour patch

 * Skip Montanaro <montanaro@users.sourceforge.net>
  - librsync on MacOSX patch

 * Diego Liziero <diegoliz@users.sourceforge.net>
  - memory leak patches
  - again rdiff cosmetic patch

 * Berkan Eskikaya <berkan@users.sourceforge.net>
  - Control files for librsync debian packages patch

 * Mark Moraes <moraes@sbcglobal.net>
  - cygwin testsuite fixes email patch

 * Robert Collins <robert.collins@itdomain.com.au>
  - autoconf/automake cleanups email (old patch)

 * Paul Green <lists@webleicester.co.uk>
  - large file testing and debugging


Contributors for 0.9.7

 * Donovan Baarda <abo@minkirri.apana.org.au>
   - librsync sf project admin
   - delta refactor patch
   - bug resolution

 * Martin Pool <mbp@users.sourceforge.net>
   - sf project admin
   - documentation updates.
   - bug fixes

 * John Goerzen <jgoerzen@complete.org>
   - Debian package maintainence

 * Dave Coombs <dcoombs@nit.ca>
   - C++ wrapper patch

 * Eran Tromer <tromer@users.sourceforge.net>
   - [#855477] buf.c incorrect header order, and fix.

   - [#1022764] Reported and diagnosed nasty corruption bug with large
     files.

 * Simon Law <sfllaw@debian.org>
   - [#879763] Fixed problems with unaligned access in mdfour.


Contributors for 0.9.8 (release pending)

 * Charles Duffy <cduffy@users.sourceforge.net>
   - [#1056544] Submitted patch with improved spec file for building RPMs.
   - [#1056548] Reported man page bug about using '-' for stdin/stdout.

 * Don Malcolm <donmalcolm@users.sourceforge.net>
   - [#1439412] Submitted patch for bug #1110812 error on large files.
