Google Chrome is an interesting story for all kinds of reasons. I am particularly interested in the V8 Javascript engine. There seems to be no shortage these days of different groups writing different VMs. Google in fact has a couple by my count – Dalvik the VM inside the Android platform, V8 the one powering Chrome and presumably also bundled w/ Android and even whatever VM powers AppEngine. Both V8 and Dalvik have their own particularities. Dalvik is not a Java VM – it won’t run Java class files directly. It is register based, not stack based and has a different file format DEX but is closely tied to the Java language. V8 looks like it is entirely geared towards executing Javascript – with hidden class discovery, and handling the super dynamic nature of JS. Taking all this in I see one missed opportunity and a quiet validation of the Google structure.
The missed opportunity in Chrome and V8 is to deliver a VM that will support multiple languages. I would like to see a ecosystem where browser makers embedded a VM and provide a standard set of op codes and foreign function interfaces – allowing it to work with multiple languages. Why tie the whole developer experience in the browser to Javascript? Sure there would be a Javascript compiler for the VM but hopefully there would be a Ruby, Python, Lisp or unknown future language compiler as well. In someways, I see MSFT attempting this with SilverLight and it could be argued as well that Java and it’s re-newed support for dynamic languages wants this as well. But without a VM that is open, freely available, unburdened by historical and licensing baggage, I don’t think those efforts will ever really succeed. Google has a real opportunity to dramatically improve and diversify web development by delivering a VM standard and allowing for multiple languages in the browser. Come on guys!
The validation of the Google organization is subtle but think about why would they allow separate teams to implement different VMs all the while solving what appears to be very similar problems. Why write two JIT back ends, two GC implementations, etc? It is insane. It makes no sense. Also where is the CTO or Chief Architect or hell even the annoying marketing guy saying we are missing a branding opportunity (Dalvik Mobile, Dalvik Enterprise, Dalvik Browser)? Clearly, this is not a normal company. They have a culture and management structure that are very different from what we have traditionally seen. Google has set a vision for the company and then enables it’s employees to go out and execute. It sounds so simple and obvious but on the other hand it sounds almost unreal – what company has enabled you by giving you - vast computing resources, 20% time, the ability and encouragement to switch teams, opportunity generate your own ideas and an internal marketplace for them, etc. In some happy world view of Google – they enable their employees and give them real choice in much the same way they aim to enable and give choice to their users. Eventually, the market place will decide if Android or Chrome are valued products but early on they are clearly significant technical achievements.
All this said, I am not always a fan of Google and I am sure some of the above is just myth. I think their short comings are numerous but they provide an interesting foil to most other companies operating today. Seriously, where are the plague of Harvard Business School books extolling the “Google Way” – we have seen a few but nowhere near the number one would expect. Perhaps it is just to hard to capture in a book or that the real story actually eviscerates the crowd of people those books normally target.


