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

  • UMADBRO - Tuesday, September 13, 2011 - link

    Thankfully, I dont agree. Im actually going to give it a shot before I completely make up my mind about it. Maybe you should too.
  • martin5000 - Wednesday, September 14, 2011 - link

    I said I trying to like it, i.e. I haven't finished concluding my opinion of it. The problem is that every detail of metro I've seen so far is very disappointing.
  • cfaalm - Wednesday, September 14, 2011 - link

    I don't hate it. IIt just hasn't sunk into mee how this will be usefull for a deskttop, especially with professional applications that mostly require the whole screen, and want to run without much else going on. We need to know if we can tone it down and shut some of that stuff off.
  • SteelCity1981 - Thursday, September 15, 2011 - link

    This will be Vista 2.0. i'll be waiting for Windows 9.

    The ribbon menu is dumb if people didn't like it in office 2007 people aren't going to like it on their Windows!

    The start menu is dumb. Why make the change to using a metro start menu when the regular one in Windows 7 worked perfectly fine.

    Metro UI is really dumb. I want an actual desktop not something with a bunch of tiles all over the place as my main screen.
  • Ahmed0 - Thursday, September 15, 2011 - link

    I actually got used to the ribbon in Office 2007. However, the problem lies in that the ribbon needs to be well executed for it to be useful. And to my frustration there are some programs that fail at it (like AutoCAD). After I install a program I shouldnt have to start customizing EVERYTHING just to be productive.

    Sadly, change doesnt necessarily mean progress. Its certainly not very wise to take one step forward in one area but two steps back in all the other areas.

    With that said, Im not going to criticize W8 before I try it myself.
  • LoneWolf15 - Thursday, September 15, 2011 - link

    I am trying it in a VM. And I'm hating it too.

    The thing that makes it perfect for smartphones and tablets (limited screen space, or lack of a keyboard) makes it crap on the desktop, at least so far.

    I have a strong suspicion that MS will make it optional (turn on/off) in the final version. It's probably great for people who have a net-top with a touchscreen, but for a power-user, it just dumbs down the Windows interface to a point where it's inflexible, perhaps more difficult to use.
  • lurker22 - Tuesday, September 13, 2011 - link

    Here's the deal. MS by changing the UI so dramatically in an attempt to keep the consumer market is going to now threaten its corporate customers. Fact is corporations use an OS to run applications, new UI means the corporation gets to re-train people. If you have to re-train people it's often not worth the expense, and it also opens the door to the question of "If we have to re-train everyone, do we really need to stay with Windows?"

    MS is damned either way I guess.
  • quiksilvr - Tuesday, September 13, 2011 - link

    Who says this will EVER be in Windows Server? And you can disable Metro UI. You don't HAVE to use it.
  • Ryan Smith - Tuesday, September 13, 2011 - link

    From MS: "Metro is the Windows shell [...] from the smallest tablet to the server".
  • quiksilvr - Tuesday, September 13, 2011 - link

    Then their server team is just lazy. Why would you want this on your server? It makes no sense. The Windows 8 interface, yes, but that Metro UI skin? Hell to the no. It's like Themes and Desktop Backgrounds for Windows Server 2008, it makes no sense not to have it. Just a waste of space.

Log in

Don't have an account? Sign up now