Volta Team Blog
December 11, 2007

After releasing the Volta preview on December 5th, the blogosphere has been thick with conspiracy theories about Volta. At times it felt as if we were watching another episode of the X-files or reading one of those gossip magazines. According to reverse psychology, the way to set this straight is by acknowledging that there is indeed a conspiracy behind Volta. However, as boring as it sounds, that just in not the case. We are just a small team of hackers that are trying to push the envelope. And most importantly, we assume you are not easily fooled by cheap psychological tricks. So instead, we will give you the straight answers to the top 5 most frequent questions about Volta in a quick series. Here is #1:

Secret #1: The GWT Conspiracy

One common characterization of the last week is that Volta is "Microsoft's GWT clone". As Volta architect Erik Meijer explained  on ZDNet last week, what might seem similar at first glance actually have big differences in their construction and implications. The focus of Volta is on extending the .NET platform to cover the Cloud, hence the essence of Volta is to enable multi-tier and asynchronous programming via declarative attribution and MSIL to MSIL rewriting. We can use the Volta toolkit for any source language as long as it compiles to MSIL, and for any target execution environment, as long as it accepts MSIL. This means that we can as easily tier-split a WinForms application as we can tier-split a Web application.

The fact that we also include experimental support for MSIL to JavaScript compilation is somewhat of an distraction from the key Volta message. The main reason that we are interested in JavaScript is not so much in compiling MSIL to JavaScript but in enabling importing JavaScript libraries into .NET. JavaScript libraries such as Virtual Earth or Search are generally useful far beyond just Web-based applications, and Volta makes it possible to import external JavaScript libraries into ordinary .NET programs. Just like tier-splitting and asynchronous methods, we use declarative custom attributes to remove all the noise from importing JavaScript libraries to .NET.  It might be interesting to observe that, technically, interop with JavaScript is just another example of tier-splitting. Instead of running an application across server and client, it runs across CLR and the JavaScript execution engines.