The Metro Surfaces

Our perceptions of Windows 8 are currently based on the live tiles of Windows Phone 7.5 ‘Mango’ and the touch-based ‘Metro’ User-Interface supported by WinRT. The buzz is of a clean, well-designed, but decidedly retro user-interface based on JavaScript+HTML/CSS, and based in tiles that can be rotated, docked or run full screen but not resized. The focus is on getting the typography right, thereby making the content clear and legible. Amidst all the excitement, .NET, Silverlight and WPF looks a bit passé.

The truth is, of course, different. Windows 8 is still Windows. The ‘desktop’ hasn’t changed, in the sense that nothing has been taken away. Everything will still run in the desktop as it did in Windows 7, but not in ‘Metro’.

Metro is for mobile devices. Developers will be able to use the same ALM environment provided by Visual Studio for C# and .NET in order to write mobile apps. The next version of Visual Studio will include project support for Metro apps, and allow Expression to prototype and produce HTML5 Web apps for Windows. The JavaScript editor is now greatly improved, they’ve added support for HTML5 tags, enhanced the CSS editor and provided better code formatting.

WinRT, (windows Runtime library) is needed for Metro primarily to allow HTML/CSS/Javascript developers simple access to those parts of the operating system that they might require in order to write non-portable Windows applications, and allow these applications to run on ARM processors used in mobile phones as well. However, it is a much more useful part of Windows 8 than just that. It is a managed successor to the Win32 API, written on Object-oriented principles, and able to work with XAML directly. It isn’t a replacement for .NET at all. If anything, it replaces COM and Windows Forms. Metro and .NET will both interact with WinRT. For any .NET application, WinRT is just another stack: If it uses WinRT the UI will just run faster, since WinRT uses DirectX to draw the entire user interface.

Having said all that, the presence of WinRT and Metro is uncomfortable for those of us who are committed to developing Silverlight applications, since it reinforces the message that Silverlight isn’t for phones or tablets. It looks as if the message from Microsoft is that touch-based Windows mobile applications will be Metro-based, and Microsoft seems very keen on demonstrating how easy it is to convert from Silverlight to Metro. Developers who want to write for Windows mobile devices are going to find it difficult to hedge their bets by adopting a platform that provides portability to iOS or Android. Metro and WinRT isn’t going to port easily, even if it adopts open standards. You can’t, for example, run either Flash or Silverlight in Metro. It is ‘plugin-free’. At the moment, it seems that for a desktop application that has to run on both PC and Mac, Silverlight is still the obvious route. For the Windows Phone and tablet, then it is Metro. For portability? Who knows at this stage?