On Fri, Mar 3, 2017 at 5:12 PM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > > This document is still in flux but I thought it best to send it out > early to start getting feedback. This actually looks very reasonable if you can implement it cleanly enough. In many ways the "convert entirely to a new 256-bit hash" is the cleanest model, and interoperability was at least my personal concern. Maybe your model solves it (devil in the details), in which case I really like it. I do think that if you end up essentially converting the objects without really having any true backwards compatibility at the object layer (just the translation code), you should seriously look at doing some other changes at the same time. Like not using zlib compression, it really is very slow. Btw, I do think the particular choice of hash should still be on the table. sha-256 may be the obvious first choice, but there are definitely a few reasons to consider alternatives, especially if it's a complete switch-over like this. One is large-file behavior - a parallel (or tree) mode could improve on that noticeably. BLAKE2 does have special support for that, for example. And SHA-256 does have known attacks compared to SHA-3-256 or BLAKE2 - whether that is due to age or due to more effort, I can't really judge. But if we're switching away from SHA1 due to known attacks, it does feel like we should be careful. Linus