Newsletters

Select newsletters below and click the button to sign up!

Boston News NY News
DC News Internet Daily
SiliconValley News
InternetNews Business Report




Become a Marketplace Partner



Partner With Us















Internetnews Bloggers

Recent Entries

Archives

July 2009
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Monthly Archives

Search The Blog

Netstat -vat by Sean Michael Kerner (bio)

A command line view of IT



Google Courgette. Faster, smaller updates for Chrome

googlechromologo.jpg
From the 'googleupdate.exe is your update master' files:

If you're a Google Chrome user (on Windows), than you've got googleupdate.exe running - providing silent continuous updates to Chrome as Google releases them (*update* - Google Update actually now works with the Windows Update scheduler - ThnX P Kasting for commenting!).

The only problem is sometimes an update can be a bit large, which is where the new Courgette system comes in. With Courgette, Google is going to pushing down a compressed 'diff' to users. That is instead of an entire new application the diff is the difference between old and new (the delta).
"It is an anathema to us to push out a whole new 10MB update to give you a ten line security fix," Stephen Adams, Google software engineer wrote in a blog post. "We want smaller updates because it narrows the window of vulnerability. If the update is a tenth of the size, we can push ten times as many per unit of bandwidth."
Adams added that means that users can be protected earlier and the smaller update will also work better for users on slower network connections.

It makes a whole lot of sense to me. The diff approach is one that isn't new, Adams mentions bsdiff in his post, but he also notes that Courgette produces diff files that are even smaller. As an example of the difference in file sizes, Adams said that for a recent Chrome dev-channel update the full update was 10.4 Megabytes (MB), the bsdiff update was 704.5 KB and Courgette update was only --- get this -- 78 KB. 

That is an astounding level of difference.

But how exactly is Google achieving this feat of software engineering compression?

The full details - as in the full source code - is something that I personally have not yet found online. (*UPDATE* - check out Courgette code here)There is a mildly technical discussion on how Courgette works though.
"Courgette uses a primitive disassembler to find the internal pointers," Google states. "The disassembler splits the program into three parts: a list of the internal pointer's target addresses, all the other bytes, and an 'instruction' sequence that determines how the plain bytes and the pointers need to be interleaved and adjusted to get back the original input."
If Courgette can be made available as a freely available open source project - I think it could have huge implications for software delivery overall. If Linux distributions use it for updates - say it got worked into PackageKit - we could end up with faster updates. On Windows, an app developer could figure out a way to take advantage as well.

Going a step further, Courgette could give Chrome OS a HUGE advantage. If Google mandates Courgette updates for all apps (and even the OS) the entire system could be updated faster than any competitive OS.

*UPDATE* Thanks to Peter Kasting for commenting below and correcting me on how GoogleUpdate currently works.

| Comments (1) | TrackBacks (0) | Share

0 TrackBacks

Listed below are links to blogs that reference this entry: Google Courgette. Faster, smaller updates for Chrome .

TrackBack URL for this entry: https://swarm.jupitermedia.com/mt-tb.cgi/8478

1 Comments

Peter Kasting said:

"If you're a Google Chrome user (on Windows), than you've got googleupdate.exe running"

GoogleUpdate.exe no longer runs constantly:
http://google-opensource.blogspot.com/2009/07/google-update-regularly-scheduled.html

"the full source code - is something that I personally have not yet found online"

Try looking in the Chromium source repository online, and you'll find this:
http://src.chromium.org/viewvc/chrome/trunk/src/courgette/

Leave a comment