Stumbled across Volta by accident today. Volta is a prototype developer tool developed by Microsoft Labs.
What I got from the FAQ was that You to develop an entire application from the perspective of the client, as a single Tier, using out of the box tools like Visual Studio 2008. You then add declarations to your code which Volta will use to refractor your code (as a 2nd phase of compilation) into multiple tiers, targeting java script enabled browsers (IE and Fire Fox are supported), and traditional Windows Forms. Volta actually takes the default compiled MSIL, scans for the Volta declarations you added, and generates new MSIL which will run on your various Tiers.
I think it sounds like pretty exciting stuff (or I wouldn’t have blogged it). However, I have a few questions/comments/thoughts.
- Volta is currently a CTP, and is referred to at least once as experimental. I would not want to develop any production code unless Volta was going to be actively developed.
- What options exist for tweaking the generated application, specifically on the client pieces. You always need to tweak something on the generated stuff, and then those tweaks are usually lost when you re-generate.
- How would Volta work with something like CSLA, which I use allot. CSLA provides a mechanism for running as 2 or 3 tier with a configuration file change.
- You can still do more with a WinForms application then a Web Application, even with things like java script and Ajax and Silver Light. Technologies like WPF add another layer of complexity as well. As with other things in the land of programming, it sounds like you would have to give up some performance and features you get with targeting a specific client environment, in exchange for a single code base.
If everyone else is using existing programming methodologies, targeting specific environments, reusing code where possible, they are going to have a better looking and performing application IMO. In the end, the customer doesn’t care if you don’t have to do as much work, they only care how the application looks and performs. You would have to save enough money by using Volta, that you could pass that savings onto the customer. I’m not sure how you could justify this for internal customers.
I have a backlog of technologies to take a look at, so I probably won’t get to Volta any time soon. That might be a good thing, as by waiting, I will either give it more time to develop, or get dropped.