Why doesn’t Google use Courgette for Android updates

diff()google

Google has an advanced diff tool specifically designed for compiled binaries called Courgette.

Is there any reason why they wouldn't use this in Android and the Google Play Store to download updates? In my basic understanding of Java, it seems like it shouldn't be any more difficult (perhaps even easier?) to create 'diffs' like this because of Java's "bytecode" nature. Am I wrong? Are there any security reasons?

Note: I know that unless someone from Google responds, we won't know for sure. But I'm asking for any obvious reasons – I'm an Android developer and sometimes get notes from people complaining about frequent updates, so it is somewhat relevant to me. 🙂

Best Answer

Simplicity.

Incremental updates have the same problems as incremental backups; you must apply all of the increments in order from the last complete installation. It becomes impractical to do this forever; eventually everyone will have to get a complete update. Otherwise, you wind up selling a program that requires n incremental updates to get it current (where n is some arbitrarily large number, say, more than five).

From the store's point of view, it's easier just to transport the entire updated installation to the device than it is to track incremental revisions.

Remember, there are folks at the stores that vet these applications (especially at Apple); they must also apply all of the incremental updates before they can validate, and that's a pain in the ass. One installation, one thing to evaluate and keep track of.