Greetings all, I'm interesting in implementing a wire-compatible rsync library for use in an application I am developing. The reason I want wire-compatability is so that I can interface with normal `rsync --server` over whatever communications tunnel on various platforms. The reason I want to write a library instead of executing rsync as a sub-process is that (1) I want to support platforms that rsync does not support, or supports poorly (2) I want to be able to statically link said library to ease distribution on some such systems (3) I think building this library will be fun and potentially useful to others. I have found librsync, which implements the algorithm but not the wire protocol, and I intend to use. I understand that the rsync protocol is not stable from version-to-version, but that version negotiation is performed on each session to maintain backwards-compatability. Thus, I would implement a recent version of the protocol first, and thus only work with recent servers, and would likely not extend backwards but only forwards as new versions of the protocol were implemented (though, as long as I do not need new features newer servers should still be able to talk to me, yes?) So, my question is: is there any sort of description of the protocol as it exists today outside of the source code for rsync itself? Even notes that rsync developers use for reference when doing development on the relevant parts of the source would be useful to me in this endeavour. Thank you for your time, -- Stephen Paul Weber, @singpolyma See <http://singpolyma.net> for how I prefer to be contacted edition right joseph