Back at the beginning of last summer Microsoft did a public preview of the Windows 8 user interface, and the world got a look at Metro apps for the first time. A number of people in the software business, myself included, came away with the impression that, at least as far as the mobile platform was concerned, the company was backing away from XAML and Silverlight in favor of HTML5 and javascript. Some of my colleagues felt that this was an overreaction. Certainly it was an early announcement, and there was very little information to go on. As a developer who had invested a fair bit of my career in the .NET framework and related technologies including WPF and Silverlight, I was of course interested to know whether I was going to have to throw that away and learn a new framework to write apps for Windows 8 mobile devices, but in general agreed that the best course was to wait and see.
With the release of the Windows 8 consumer preview back at the end of February wait mode was over, and it was time to see. A day or two after it was made available I cleared enough time to get it installed into a VirtualBox VM along with the Visual Studio 11 beta with support for Metro application development. That process wasn’t entirely smooth, which isn’t totally surprising given that both the operating system and development environment are pre-release software. I still can’t run reliably with the Oracle Guest Additions installed, so no widescreen for me. But eventually I was able to get it working well enough to start playing around with Visual Studio. After building a few tutorials and my own “hello world” style Metro apps, and after using Metro on my desktop for a couple of weeks, I’ve been able to come to some early conclusions.
The first and most urgent question, for us WPF/Silverlight developers anyway, is whether Microsoft threw our favorite stack under the bus. Well, yes and no. The .NET framework, WPF, and Silverlight are all alive and well, and .NET 4.5/C# 5 even contains some cool new toys, such as language support for async programming. However, WPF and Silverlight have no role in Metro app development. In fact the .NET framework has only a supporting role in Metro app development. This is because Metro apps don’t run on the CLR the way WPF and Silverlight programs do. Instead they run on something called the Windows Runtime. The WRT is a sandboxed execution environment for Metro apps. I almost said “mobile apps” but in fact Metro plays a big role in Windows 8 on the desktop too, which I’ll talk about more below. The WRT looks a lot like .NET in certain ways – you create UI markup in XAML or HTML and code-behind classes in C#/VB/C++/javascript – but there are a lot of differences too. So in the end, yes, you’re going to have to learn a new framework to write Metro apps. It doesn’t look like a huge hurdle for .NET developers, but there it is.
So with that out of the way, is it worth learning to write Metro apps? It will be worth it if there is a lot of demand for them. Metro apps can run on mobile devices like phones and tablets, and on the Windows 8 “Metro desktop” (for lack of a better term), so those are the markets where demand will have to arise. We can dispense with the last case first. When I first started using Windows 8 I specifically wanted to keep an open mind about Metro on a desktop machine, but having used it for a couple of weeks now my mind is becoming more and more closed. I don’t see the advantage of most of the Metro UI metaphors in a desktop environment, especially without touch. You end up moving the mouse around a lot more, and virtually every aspect of the design aesthetic for Metro apps is hugely wasteful of screen real estate in an environment where you have lots of it. I have two 24″ LCD monitors, and turning that real estate into a vast field of some cheerful color populated by a few tiles with really big fonts in them doesn’t strike me as a good return on my hardware investment. Windows 7 is so good, and Windows 8 is in most ways such a minor delta from it, that there is no way I would voluntarily upgrade just to get Metro. I suspect most businesses will see it the same way, and most consumers will get it on a new PC, if they get it at all.
If I’m right about that then what remains is mobile devices. I’m nowhere near enough the expert on those environments to predict whether Microsoft has a chance of driving adoption. But I know enough about business and markets to think they need a knockout to take substantial share away from competitors as entrenched as iOS and Android. I’ve developed iOS and Android apps, and have used both platforms on smartphone devices, though not tablets. I really don’t see what advantages Metro has in usability. Over the long run, though, I think Metro has a chance against Android, simply because the Android ecosystem is so fragmented. Apple has shown over the years, as has Microsoft for that matter, that tight control leads to a more polished user experience. Based on that I wouldn’t be surprised to see Metro gain some adoption over the next few years. It will continue to be a niche player for some time, however, and that means that developers who put time into learning WRT and Metro development will be speculating on its future success. Will that speculation deliver a big payoff? I guess it’s time to wait and see again.