Developing For Metro – WinRT: The Metro API

So far we’ve talked about Metro from the end-user perspective where indeed it is a style and a UI. But Metro isn’t a way to display existing Windows application, it’s what results from a new development model for writing applications. Metro, as the user sees it, is the result of the APIs and design guidelines developers follow in creating Metro applications.

With Windows 8 Microsoft will be introducing a new API: Windows RunTime (WinRT). Over the years much has been said about replacing Microsoft’s long-lived Win32 API, with some success. The .Net Framework supersedes Win32 to some extent, but at the end of the day Win32 is still significantly used in one way or another by many developers. WinRT is the API that will replace Win32 for application developers, and is the API developers will need to use to develop for Metro.

WinRT in a nutshell is a combination of the elements needed to make Metro work, along with subsets of features from Win32, COM, .Net, and HTML5/CSS3. As with pure .Net applications, WinRT applications are meant to be architecture agnostic, and ideally Microsoft would like developers writing applications in runtime or interpreted languages such as C#, VB, HTML5/CSS/JavaScript, and even Silverlight. C and C++ will be able to access Metro too, although there’s still some ambiguity about under which conditions those will be architecture agnostic. In any case WinRT – and thereby Metro – will be accessible from virtually every language Microsoft supports today in their Visual Studio IDE. And regardless of the underlying language, all Metro applications will behave like first-class applications.

With all of this talk about WinRT, Microsoft went through great lengths to reiterate that developers will continue to have access to older APIs for new applications and that Windows 8 will run everything that Windows 7 can run. This is both because traditional/desktop styled applications will not be going away any time soon, and because WinRT as it stands is for user-facing applications, not device drivers, services, or other backend code. In fact desktop applications will be supported indefinitely (look at how long support for 16bit Windows applications has continued to last), but Microsoft clearly wants developers developing for Metro whenever possible, and not for the desktop. For a great many applications this makes sense, but I’m not sure anyone really understands what this means for specialty applications like 3dsMax, Adobe Photoshop, and other workhorses that not only have large legacy codebases, but whose usage model doesn’t easily flow with Metro.

 To entice application developers to use WinRT and Metro, Microsoft will be using a carrot and a stick. The carrot will be the Windows Store, the stick is that non-Metro APIs will not be available for ARM. ARM is Metro-only from day one, and the Windows Store will be the enforcer (more on that later). So if developers wish to target both ARM and x86/x64 users, they will need to develop Metro applications.

Developers working with Metro will be using Microsoft Visual Studio 2011, which like Windows 8 is in development and will be the first version of Visual Studio to support Metro. We won’t spend too much time on Visual Studio, but it will provide development facilities for all of the languages Metro supports, including HTML/CSS/JavaScript. For UI programming Microsoft’s Expression Blend 5 will play a big part, as XAML will be the UI markup language for most of the languages excluding HTML5/CSS.

The hard sell for Microsoft will begin tomorrow when the developers arrive. It’s clear that Microsoft has attempted to structure WinRT to be familiar to existing Windows programmers, but developers are just as sheepish (if not more) than end-users when it comes to change. It will also be the beginning of the process where the development community figures out where desktop applications fit in amongst the new Metro order. Even if Microsoft can sell developers on Metro from day one, there’s still a massive army of legacy machines – everything currently running Windows – that need to be factored in.

Mobile Experience, IE10, Live Cloud, Samsung Developer Preview PC The Windows Store
Comments Locked

235 Comments

View All Comments

  • TEAMSWITCHER - Wednesday, September 14, 2011 - link

    I'm sure it will be successful as all the other METRO GUI devices - Zune, Kin, WP7.
    Oh Snap!
  • UMADBRO - Wednesday, September 14, 2011 - link

    Cool story, bro!
  • Wraith404 - Thursday, September 15, 2011 - link

    Hey, at least 100 people have accepted free WP7 phones.
  • Krussll - Wednesday, September 14, 2011 - link

    I like it, i think the Metro interface wil provide a much more harmonious windows experience for people who've adopted tablet computing but still use a windows PC for the most of their. I like the fact that it provides you with your key info on start up and is a short cut combo away when you need to check it, i think it has potential to be a great feature if developers can fully utilize it.

    I dont understand the people saying that it will be impractical for the mouse, umm you do have arrow keys on your keyboard i would have though that would have been obvious to use them.
  • thrasher32 - Wednesday, September 14, 2011 - link

    I personally do not like the interface. I don't want a windows phone 7 look or OS on my desktop. I don't build $2000 gaming and production rigs to have the OS look like it's made for a 5 year old.

    Microsoft, you need to change direction now or you're looking at another Vista.
  • UMADBRO - Wednesday, September 14, 2011 - link

    opinions = facts?
  • smithg5 - Wednesday, September 14, 2011 - link

    Take all of these purely negative comments, and replace "Metro" with "Desktop" and "Desktop" with "Command Line", and I'm sure you could have had the exact same conversation 15 years ago.

    "You mean I always have to boot the desktop? It can't be disabled? I have to access the CLI from the desktop? Why would I use this on a server?"

    The argument might be logical, but it clearly wasn't the end of the world then, and it won't be the end now. In fact, I think it's pretty great. Imagining system administration in 20-30 years, we all want some sort of swoopy sci-fi interface that's pretty and works well - this is the start of that.

    It would be cool if they could Metrofy server management for simple environments.
  • UMADBRO - Wednesday, September 14, 2011 - link

    At least someone around here is forward thinking and isnt stuck on almost 20 year old interfaces.
  • Wraith404 - Thursday, September 15, 2011 - link

    full screen, big blocks with no interactive multi-tasking is not forward thinking, it's a return to DOS 6.22 and the task swapper.

    Trying to drive desktop users to a tablet interface is doomed to fail. Windows are containers, they are required for productivity. In grown up land where we do real work, you often have to look at one application and act on another. Flipping between them in full screen would be horribly inconvenient. Metro might be neat, but it's for toys, period. I understand that Win8 can switch between them, but since the two modes clash horribly that's just not a desirable process. I have the preview installed, and disabled Metro already, simple as that.
  • ezodagrom - Wednesday, September 14, 2011 - link

    The change from Command Line to Desktop was a good change, not just when it comes to aesthetics, but also when it comes to funcionality (multitasking).

    The change from Desktop to Metro, while good for tablets and other touch screen interfaces, it's just not as functional as a Desktop UI in desktops and laptops that don't have touch screen interfaces, especially when it comes to multitasking.

Log in

Don't have an account? Sign up now