I finally spent time with the Windows 8 Consumer Preview and the Visual Studio 11 Ultimate Beta, as well as the Team Foundation Server (TFS) 11 Beta. So far, I see good improvements, but the overall direction of the .NET ecosystem is not quite what I hoped. In this column and in my next several Software Engineer posts, I'll discuss the new products and share my thoughts about them as I work through a simple application.
The first thing that struck me was the ease of installation, though anyone stumped by the previous Visual Studio installations doesn't need to be in this business. This installation removes all of the choices other than how much documentation to run locally ("minimal" or "none" with an "advanced" option), and what set of keyboard layouts/commands/etc. to use (the traditional dialog the first time you start Visual Studio). The real surprise was TFS 11, which blows away TFS 2010 (it was fairly pleasant) and TFS 2007 (it was miserable); it's about as simple as you can get with TFS. If you are a single developer or a small shop where folks are going to install TFS locally, this is a huge boon; even for the bigger shops with a shared instance, a simple TFS deployment is always better.Visual Studio 11 is streamlined and presents a much simpler UI. One drawback is that the UI is more "flat"; it has a ton of grey and not many colors, which makes it difficult to visually distinguish different components. In many places, existing functionality has been combined into one spot to reduce the number of UI controls. For example, they've dropped the original file-only view of solutions and made Solution Explorer the only view (Figure A). Along the same lines, Team Explorer dropped the multi-level tree view in favor of a drop-down that switches the top-level view. Even in my slightly under-powered Windows 8 VM (one CPU core, 4 GB RAM), Visual Studio 11 ran smoothly. Figure A
The Solution Explorer shows a deep-dive into files.For my first Metro/WinRT application, I chose the "Grid Application" template. This template provides three screens: one to show groups of items and can be scrolled horizontally to show additional groups, one to show a "group detail" page to zoom in on one group, and one to show item details. My application ("MSR Browser") will pull information from Microsoft Research in OData format and allow the user to see what Microsoft Research has going on. It will group things by category ("article," "downloads," etc.). I created a new "Grid Application" project in Visual Studio, added it to TFS, and hit run, and Figure B and Figure C are what I got. Figure B
Out of the box, the "Grid Application" template is in great shape for an application. (Click the image to enlarge.)Figure C
The item detail view for the "Grid Application" template. (Click the image to enlarge.)
You can see that the application is pre-populated with data. Inside the application are sample classes for the data model; these come with a lot of static "ipsum lorem" style data, but that is easy to change. In my next Software Engineer column, I will show what I've done to change the static data to pull from the OData source at Microsoft Research.
The overall experience of Visual Studio 11 feels like a refining, not a recreation or reimagining, of the existing Visual Studio experience. This makes sense, since so many people are already accustomed to Visual Studio. At the same time, Visual Studio has slowly accumulated a very rich feature set, but the interface is not very smart about presenting these features. Just as Office 2007 tried to present a view of Office in which features were visible on an as-needed basis to reduce clutter, Visual Studio could use some of that as well (though not necessarily the same way Office 2007 did it).
Visual Studio 11 is still a "legacy" desktop application; this means it will not be running on ARM-based Windows 8 systems. As Microsoft tries to push people towards the Metro/WinRT way of doing things, keeping Visual Studio a strictly "legacy" application raises the kinds of red flags in developers' minds that Microsoft would hope to avoid. The charge of, "you can't do real work in Metro" is already ringing loud and clear, and Visual Studio not using Metro reinforces that. While it is sensible from the aspect of WinRT not providing the tools needed for code development to be done (especially things like instrumentation, profiling, debugging, etc.), it definitely makes me wonder how long the "legacy" desktop will need to be around, regardless of what UI paradigms try to replace it. This isn't a criticism of Visual Studio 11, but merely an observation into the Windows 8 (and beyond) development and usage experience and expectations.
I experienced a number of disappointments with the beta that I hope are remedied by RTM. The biggest one is that IronRuby and IronPython are nowhere to be found. While most folks won't care, I consider that a major omission. I think this is a direction that Microsoft needs to be moving in, especially with the benefits I think it can bring to the MVC and MVVM models that Microsoft has been pushing lately (more on this in a future article). From what I have seen and from what I have read, there is not anything new here for WebForms or WinForms developers; again, that's not unexpected, but for those developers, it must be disconcerting to feel increasingly marginalized. Oddly enough, WP7 is not supported in the package either; for WP7 developers, the lack of support out-of-the-box is going to feel strange. Hopefully, the release of the functionality is waiting for a future release of the WP7 tools for Visual Studio 11, or it could be further tacit admission from Microsoft that Windows Phone 8 will really just be a new form factor for Windows 8, and a WP7 to Windows 8 converter will be all that is needed to bring WP7 developers into the modern world.
At the end of the day, if the beta is essentially "feature complete," then it's a possible upgrade for ASP.NET MVC developers, and it's a must-have for anyone who will be writing Metro/WinRT applications for Windows 8. For everyone else, there is not much here to recommend purchasing an upgrade, though if you have one available for free, an upgrade would be sensible.
Keep your engineering skills up to date by signing up for TechRepublic's free Software Engineer newsletter, delivered each Tuesday.
Justin James is an OutSystems MVP, architect, and developer with expertise in SaaS applications and enterprise applications.