Windows 8. “Don’t worry, nothing has changed for traditional desktop development” And that’s the problem

Well the Build conference has come and gone.  The dust has started to settle and folks have been doing a lot of reflecting on what all the Windows 8 announcements really mean.  We learned quite a bit from Build, but I don’t think we know the whole story yet.

Before Build, there was a wave of uncertainty with some developers about whether their favorite platform would be supported on Windows 8…or if we were all going to be shoe-horned into HTML5 and Javascript.  Developers were grasping at every rumor that supported what they wanted to believe.  Some folks were out for blood.  Others quietly jumped off bridges in anticipation of what they felt was the inevitable.  It was hysteria of biblical proportions.  People wanted to know that the technology they bet on was the right one.  People wanted to know that they weren’t using a technology that was soon to become obsolete.

I don’t know what pre-Build camp I fell into.  I felt WPF would not be satisfactory unless it got a major performance overhall, which Microsoft has already publically told us it would not get.  I also didn’t feel Silverlight was robust or performant enough for a general, full featured desktop framework.  Nothing less than an overhall the size WPF needed, and wouldn’t get, would make this the framework of the future. Personally I became tired and apathetic about the fates of WPF/Silverlight.  I was ready for something new…and like they always say, “Be careful what you wish for.”

After the announcements of WinRT and this new “Metro Style Xaml UI”, which are nothing short of engineering masterpieces, it was explained that, “Yes you can still run your applications of today on the Windows 8 desktop.”  One of the keynote speakers even showed a screenshot of Adobe Photoshop, stressing that these types of UI are not metro, but still important.  So this is what options Microsoft laid out for us:

  1. “Fast and fluid” UI framework, enhanced by Direct2D and D3D11, that is restricted to WinRT and subsets of Win32.  Deployment is restricted to AppStore and enterprise.  These applications will not run on the traditional desktop.
  2. “Slow and clunky” UI frameworks such as WPF or Silverlight.  Deployment options are side loading.

image

So you got your “fast and fluid” XAML framework you always wanted.  What’s the beef?

If the classic desktop is still important (e.g. the Photoshop example), what’s the forward momentum?  The WinRT style app simply doesn’t cover all the ground of what is possible on a Windows OS, nor does it cover all the deployment needs.  Are we to just get minor tweaks on WPF and Silverlight with a new version number and we as Microsoft customers are happy?   Yes, your favorite framework will run on Windows 8.  Yes, you are getting new versions of all of them.  But unless Microsoft lets us run these “Metro XAML UI” apps on the desktop, it could be a sign that everything running under it might be on the chopping block.  Murdered by neglect.  In the near future, maybe a couple years, you will have to make a new application, and it might not be the right fit for a “metro style” application.  Will you be stuck with slow-and-clunky?

Give some constructive criticism!

It’s all just complaining if you don’t provide an alternative, right?

One solution would to allow classic desktop applications to use the new XAML framework in WinRT.  This means getting all the advantages of the new Direct2D powered XAML, WinRT and the full Win32 plus side loading.

I have built a proof-of-concept to load WinRT applications on the desktop.  But if it’s not a supported scenario, it might as well be a hack.  Source code here (requires VS11 Ultimate).

image

Give me a conspiracy theory.  I like those!

One thought is that Microsoft has this feature planned.  But if they did announce it, they’d cannibalize their efforts with Silverlight 5 and .NET 4.5.  Not to mention they’d probably have a riot given how big of a reaction developers had to just the thought of their platforms being last week’s flavor of the month.  Microsoft doesn’t really want us to have 4 XAML frameworks to worry about and fiddle with.  They want one.  By not having “Metro XAML UI” on the desktop, they are just prolonging pain and guiding us to make the wrong investments.  If this conspiracy is wrong, then this signals the beginning of the end of the classic desktop and everything that runs inside it.

In short – I think we don’t have the full picture on Windows 8.

10 comments

  1. Patrick Klug (@PatrickKlug)

    I totally agree. Curiously, Microsoft has done *nothing* to drive the Desktop market forward.

    I have written about my disappointment with the announcements on my blog (www.patrickklug.com) – Even if they don’t improve the ‘Desktop’ frameworks, which they really should, they could at least spark some innovation by ‘featuring’ Desktop Apps in the App Store and by removing one of the biggest pains for users on Windows. Finding, trusting and installing applications. (http://www.patrickklug.com/2011/09/22/what-is-wrong-with-windows-software-and-why-windows-8-doesnt-solve-a-thing-part-1-finding-downloading-installing/)

    Simply allowing Desktop apps to be listed is, in my opinion, a huge mistake. I’ve expressed this also on my blog: http://www.patrickklug.com/2011/09/21/why-the-windows-8-app-store-will-fail/

    The announcement at Build were hugely disappointing and since nothing really changed for developers of ‘traditional’ desktops I really wonder why Microsoft thought it necessary to spread fear, uncertainty and doubt everywhere.

  2. Stephen Ruben (@CSharpYouDull)

    I totally agree what is wrong with ripping off the band-aid sure it’s going to hurt a little but in the end it leads to less pain that pulling it off slowly. I think the addition of HTML 5 as a desktop user interface is an terrible idea HTML 5 is not a complete and still subject to change but hey lets just jump on board prematurely and leave it to the developers to figure out. To be honest I’d have rather seen them bring a tablet to market running WP7 / 7.5 than waiting for windows 8.

    Just to be clear I still love Microsoft as a developer they have given me the tools to help me build a great career unlike other popular platforms, and I hope that the future brings more stability to the Microsoft echo system.

  3. Paul

    Great points, Jer! I’m guessing you’re right that we haven’t heard the whole Windows 8 story yet. “Metro” seemed to be about Microsoft’s response to the IPad, much like Mango is their response to the IPhone. These platforms will likely merge over time from a developer perspective, such that WinRT apps will eventually run on a Windows Phone.

    The danger here is that Microsoft is so fixated on beating the competition (Apple with their IPads and IPhones) that they will forget about their core business – Windows desktop applications! I get that they need to evolve Windows, and it makes sense to first lay out a new UI framework and core APIs that will support non-desktop form factors, given the growth of these markets. But their next step needs to be to clearly show how they intend to evolve desktop apps into the Metro world, or they will lose these developers and erode Windows itself! Giving desktop apps access to WinRT would be a great start, but we need more than that. For example, how would a “Metro Desktop UI” look? Shunting back and forth between Metro and the desktop is awkward at best, and often jarring from a UI perspective, given the vastly different interaction modes. Will there be a “Metro Ribbon” control that makes better use of touch while still preferring mouse and keyboard?

    If I don’t see a clear road ahead for Windows desktop apps by the time they release Windows 8, I’ll certainly be considering other technologies for my Windows desktop app (which is now 20 years old!). WPF seems destined to be the next MFC – supported, but ignored from a strategic perspective, and I’m reluctant to write a bunch of new WPF code, especially given its current graphics performance problems.

    The best bet seems to be to write as much code as possible in portable C++, making the UI layers as thin as possible. What to do at the UI layer then? Well, if it’s thin, at least it’s not too costly to re-write it every decade. But maybe a cross-platform C++ UI framework would be better, providing both future-proofing (as UI form factors and OS’s evolve) and giving the performance and multi-platform support required today.

    • Otengim

      “The best bet seems to be to write as much code as possible in portable C++, making the UI layers as thin as possible. What to do at the UI layer then? Well, if it’s thin, at least it’s not too costly to re-write it every decade. But maybe a cross-platform C++ UI framework would be better, providing both future-proofing (as UI form factors and OS’s evolve) and giving the performance and multi-platform support required today.”

      But that would required to rewrite the crossplatform GUI Api, At the Qt forums they are asking how Qt will adapt to WinRT, Nobody knows nothing yet, same as the wxWidgets. The problem is also this Apis takes long time to adapt to the new GUI.

      For me the best could be as I said WinRT replace Win32 and use WinRT for Desktop apps and Metro apps. There should be in the API a switch as to said myWindows.setMetro(); myWindow.setDesktop(); it is just an idea but that way we can target in code the 2 Modes. If Im doing a photoshop like program I will not use Metro but I will use the Desktop functionality. So the OS will be in charge on how to render the apps in metro or desktop. So that way I can program with the OS Apis, I dont mind to relearn every decade a new Api but I would like that OS API works for all the enviroments that runs on. I dont want to develop for desktop using win32 and for the Metro on WinRT 2 diferent APIs that awful and will kill windows ecosystem.

      • Paul

        I agree with you about wanting WinRT to completely replace Win32 for Desktop apps, and this seems likely to happen eventually. By then, however, the Metro app framework may be rich enough to also support newer-style Desktop apps (e.g., perhaps via a Metro ribbon control). I heard a rumor that Microsoft is contemplating a Metro version of Office, which is certainly a Desktop app, so it will be interesting to watch Metro evolve.

        What I get tired of doing is guessing which API is going to win the GUI wars, and then hoping for the best as I write my UI code. For the last 15 years, it’s been possible to write everything against Win32 and be successful, as it will run on 80% of the world’s computers. What percentage of computers will be running WinRT in 5 years? Hard to say, but I’d guess < 50%, even 10 years from now.

        I'd love to have a cross-platform UI API provided by a company whose core business is developing and maintaining the API across all of the latest OS's on all computing form factors. It seems that most companies that provide these API's have their own agendas to push. Microsoft wants to sell people Windows, so any API innovation will be done on the Windows platform. It seems Nokia has steered Qt in the direction of Meego and Symbian, and so it makes sense for developers to wonder whether Qt will ever support WinRT (maybe Microsoft should include WinRT/Qt support in its WinMo deal with Nokia – haha). Who knows, with the demise of Flash, maybe Adobe will evolve into a company that primarily provides cross-platform developer tools..

  4. Otengim

    I agree, IMHO the Metro UI is more suitable for Tablet or phone screens but the Desktop needs the traditional Desktop GUI, What they can do is expose the WinRT and UI as Desktop look and feel and get rid of win32. So we will use WinRT for everything for Desktop Look and Feel and also for Metro(Tablet, Phone).

    In my desktop computer is not confortable to use Metro with Touchscreen cause is tired for the hand and fingers is vertical. It needs something like apple a touch pad instead of a mouse but still not enough for desktop like apps as photoshop that have more complicate GUI.

    Im guessing Windows 8 will be the next Vista and Windows 7 the Windows XP. Windows 7 is great for Desktop, Laptops, Netbooks and even tablets, Im not sure why Microsoft wants to put a UI for phones to all desktops.

  5. Otengim

    This will look like spam on your blog but sorry it is just my opinion and I hope people realize that Windows 8 its still just a fad, what we see right now maybe is not the complete picture, I hope so, but if I remember every time Microsoft doesn’t listen to their community they Fail as the Windows Vista Fiasco but they listened the community for Windows 7 and it was a success.

    So right now again Microsoft maybe doesn’t listen their community with Windows 8 they just pile a new GUI and APis for phones on to Windows ecosystem, its smells like a Fail again, Sorry but its just my 2 cents.

  6. Joy

    @Otengim complete agreement with the fact

    “Im guessing Windows 8 will be the next Vista and Windows 7 the Windows XP”

    lol couldn’t help myself smile … Microsoft and apple both have great innovations . but the problem is microsoft doesnt listen to their community . they failed in vista .. a worldwide hardcore acknowledged truth… to be frank .. let me share a small experience what i had with developer preview … this isn’t necessarily be a critic… but still..i downloaded the developer preview.. was too damn excited about it .. i knew it was mainly the metro UI which windows 8 UI has .. so excited i hurriedly installed it on vmware to test….. after it installed all went fine…. then i tried to click the start button …. and to find the my computer section…. it wasn’t there …. no application menu.. and it was really irritating with my mouse to every time switch to metro ui to and i couldn’t use multiple windows on my laptop….

    but on other hand if i see it as an tablet OS …. i personally own an android mobile…. and in a state of dilemma which mobile OS tablet to buy….. i am definitely wont go for Ipad…. but now to consider between android and Win 8 … win 8 to be frank seems much better and smoother if considered for touch based UI… it wd b just an treat to the eye ….

    but on the contrary i guess…. there should be an option to choose between installation…whether its on a desktop/ laptop with keyboard/mouse or else it is on a tablet…. you cant just instal an mobile OS on laptop …. and try to imitate it as an desktop using your mouse / keyboard …..touch pad for win 8 is yet to arrive…. but jus as an normal user….. desktop apps isnt comfort to use at all in windows 8 …atleast in navigation purpose its really hard to find where are the proper options !!!!!

    i wish if microsoft can put metro UI as an option while installation on tablet … and leave the core OS as intact … so that it can b both installed on laptop / desktop or else on tablet with user considerations !! 🙂

    • surfasb

      “after it installed all went fine…. then i tried to click the start button …. and to find the my computer section…. it wasn’t there …. no application menu.. and it was really irritating with my mouse to every time switch to metro ui to and i couldn’t use multiple windows on my laptop….”

      I’m personally glad we are moving away from menus and applications. Your workflow should concentrate on your data. And application should revolve around your data. Applications should flow in, get their work done and leave the data up for the next application to come in and pick up from where the previous one left off.

      Currently, we are stuck in a paradigm that has data flowing into our applications, with each application having to reload the data and synchronicity is left as an exercise to the user.

      Notice the MetroUI is moving away from Applications centric and to data centric. Too much focus is on the UI itself but not the interaction or UX part of the program. Notice the tiles display live data now. Screw having to open a webbrowser and using RSS feeds+emails to aggregate data. You can now have a tile that aggregates all the data for you. Data centric.

      Next notice the new open/save “dialogs.” Files are now all located in one place, whether they are a local or “cloud” storage. Again, data centric. The “desktop” UI needs to die already.

      If you really need it, it is the **very first** tile on the screen. If you need your applications, start typing. Your applications are sorted as you type. Again. Data centric. You type, the computer can figure out what you are typing. No more trying to remember, “Now is the application under its own folder or under the name of the publisher??”

  7. Pingback: Misconceptions about the Windows Runtime in Windows 8 | mattdweihl

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s