This post explores in details some of the Windows 8 Development Tensions. As with any massively new system, tensions inevitably develop as new features are enabled and some older APIs and programming libraries are deprecated and even abandoned.This is particularly true in the case of Windows because for well over a decade the Windows goal has been to be highly backward compatible. With the adoption of Metro Interface with its reliance on a Touch APIs and more intensive Asynchronous programming, the ability to deliver the traditional Windows backward compatibility pledge will be stretched to the limit.
Nowhere will this tension be more obvious than in support for Touch programming. The screenshot above is a list of the core Multi-touch gestures in Windows 8. This is taken from a slide from the September 2011 Build event. Note that only 2 of the core touches are multi-touch events. And of course if you have seen the Apple patent applications
for anything and everything fingered or otherwise moving by a screen, you know touch has become as rococo as a Renaissance painting The above is a partial set of Apple Single-touch patent applications. There are many more gestures for two, three and various combinatiion of fingers. So what this post will attempt to do is 1)identify what Windows 8 offers in its Win 8API as the complete set of basic Windows multi-touch gestures and then ascertain how many of those Win8 API calls are available to Desktop programs and which are reserved exclusively for Win 8 Metro apps.
But before doing so let me report that some of the favorite Windows 7 and earlier keyboard combinations [think CTL+ALT+DELETE]are alive and well in Windows 8 as reported by PC Magazine. Also the W3C has proclaimed on Touch as well.The W3C Touch Event Recommendation is out of committee as of December 15 2011 and is awaiting approval. The Touch Event recommndation supports keyboard + touch events for the ALT, CTL, Meta, and Shift keys. It specifies 4 touch events:
touchstart - when the user places a touch point on the touch surface ~ mousedown
touchend- when the user removes a touch point on the touch surface ~ mouseup
touchmove - when the user movess a touch point on the touch surface ~ mousemove
touchcancel – when a touch point has been disrupted in an implementation-specific manner, such as a synchronous event or action originating from the UA canceling the touch, or the touch point leaving the document window into a non-document area.
Now each of these events can set the touch attributes for any HTML tag declared touchable. Such touchable DOM objects become touchTargets and be tracked by the eventlisteners for the 4 touch events. As well every touch event creates a Touch interface and a TouchList interface object. The Touch interface object describes an individual touch point for the associated touch event. The Touch attributes are:
clientX of type long, readonly – the horizontal coordinate of touch point relative to the viewport in pixels, excluding any scroll offset;
clientY of type long, readonly – the vertical coordinate of touch point relative to the viewport in pixels, excluding any scroll offset;
identifier of type long, readonly – an identification number for each touch point. When a touch point becomes active, it must be assigned an identifier that is distinct from any other active touch point. While the touch point remains active, all events that refer to it must assign it the same identifier;
pageX of type long, readonly – the horizontal coordinate of point relative to the viewport in pixels, including any scroll offset
pageY of type long, readonly – the vertical coordinate of point relative to the viewport in pixels, including any scroll offset
screenX of type long, readonly – the horizontal coordinate of point relative to the screen in pixels
screenY of type long, readonly – the vertical coordinate of point relative to the screen in pixels
And that is all she wrote at W3C so far on touch events [see here for programming examples]. Now this is only the Web standard for Touch [and it is still not approved]. But look what is missing. There is no attempt to define standard elements of gestures. There is no s-index for different touch surfaces. And finally all the work of identifying all the multi-touch movement and timings are left up to the UI programmer. And thus we see the so-called W3C minimum or base level of support for Touch. So what the Windows 8 API brings to the table for UI programming will be of no small interest.
What Windows 7 Supports in Touch Processing
Trying to find out what Windows 8 supoorts for touch processing in using the Desktop interface has been a torturous process. What provides some insight is what Windows 7 currently supports in Touch programming. The reasoning is that what is available for Windows 7 Touch programming will surely be preserved for Windows 8 desktop programs and their Touch Programming. But given the commitment of Microsoft to the Metro Model for Win 8 Touch programming – that may be a bad assumption in the future.
Nonetheless, there is good news based on the Windows 7 support of Touch programming.
This figure was so big it was impossible to capture in its entirety. The good news, Windows 7 Touch supports all of the Windows 8 core Touch gestures/operations. What this figure omits is the Win 7 support for Press and Hold plus a variety of Single touch point Flicks.
In addition Win 7 Touch programming provides for multi-touch points, sophisticated multi-touch manipulation detection, and measuring/responding to inertia changes in touch operations. Clearly these programming capabilities means that Windows 7 Touch programming goes well beyond the Win 8 Core Touch operations. Now what remains to be determined is whether these Win 7 Touch programming capabilities are preserved or modified or deprecated/lost in Win 8. If you read the Magenic paper on Win 8 Development, they suggest that the Win32 support necessary for Win 7 Touch programming is intact – for the time being.
The Tension Point – Windows Deskop Programs Versus Windows 8 Metro Style
Magenic has clearly depicted the point of conflict as shown in this screenshot:
Desktop Programs from Windows 7 , Windows Vista and before have available the Win32 API so they can be modified and updated to run in Windows 8. But if run through Win 32 they will continue to have the old look and feel. The old look of Windows is menu, chrome such as the Win32 container often with, tilebar, menubar, scrollbars, , icon or ribbonbars, and various subpanels. It is dense and can easily be hard to learn and/or remember how to use. Think 3 deep menus in Photoshop and Eclipse with constantly changing property bars with different icons. These are sometimes referred to as UI “barnacles.” The new Metro Style in contrast is promoted as intuitive, ‘fast and fluid” in its navigation and borrows not only from Apple iOS but also Windows Phone 7.
The new Metro Style Apps have “first class status” in Windows 8. They appear in the default desktop view when Windows 8 boots up. They have markedly different development API, WinRT but rely on the many of the same languages and development tools that have been used for Win32 development. Here are the development choices confronting a Windows 8 developers:
If you use the WinRT API on the left your App will conform to the Metro Style look and feel and the API calls, sandbox model and asynchronous processing make the code significantly different than that developed with Win 32 API even though the programing languages and data connections may be quite similar The libraries and structure of the programming are different. Again, see the Magenic analysis for the key differences in the two approaches. Also consider that Microsoft will likely not want to support these two different APIs indefinitely. There has already been talk of Win32 being deprecated. And it is exactly this draconian split that has some Windows loyalists up in arms.
The Rising Tide of Windows 8 Discontent
The following is a sampler of remarks made by Windows developers and loyalists who vary in their support for WinRT and Metro Style. In general a common theme is that Metro Style works well for tablet and smartphone apps which concentrate on games, messaging, and media consumption. However, Metro falls short for complex transactions or content creation where multi-window, multitasking and raw computing power with good response time are the order of the day. Photoshop-like photo-editing, Visual Studio program modification/creation, database online transactions for ERP or Accounting. manufacturing operations scheduling, and financial risk analyses are all vital, high impact tasks that prosper in a rich Win 32 Desktop setting; but are fish out of water in Metro Style Apps.
2 for 1: Can Windows 8 satisfy both the desktop and the tablet? – by Peter Bright, ArsTechnica
Peter sets the stage well showing how after trying largely unsuccesfully for 20 years at a tablet interface, Microsoft had to do something radically different. And Metro Style is that. It is marked by several departures from the traditional Win 32 Desktop interface: always full screen; no windowing except for the app tiles in the Start Screen; popups, panels, child windows are all banished. So too are most icons – especially faux 3D and now Aero Glass. The most Windowing you can have in Metro is an asymmetric fixed proportion side window but that requires a display with a minimum of 1366×768 or higher. Metro is Windows without Windowing.
Metro reduces toolbars, menubars, property bars, icon bars and other barnacle bars to one App bar hidden at the bottom of each active app and brought up by a swipe.Can you imagine an AutoCad or Visual Studio as a Metro App? Now you are getting a feel for the discontent in some parts of the ISV community over Windows 8. Windows 8 Metro serves very well the touch and tablet community – but do you truly get 2 for 1 as Peter asks.
Multitasking in Metro is also severely “chaperoned”. If yours is not the upfront, fullscreen active app, it will be overtime first suspended, and then terminated – particularly if the list of concurrent apps increases over a threshold number. Switching contexts, also changes in Metro because a keyboard is assumed not available. Thus all those venerable function keys, ALT-Tab, and CTL+ALT+DEL combos now have various corner swipes left, right, up and down with new meanings or access to control icons in the Metro interface. However, the Metro interface does respond to 20+ keystroke and some mouse actions. And Metro just treats a mouse, if present, as a single finger with a few exceptions. In sum, the Metro interface is geared to finger touches primarily and a single active app. Metro is smartphone and tablet oriented – single-tasking primarily.
But not so in the Desktop interface which can be thought of as the Windows 7 Preserve. TheDesktop Interface is the place to go for those millions of unique, Windowing programs that have served the Windows monpoly so well for over 20 years.Keyboard, mouse and some touch are allowed in the Windows 8 . And this is where the beef is.
RIP Aero 2003-2012 – by Paul Thurrott at Windows Supersite
Paul takes the recent announcement of the demise of Windows 7 Aero interface to reveal a more fundamental concern with Windows 8.
Rest in peace, Aero. I liked you, a lot. Still do. And I’ll miss you. I’m curious why Windows 8 can’t simply include Aero themes in addition to something flatter and duller, especially for those desktop PC-using power users who will primarily use the desktop environment and not care about (let alone need) better battery life. But I’m starting to see more clearly what’s happening here and starting to accept that Windows is growing into something that isn’t so much for me anymore as it is for some mythical tablet user base that may or may not appear in the future.
That brings me back to my central complaint about Windows 8 generally and Metro specifically: This is a neat thing that Microsoft’s building, it really is. But it should have occurred in something outside of Windows. (It should have been just Windows RT, minus the desktop.) Windows 8 isn’t even Windows anymore. It’s a tablet OS that’s been grafted onto Windows like a monstrous Frankenstein experiment.
And, no, I’m not being petty here. In any technological migration, there are winners and losers and, sometimes, a majority of users who are unknowingly financing the move to something different. In the 1980’s, for example, the Apple II business kept Apple alive while it foisted money-losing Macs into the market until desktop publishing arrived to save the platform and, ultimately, push the Mac well beyond the Apple II.
The migration to Windows 8 is just like that. Today, Microsoft boasts of up to 1.3 billion active Windows users. Windows 8 is not for them, not for the most part: We get a few bones, like Storage Spaces and quicker boot times, but the desktop environment is pretty much just Windows 7++ (or Windows 7+1 for you non-programmers). But it is those very users who don’t want or need tablet functionality that are financing Microsoft’s push towards an OS—that is not really Windows—that will replace what they’re using. Maybe not in Windows 8. Maybe in Windows 9, or 10. But eventually.
Hear the fears of deprecation and dissappearance of Windows Desktop? See this post for a detailed enumeration of Paul’s concerns.
Windows 8 Metro found wanting - by Chris Boss at BetaNews
Chris Boss, a developer of Windows based Power Basic writes of more fundamental concerns with Metro. He like Paul feels that the Desktop Interface has been shorted especially around Touch operations. Also he is vitally concerned that Touch operations in the Desktop just do not work properly:
My first concern is about backward compatibility for desktop applications and so far I am very pleased with the Windows 8 Consumer Preview. It even fixed one flaw I found on the Developer Preview (with layered windows), so that was good. Windows 8 has proven to be very backward compatible with lots of WIN32 code I tested and as far as I can see, the Windows API is alive and well.
There is a very big difference between using touch and the mouse when it comes to legacy applications, so be prepared. Some of the Common controls in desktop Windows (WIN32) are not well-suited to touch and would benefit from some serious reworking….Don’t expect to be happy with all of your current applications, if you use them on a touch device. As a programmer, my personal view is that desktop applications need to be rewritten or modified for the touch environment.
In a second article Chris describe a 6 point plan that reflect some of Paul Thurrott on how to make Desktop Programs more useful in Windows 8.
Will Windows 8 Fall – TimBajarin at PC magazine
Tim has been a keen observer of the PC scene for 25 years and he sees som Windows Bob, the failed simplified version of Windows 95, in Windows 8. The major concern is that without Touch capability, Windows 8 does not have enough mouse movement or keyboard assisted equivalents to propery navigate in the Windows 8 Consumer preview. This party can certainly confirm Tim’s observations. So without Touch enablement in the PC hardware, Windows 8 is less than stellar.But there is a problem.
. Now, Microsoft is trying to push the OEM vendors to put touch screens on all new laptops and PCs. They are resisting, however, because doing so adds at least $100 to $150 to the user cost of the device. That would mean OEMs have to pass the cost on to the customer, making these computers more expensive.
There is now talk of a rush order on special trackpads that can accomodate Touch operations; but this falls into the Mac OS/X booby trap – no real productivity with touchscreen operations.
Microsoft Screws Up Windows 8 – by John Dvorak at PCMagazine
John wites for Marketwatch as well and generally has been sympathetic to Windows. But he thinks like Paul Thurrott that Windows for Arm should be its own OS like Xbox 360. So John is not happy with the name and more importantly the lack of Media Center capabilities across the Windows 8 Line. His argument is that Media Center is the defining App for tablet consumer oriented usage that Windows 8 is trying to make a hit in. But instead, Media Center is hidden away in Win 8 Pro edition. John’s logic is compelling.
Windows Frankenstein – J. Peter Bruzzese, at Infoworld
InfoWorld’s J. Peter Bruzzese, a steadfast Microsoft loyalist, finds himself horrified by Windows 8 Consumer Preview
Those who read my Enterprise Windows blog know I’m a staunch Microsoft defender. But based on the Consumer Preview, I have a new name for Windows 8: Windows Frankenstein. A monster in the making. Simply, the Windows 8 Consumer Preview feels stitched together. It tries and fails to smoothly integrate a new desktop Windows UI with Metro, the top-layer UI first introduced with Windows Phone 7. To mix metaphors, the combination yields an operating system with a multiple personality disorder: “I’m a tablet … no wait, I’m a desktop … I’m a tablet.” It’s horribly confused.
Does this sound familiar?
Does Mero Actually Work? – Mary Jo Foley allows Matthew BaxterReynolds answer the question at ZDNet.
Matthew fundamentally say NO. And the reson he gives is that design aethetic for Windows Metro does nnot allow for requisite information density:
I find Metro baffling. Granted, it looks beautiful — and I accept that you put a Metroified device in front of most people they coo and burble excitedly. Plus it has the significant advantage that even the most design-challenged geek can make something look pretty decent just by mucking around with fonts and solid blocks of colors. But it’s broken in two fundamental ways: information density and discoverability.
In the case of Information density Matthew use the example of the Twitter interface in Metro called FlipToast – it deliver 3 1/2 tweet per screen. Using the official Twitter client on the same screen delivers 8 1/2 tweets. Matthew then argues that Information Density limitations is one of the root causes of Discoverability problems in the Windows 8 Metro interface.
Personally I don’t think this is a trivial point. The only reason why any of us interact with digital devices is to access information. Deliberately designing software so that information is hard to come by is why I use the term “fundamentally broken” when I talk about Metro.
Metro’s problem with information density leads directly into issues around discoverability….When thinking about any user interface, we can notionally group different elements into primary, secondary, and tertiary functionality. Primary elements relate to the content that you’re working with, in this case, the page. Secondary elements are the things you need in easy reach. On a browser this would be the address bar, back button, and tabs. Tertiary elements are this things that you use rarely, like history or settings.
Because Metro is based on this principle that the interface has to be “clean”, secondary control elements are shoved away and hidden with tertiary elements and so in Metro you only get two levels of UI element – “the basic data” and “hidden away in some virtual drawer, a bunch of tools”. Using Metro is like having to put your keyboard an mouse in a drawer every time you’re not directly using the computer. It’s constant “go and get this” and “go and get that”.
Finally we will let Preston Gralla at Computerworld summarize with A deep dive into Windows 8 Consumer Preview
Preston summarizes the pro and contra rather well:
Windows 8 Consumer Preview is one of the biggest changes that Microsoft has made to Windows, moving it from an operating system aimed at a single class of hardware (PCs and laptops) to one that spans a wide range of devices, including desktops, laptops, tablets and smartphones.
It’s a gamble that only partially pays off. For tablets and smartphones, the new Metro interface is a clear winner: beautifully designed, simple to use, function-rich and offering a wealth of apps that bring information directly to users rather than requiring users to search it out.
For owners of traditional Windows-based computers, however, the results are mixed. Metro isn’t as easy to navigate with a mouse and keyboard as it is with touch. In addition, the Windows Desktop is less useful in Windows 8 than it was in previous Windows versions for a number of reasons — notably because the Start button has been taken away. As a result, Windows 8 feels like a transitional operating system, uneasily bridging the gap between traditional PCs and tablets, with more attention lavished on the latter.
This a broad range of commentary from some of the most popular IT websites and from some decidedly pro-Windows enthusiasts. And the arguments revolve around Touch and the adequacy of the Metro Interface. Touch is critical to a good experience in Windows 8 yet it appears to be orphaned twice. Touch is inadequately provided for in the Desktop interface, Chris Boss concerns are fundamental: touch does not work well with many Win 32 controls. The second problem is that OEMs appear not prepared to supply Touch screens for laptops and desktops because of cost concerns.
The other major problem is the Metro interface – it has been lavished with a premier role in the new Windows 8 but its design motif may be fine for consumer oriented, one app-at-a-time tablets or smartphones; but woefully under-powered for information dense business and analysis-to-creation tasks. Microsoft’s one consolation – neither is the iPad and iOS. Our next post will look at how Microsoft is responding to these tensions/critiques and what pragmatically can be done.