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

  • Zan Lynx - Wednesday, September 14, 2011 - link

    Interesting isn't it, that Microsoft has made versions of Server 2008 that don't have a desktop.

    I haven't run a server with a GUI in the last 12 years. Who would?

    Text file based configuration that can be remotely managed, programmed and monitored entirely by script...

    Using a GUI to point and click is horribly inefficient and doesn't scale to more than two servers.

    Real sysadmins don't do pretty. They want it to work. Real sysadmins don't spend time clicking GUI buttons configuring new machines. They boot them and they auto-configure from the network. You never touch a GUI. Just the power button.

    You might use a GUI to configure one user as a template in Active Directory. You'd never use the GUI to add 100 new employees to the system.

    The real use for the GUI is to distract the management while you get real work done behind the scenes using a laptop and an SSH command line.

    A GUI for tiling your command windows might be acceptable. Barely.
  • smithg5 - Wednesday, September 14, 2011 - link

    My point wasn't that all sysadmins use GUIs now, but that the GUI hasn't gotten in the way of sysadmin work on a command-line, even though in most cases for Windows it starts up with the computer. This is a useful analogy for all these fears about Metro in a business environment.

    That said, most of the volume Microsoft sees for Windows server is that "two servers" size environment. Most businesses don't even have 100 employees. For the rest you'll still have your desktop, and that desktop will still have a command-line interface. And hey, they might even make desktop-less, Metro-less versions for the enterprise. If they don't, it won't somehow make your text-file configuration, CLI remote administration wizardry stop working. You'll just be a couple of clicks from that when you start up your server/laptop, and then you'll have something pretty to look at during your breaks. Those servers that you never see the desktop of will benefit from a smaller memory footprint. What's the problem?
  • piroroadkill - Thursday, September 15, 2011 - link

    No, not really. For the vast majority, the gui represented a way to use a computer that made sense to more people.

    Metro is just a kind of gui, but heavily designed around touch and full screen tablet style use.

    It's simply a bad fit for desktop users. I tried the dev preview, and I'm not impressed in the slightest.

    This time, it isn't about resisting change for the sake of it. Really. The dev preview is seriously quite bad. Keyboard and mouse wise, it just sucks.
  • TEAMSWITCHER - Wednesday, September 14, 2011 - link

    I've got the Developer Preview Up and running on a machine and I must say that I absolutely hate it! Whenever I click on the Windows Start Icon (lower left corner) you go to the Start Screen (METRO GUI), the Start Menu is gone! That's just not cool. Also the full screen metro apps are real easy to get lost in, it's begging for some kind of Mac OS X like Mission Control to see all running processes. There is no Back Button, I have to hit the Windows key to get back to the Start Screen. The Desktop (which has been standard on every Windows machine since the dawn of time) is now a strange bolt-on appendage to the METRO GUI experience. I don't know...this isn't beta yet and things may change....but so far consider me one totally pissed off Windows user...this shit isn't Windows. Feels more like Vista meets Bob. Oh, and calling icons "Charms" is gay.
  • UMADBRO - Wednesday, September 14, 2011 - link

    Well, at least you tried it. But try and remember, this is still a pre-beta, and isnt finished yet.
  • Icehawk - Wednesday, September 14, 2011 - link

    What are they trying to achieve? If it is one OS to rule them all I think they are making some serious mistakes as I do not believe traditional computing will be dominated by cellphones or tablets, they serve a much different function and will continue to do so indefinitely IMO. The apparent dumbing down of the OS to mimic a smartphone seems like a terrible idea to me.

    *Assuming* the desktop/Metro experience isn't radically altered the paradigm shift to right-hand panes (ie, the "charms" menu) makes no sense, for the last 10-15 years we've worked from the left. Works fine if I'm using a tablet but that is it - on a desktop nothing could be more jarring. Especially when it isn't uniform, for example the Start menu still pops up on the left. Ugg.

    Also why does anyone think I want a touchscreen on my desktop? How am I supposed to reach it my arms are not 3' long! I guess we'll be forced at the least to use multi-touch pads? I hope it will work in tandem with a mouse since I'm not sure how the hell I'd game using a touchpad.
  • Shinya - Wednesday, September 14, 2011 - link

    Microsoft,

    I really dont care for Ubuntu (lack of support and games) and OSX (lack of games, software, etc etc)

    Please don't make me switch.

    give us the ability to turn off Metro when it releases
  • ct82fl - Wednesday, September 14, 2011 - link

    I think if Microsoft really wants to succeed in the tablet market with their OS, they really need to figure out a new innovative way to navigate. I saw very similar things to Apple's OS and iOS. In order to beat the competition they are going to need to figure this out and figure it quickly.
  • cyberguyz - Wednesday, September 14, 2011 - link

    Sorry but I am a power user of my computers. I don't want them looking or working like a tablet or my iPod.

    While I am usually on the bleeding edge with Windows, from beta onward with each release, this is one I am most definitely sitting out. It does not appeal to the way I want to use my computer at all. For a tablet that I am not expecting to use for heavy input or output, Win8 is just too cumbersome and tied to mouse or touch as primary inputs.
  • Rand - Wednesday, September 14, 2011 - link

    A few suggestions, make CERTAIN your applications all have different names. If your applications have an uninstall.exe they will all be grouped together on the start screen with no way to differentiate them or tell which is for what program.
    Similarly, if your apps have a config.exe you won't be able to tell which is for which without opening them individually. Any executables must have clearly differentiated names that indicate precisely what they are.

    Also, you absolutely must trim down your bookmarks to only a handful. If you're accustomed to having a 100-200 bookmarks in various folders in your browser, that isn't going to work well at all in Windows 8. You'll end up with screen after screen after screen of bookmarks.
    I don't think it's remotely practical or usable any longer to have more then a dozen bookmarks at the most.

Log in

Don't have an account? Sign up now