Have data and metadata checksums to help sync speed and consistency, save data transfer bandwidth (deduplication)
Each file should have a checksum. It should even be exposed for the user to be able to assess whether the file changed. I won't get into whether you should implement MD5, SHA1, SHA256 or whatever, as long as there is one.
Actually there should be two checksums:
data checksum: the file contents are checksummed and result in a checksum which is part of the file's metadata.
metadata checksum: stuff like filename, creation date, last change date, data checksum, is all checksummed into this other checksum. stuff like full directory path stays out since it extrapolates beyon the file specific structure and would make the checksum less useful.
A folder's 'data' to be checksummed would be a list of the data and metadata of every file and folder inside it. But this list is only in the immediate level, not recursive.
With those two values, OneDrive would be able to check simple numeric values for changes and would know whether it needs to sync the full file data or just the metadata.
It would also be able to find out whether there are duplicated files with the same data, and forfeit resyncing that data, since the same information is already at the client side.
This matters when you reinstall Windows but don't wipe your data (eg "Reset this PC" in Settings). I did that a few days ago and when OneDrive booted up it did notice that my OneDrive folder already had stuff in it and offered to "merge" with my cloud folder. "Cool it's not going to have to download everything again!" I naively thought to myself. 2 days later OneDrive's still cooking along at 6MB/sec disk usage in Task Mgr...
Eulises Melo commented
waaoooo!!! gdrive needs this implementation too at least onedrive checks for duplicate file names. The checksum feature is nice but could be easily implemented at the local copy instead of both ways just like back in the days with the backup flag when a file changed. Metadata change is another story. Both features could be implemented independently on each platform.... Localy and in ONEDRIVE. Then checksum exchange at sync negotiation; In my opinion local copy has preference so I will only implement the local side... Let the guru brainstorm on that.