Friday, May 27, 2011

Google Chrome: infinite versions and updates

Another fascinating story from Jeff Atwood,
(a man who created Stack Overflow, with a help from his friends...)
Coding Horror: The Infinite Version

Chrome's version number has been changing so rapidly lately that every time someone opens a Chrome bug on a Stack Exchange site, I have to check my version against theirs just to make sure we're still talking about the same software.
And once -- I swear I am not making this up -- the version incremented while I was checking the version.

Chrome is so fluid that it has transcended software versioning altogether.
Chrome Updates
Rather then push put a whole new 10MB update [for each version], we send out a diff that takes the previous version of Google Chrome and generates the new version. We tried several binary diff algorithms and have been using bsdiff up until now.
We are big fans of bsdiff - it is small and worked better than anything else we tried.

But bsdiff was still producing diffs that were bigger than we felt were necessary.
So we wrote a new diff algorithm that knows more about the kind of data we are pushing
- large files containing compiled executables.
Here are the sizes for the recent 190.1 -> 190.4 update on the developer channel:

Full update: 10 megabytes
bsdiff update: 704 kilobytes
Courgette update: 78 kilobytes