Windows 8: A developer's first impressions

Justin James highlights the major changes in Windows 8 that developers need to know, and explains why he thinks Microsoft strategy might backfire.

Microsoft unveiled a developer preview of Windows 8 at its BUILD event last week. A lot of writers are slicing and dicing Windows 8 in terms of the UI, handling, features, and so on; I'll add to the conversation that the legacy and Metro-style apps on the same system feel like the Win 3.1 days when you were constantly bouncing between the GUI and 80x24 mode to get things done, and I really hope Microsoft improves the experiences before launch. I'm focusing on looking at Windows 8 from the developer's perspective. (I used VirtualBox for the preview; if you want to do the same, follow these directions.) Here are my initial thoughts and findings about Windows 8.

Metro-style apps and WinRT

The really big change is that Windows 8 supports a new app paradigm called Metro-style apps, which are built on a new API called Windows Run Time (WinRT). Metro-style apps look and feel like Windows Phone 7 (WP7) apps and can be built in XAML + C#/VB.NET/C++ or HTML + JavaScript.

WinRT seems to be a new provider of system or OS services to applications. .NET was not a clean break from the past, as it merely wrapped existing system calls up into a comprehensive package. While the details are not known, it looks to me like WinRT may be a full-fledged replacement of the Win32 API. That said, WinRT is accessible from other languages, and it seems that non-Metro-style apps (.NET and C apps) can use WinRT as well.

WinRT supports a host of interesting features, including:

Single Sign On

Windows Push Notification Service (WP7 already has this feature.)

Can act as a contact source to the OS (i.e., it can provide details to the address book)

Like WP7 and Silverlight apps, Metro-style apps will run in a heavily sandboxed environment. While this is great for the end user, you can expect that your apps' functionality will have a number of strict limitations on what they can do to the system. Applications that need deep OS functionality will probably still need to be written in .NET or native code.

To support this new paradigm, Microsoft has a new version of Expression Blend in the works, with heavy emphasis on HTML and JavaScript development. Microsoft is making it clear that this is not going to be used for static HTML sites, which leads me to believe that Expression Web (which I like a lot) will still be around. The HTML + JavaScript apps will run within IE 10, in a full screen, no "chrome" mode, so they look and feel just like the other Metro-style apps (which, like WP7 apps, fill the screen completely and have no OS UI elements visible when using them). In this IE session, no plugins will be enabled, so you won't be able to embed Silverlight, Flash, etc. in your apps. If you want that, you would probably be better off writing in XAML and embedding the HTML and JavaScript in it, although it is unclear if they would be able to access WinRT. Important note: Metro/WinRT apps will not be backwards compatible to previous versions of Windows. Also of note is that Metro/WinRT applications will not be cross-platform compatible, even though the development technologies are.

Miscellaneous

A new version of Team Foundation Server is coming as well, but details are sparse at the time of this writing. F# 3.0 is included, with a number of new features; notably, it seems to have gotten more beneficial upgrades than C# or VB.NET in terms of quantity (although Async/Await is pretty nice), but that's in large part because F# is still quite new and has a ways to go.

There will be a Windows app store, which will function like a smartphone app store. The app store will also support in-app purchases, which is another bonus. There is integration directly in VS11 to hook into the app store, including a very cool feature that lets you reserve an application name. Also, Microsoft will be providing its application review tools, so you should know before submission if your app will pass or not.

Another interesting cloud-based idea is that Metro-style apps can sync information easily to Windows Live for use on other devices. The Windows 8 + WP7/WP8 combo could be absolutely killer for on-the-go professionals and for enterprise apps. Even if the WP7/WP8 OS remains separate from Windows 8 and apps need to be rewritten for each platform (although my guess is they won't need to be), being able to immediately see work or settings from an app on one PC happen on all devices is awesome. WP7 already can do this with Word, Excel, PowerPoint, SharePoint, and OneNote, although the configuration is rather annoying.

Full Bio

I have it set up as a dual boot on my PC and find that I must keep booting back to WIN 7 to really get anything done, it's like using Linix more, with that same steep learning curve, than a Windows upgrade. Besides, is MS crazy? Look at all the holdouts using XP still, if that many users will not update to Win 7, do they really think that users will switch to an even more radical OS.

And not all apps can be converted to ASP/PHP.
If all I wanted to do was read CNN, look at pictures, and rent TV episodes from Netflix, I'd replace my desktops and laptops with iPads.
I love the concept as a NEW platform... But in what world is the entire computing industry ready to replace all their existing software and input devices with a touchscreen?
Has anyone even considered what you would do for an input device with a projector? Hack a Wii-mote?
Nonetheless, I appreciate the detailed back-stage look, Justin. Excellent work.

So at least one professional seems to agree with my initial assessment that this changeover looks more damaging than helpful to the Windows environment--at least for now.
One thing I do see is Microsoft actually trying to drive existing developers over to Metro so they can shut down legacy Windows as soon as possible. If they're successful, then perhaps the transition will be a lot smoother than I anticipate, but it will be costly for the end users who have to upgrade not only their Windows but nearly all of their applications to the new paradigm en-masse. That's an expensive prospect but one I believe is necessary if Microsoft wants to remain relevant in the computer OS business and the enterprise wants to continue using Windows. Legacy apps will end up hurting productivity as the typical three-year hardware replacement cycle won't necessarily drive the transition. Just as many businesses are still using WinXP and even Win2K, it may be a decade before they transition out of Win7 to a touch-based Windows.
And that, I think, is the thing Microsoft needs to drive more than anything; they need to make the touch adoption intuitive and desirable. This writer's opinion indicates that they're not succeeding. WP7 with Metro has yet to make any impact in the mobile world while Android and iOS are strongly driving users in another direction. If the transition to Win8 isn't relatively seamless, customers will be pushed away by the changes rather than attracted.

Chrome OS coming to it from the "newbie", all-web-all-the-time side of a UI, WinRT growing out of an established full-featured OS base.
(But of course, it was an absolutely stupid idea, in Chrome OS, according to many).

Thanks Justin for the overview. It difficult to get through all the relevant videos and docs to actually get to a decision point. We do like that Microsoft appears to making progress in the leadership aspect and doing 'something' bout it.

Am I wrong in thinking that Microsoft like the way the uncluttered simple lines of iOS integrate into the whole experience? I use Windows7 at home and at work, but rely heavily on my iPad when travelling or for outside work. Up to now I have not had any significant problems with iOS .... after all what is flash good for except for ads?

and probably won't be able to for years after it's released. Appx. 20% of my 230 systems still have CRTs. I can't see us replacing otherwise functional hardware to gain touch interfaces. At least, not until there's a 'killer app' on the order of Lotus 1-2-3.
As I've noted most other places, I haven't seen it yet. What little I know makes me question the decision to use a single interface across all platforms, but that's the only opinion I've formed so far.

It's not just the lines, there's an overall workflow in the Metro UI (at least on WP7 devices) that actively reduces the number of gestures needed to get things done, at least compared to Android. Metro on a phone rocks... after 6 months with a WP7 phone, I'd rather go back to a "feature phone" than use Android again! I think Metro on a tablet will also be awesome. Metro for keyboard + mouse? I'm not sold yet.
J.Ja

I think they can make some improvements for mouse and keyboard in Metro (ways to do the "touch" with a mouse or keyboard).
I agree on WP7. I enjoy using it and keep finding easier ways to do things on it. I think the Metro and desktop will get to a better point of working together more fluidly and with mouse and keyboard. The existence of touch mice point to ways this could work.