Tuesday, September 20, 2011

Metro Business Apps

At //build/ we learned that Metro is for content-centric “immersive” apps and Desktop is for data-centric “enterprise” apps. Jensen Harris said it in his 8 traits of great Metro style apps. Joe Stegman repeated it in his talk, Metro style apps using XAML: what you need to know. That’s the Microsoft party line and outsiders have been repeating it.

Don’t believe it. The real world doesn’t honor marketing boundaries. Expect to see data-centric applications appear on Win 8 almost from the moment of release.

Why am I so sure? Because the same divide has been crossed elsewhere. You’ll find business applications on the iPad today. Is the iPad any friendlier to enterprise apps than Metro? Tell me how … because I don’t see it. I don’t see any way to keep business applications out of Metro.

They tell us “Metro is optimized for immersive content-centric apps”. Well Viagra was optimized to treat hypertension. What’s your point? What is more “immersive” than a business application that fills the users screen for hours at a time?

I had lunch today with one of our long-time customers. They showed me their iPad port of their DevForce-based Windows Forms desktop application. It’s almost a complete port and they don’t foresee any barrier to finishing the job.

It looks remarkably like a typical Windows Forms app: the same gray background, same simple icons, same grids and forms over data, same tabbed interface. They made adjustments of course to accommodate touch and asynchronous server communications. There was no attempt to fancy it up; it doesn’t pretend to be a typical consumer facing iPad app.

Customer acceptance has been fantastic … because it does the job in a familiar way. We could talk about UX design all day and it wouldn’t change a thing. The UX app is exactly what users expect. And not just existing customers; the iPad version appears to be driving new sales.

What could keep them – or anyone – from porting to Metro WinRT? Three obstacles come to mind.

  1. Must deploy with the Windows Store
  2. Metro app certification
  3. Paucity of data-centric features

Our customer could leap these hurdles effortlessly.

Windows store deployment

I’m mildly concerned that there is no substantive enterprise deployment story. Ted Dworkin mentions it once in his talk, Introducing the Windows Store, before returning to the talk’s thesis:

We have an enterprise story that supports their unique needs … but fundamentally the Windows store is the only place that Metro-style apps can be acquired. (11:20)

I can hardly wait for that “enterprise story”. Big companies simply will not deploy their apps through a Microsoft store. I hope that Microsoft talks sensibly about an acceptable alternative – probably in the form of an enterprise store – within the next six months. I’ll take up this subject in a later post.

However, smaller companies may not be inhibited by the lack of private store. Our customer delivers its iPad client as a free app via the Apple store. Anyone could download it … but only their customers actually would. You can’t do anything with it unless you’ve first deployed the companion backend server; you acquire the server and pay for that server separately.

Metro app certification

Apple’s iOS interface guidelines run over 100 pages. Yet our customer passed Apple’s certification with a Windows Forms UI. Would it pass Win 8 Metro App certification?

It wouldn’t pass the Windows Phone certification which dictates fine points of UI style such as application navigation. We don’t have a software certification guide for Metro apps. But we have some clues sprinkled among the //build/ talks and we have the example of applications shipped in the preview.

My reading is that the Metro specs would not adversely constrain a business application experience – even if the application looked like a Windows Forms MDI application. I saw rules about screen and image resolutions requirements. I didn’t seen anything that dictated how I use the back button. I can’t have a child window; I can overlay the screen with some something that achieves a modal dialog effect. The keynote on Day 1 demonstrated conversion of Scott Guthrie’s Silverlight business app. I look at the Metro version of Internet Explorer and I know I can write a conforming business application.

Missing data-centric features

The Metro preview and sample applications emphasize content consumption. There are essential input controls such as textboxes, radio buttons, list boxes. But they appear to have forgotten about data grids.

if you follow this space, you remember that I dislike data grids; I think they’re a design cop out. That’s my opinion, shared by a tiny minority; the rest of you want your data grid … and you should have.

The Validation attributes in System.ComponentModel.DataAnnotations are missing as are related interfaces such as IDataErrorInfo and INotifyDataErrorInfo. Apparently, in it’s wisdom, Microsoft thinks that client-side validation of input is unnecessary even for consumer apps. I hope they reconsider before release but we’ve survived without them before and can do so again.

Why would you want to build a Metro Business App?

Metro apps will only run on Windows 8 (and later … if you’re the optimistic sort). I’m guessing Windows 8 won’t release until this summer of 2012. Most companies have not yet or have only recently adopted Windows 7; optimistically, a significant number get to Windows 8 late 2013. Most of us don’t write software today for first deployment in 2013.

The Windows 8 tablet is the wild card. If it has the hoped for reception in 2012 it could be a factor in driving Win 8 into the corporation … not as a replacement for existing desktops but as the viral alternative to the Apple iPad. We can dream, right?

If the Win 8 tablet is a hit, you’ll want to be on it … and not just in the blue “Desktop” stack. Some reasons:

  • ARM tablets, with their better battery life, could dominate. Metro apps will run on ARM. Desktop? They will probably only run on power hungry Intel tablets.
  • High performance Metro XAML in native code with GPU acceleration; Desktop XAML is managed code with more limited GPU support.
  • Ready-to-wear Metro Visual Studio templates.
  • Superior touch support and easier access to tablet hardware.
  • Win 8 “contracts” for integration with other Metro apps and cloud services
  • Better cloud integration facilitating “continuous applications” that move application state across devices as the user switches from phone to tablet to desktop.
  • Ride the software platform that Microsoft is promoting and evolving.
  • The “Hotness” factor … don’t discount it!

Those are big draws. Why should I toe the “Desktop for LOB” Microsoft line when I can sneak into Metro and party with the cool kids?

Get ready for Metro

Whoa, cowboy. This is the time to pay attention to Metro … and little more. Right now I wouldn’t take my business application beyond exploratory stage in Metro or WinRT.

How would I build production applications? I’d write them in Silverlight until the fog clears. I’d write with a Metro mindset. I’d isolate anything in Silverlight that isn’t in Metro – hide it behind a service interface - so I’d be prepared to swap out the implementation later.

See Brian Noyes high-level discussion of what this entails in his post, “Silverlight Developers have the smoothest road to metro.

If I could I’d design all new screens to follow the Metro style guidelines. The Windows Phone 7 Metro style was crossing over to Silverlight design before Build; Win 8 should accelerate that trend.

If Metro is as successful in the consumer space as we hope, business applications will be written as Metro apps.

Fortuitously, I noticed that Rocky Lhotka agrees as he explains in "WinRT and business apps”.


Mike Strobel said...

There will certainly be immersive enterprise apps, but not very many at first I suspect (or at least not many which are "feature complete"). Most enterprise users will be stuck on earlier versions of Windows for the next couple years. I'm sure some smaller ISVs will try to cash in on the lack of competition, but I suspect the big names will be lagging behind or offering only minimal functionality to test the market.

David Nelson said...

"You’ll find business applications on the iPad today."

Perhaps, but not very many, and it certainly doesn't seem like that side of the market is growing very quickly.

I think the lack of windowing support in Metro will also be a significant drawback. There are exceedingly few apps that I use, including business apps, that I want fullscreen on exactly 1 monitor at all times. I either want them windowed, with the window size tailored to the content or to the way I want to work with the app, or I want multiple windows spread across multiple monitors, or something. Pretty much the only app that I run fullscreen on 1 monitor all the time is Outlook, and even then I like to keep other windows open in front of it, leaving it in the background so that I can quickly glance at incoming emails.

Admittedly I am speaking primarily from a desktop user's perspective. I have not made the leap to a tablet yet, nor do I develop for tablets. Perhaps in that specific market Metro business apps will gain more traction. But I think the idea that you can write a business app and have it work on a tablet and on a desktop is garbage. I would never dream of limiting my desktop users to a tablet experience that way.

Roonster said...

I've been wondering the same myself. You put forward some good arguments for why LOB apps may appear in Metro. However, I think the main thing preventing serious apps appearing in Metro is the the fact that there are restictions over things like access to the file system, sockets etc

Ward Bell said...

Thanks for the comments. I'll follow up with my thoughts shortly. Right now I've got fires to put out :)

Ward Bell said...

@Mike_Strobel - I share your prediction about the long timeline for wide Windows 8 enterprise adoption. Business apps will remain PC apps running earlier versions of Windows for years to come.

But I'm saying something different. I'm saying that when enterprise developers build apps for the tablet, they will build Metro business apps; they won't be pigeon-holed in the "Desktop" stack, removed from the Metro experience.

Here's how I see it playing out. If the tablet gets some traction as a personal device (and this, I admit, is a huge "if"), then managers as well as ISVs will want to see the app running on the tablet.

I'm taking my cue from the clamor I hear for iPad versions of Windows business apps. The clamor will only get louder over the next year as more and more LOB apps develop an iPad presence.

Now imagine that the Win 8 tablet launches in 2012 with high technical marks and even modest hipness scores. Every .NET business app developer is going to say

"Boss, it's going to be tough moving our application onto the iPad; we don't have the skills, time, hardware or experience to do it. But this Windows tablet is pretty cool ... it's not an iPad but it's cool. And we know how to get our app - at least some of it - onto Metro quickly. Please let us try."

The boss at first will prefer the path of least resistence which is to dump the entire existing PC app into the Win 8 "Desktop" stack. That will flop instantly because the apps aren't designed for mobile and will be barely usable on the touch-first tablet.

Fortunately, this will be a low cost mistake. The savvy enterprise developer will say

"Boss, I told you that wouldn't fly. But I can build you a Metro version covering the key functionality. Just give me a couple of months."

And some of them will get budget and time to try it.

.NET developers are going to have all of 2012 to make this case. Many will do it on the sly. Skunk works projects happen all the time at companies large and small. The mantra is "ask for forgiveness, not permission."

@David Nelson - I don't have numbers for iPad LOB apps. I don't know what you mean by "the market" for such apps; there is no market per se. I just know what my corporate customers tell me: that management wants the app running on the iPad.

You will note that I did not say there would be many business apps on either iPad or Win 8 tablets. I said there would be some ... and that Metro apps would be among them.

Your points about multiple monitors are well taken ... for an office environment. But I'm talking about the out-of-office environment, the mobile environment where there is only one screen and it's not that big. I am going to fill that screen with my CRM, Inventory, Asset Management, Field Inspection, or other sovereign app when I'm working on the road.

Like you "I would never dream of limiting my desktop users to a tablet experience." I am not suggesting that a mobile client would be an appropiate tool in the office. My phone isn't my preferred in-office email client either; it suffers in both functionality and usability relative to Outlook. But it's what I have when I'm in the field and it's optimized for my in-the-field email scenarios.

I expect the same dual-dynamic in desktop + mobile business applications.

@Roonster - I wish you would elaborate on those disqualifying restrictions. My Metro app will have access to sockets ... although I've yet to require sockets in my Silverlight business apps. Metro apps can read and write temporary internal state to isolated storage; all other business data belongs on a server, not the tablet. I haven't written a business app in ages that needed local file access for other than private, transient data. What am I missing?

chrisd3 said...

The giant pothole in the road is the background processing problem. If the user swipes you off the screen, you get five seconds to clean up your act, and that's that; you're suspended (and then Win8 can shoot you in the head whenever it feels like it).

So, any enterprise app--or any app, for that matter--that has to do any sort of significant computational processing is going to be in trouble.

If there's a way around this, I haven't found it yet.

Peter G said...

Y'know, there was a reason for the name *Windows*!
I develop LoB applications, and they all have, yep, lots of (non-modal) windows. I've yet to find any way of providing the kind of flexible interface my users want on any non-windowed platform, be it ajax/browser, Silverlight, or Metro. Maybe it's my lack of imagination, but I just can't see a way to do it.

Anonymous said...

Will a Metro app be able to kick off an app in the desktop stack?

Ward Bell said...

@Chrisd3 - I've been thinking for several days that Tombstoning is the most significant obstacle to migrating a Silverlight desktop app to Metro. You are correct that a Metro app is suspended 5 seconds after it leaves the main screen (e.g., you swipe in your email client) and could be evicted if the OS needs memory. This is called "Tombstoning" on Windows Phone; Windows Phone developers have learned to cope with it but it's a drag, an extra development burden you would not willingly impose on your desktop application.

I don't know how a Metro app could launch a long running process and keep it going while the app was off-screen. I observe that the Win 8 preview did not ship with a Metro media player. Consumers expect to be able to listen to music while they are working on something else. I infer that even MS is, as yet, unable to keep its own Metro app running in offscreen background (something they can do on WP7). Surely this will be addressed before release ... for MS apps. I am not counting on our ability to keep a background process going although I retain some hope for that as background tasking is a feature that was introduced in Mango.

Fortunately, most business applications don't require computationally intensive background tasks that run while offscreen. They can either punt to the server ... or side-step that feature by delegating it to the desktop version of the application. Remember that the point of all this is to provide a mobile experience for mobile work scenarios. I don't think we're asking the tablet app to do everything we'd expect of a stationary, in-office desktop app. For example, I don't expect to produce Camtasia videos on my slate.

@PeterG - May I direct your attention to Billy Hollis' justly famous staffing application example called StaffLynx. StaffLynx is a WPF app he demo'd in a DNR talk some years back. It's a great re-envisioning of the business application experience and remains relevant today. It's a deep, richly-featured, totally immersive business application without a window in sight.

@Anonymous - I don't know how to launch a Desktop app from a Metro app. They didn't explain how at //build/ and seem most concernted to emphasize the strong barrier (for "safety") between Metro and Desktop stacks. I am encouraged by the fact that Metro Start can launch Desktop apps directly (e.g., Task Manager and any apps you install in Desktop). Metro IE has a "button" in the app bar that launches the Desktop IE which immediately navigates to the current (Metro) page. Clearly Microsoft can do it; will they help us do it? I don't know.

Peter G said...

Thanks very much for the link - I like to see how other people do their stuff, and there's a lot of thought provoking material there to consider. Aesthetically it's very impressive, but if you strip away the eye candy, one key feature is that they seem to have re-created the Windows taskbar along the bottom of the window - now that's something that could be done in a browser. Other than that, they are in fact using the SL childwindow here and there, so it's not entirely 'not a child window in sight' Nevertheless that Camtasia demo is something I'm going to be looking at for inspiration again and again.

Ward Bell said...

@Peter_g Yes, I think Billy did a fantastic job. Sure, the UI/UX shows its age; the gradients aren't Metro and I'm not as fond of them as Billy is. But it is visionary and I'd like to see more folks take the lessons to heart. Let's move away from grids especially editable grids.

He may have used child windows (yes, I exaggerated) but he didn't have to ... there's nothing he's doing that is both important and requires a child window. Oh ... this was WPF, not SL, so strictly speaking he couldn't have used a Silverlight Child Window (gotcha! :D).

crackruckles said...

I have been playing around with the developers preview for a while now and i must say that for it to go into the business world Microsoft needs to fix allot of things. For starters dragging the screen up to access the login page, im just not sure how that is going to work with applications like bio metric logins etc. The windows live login thing although im fairly sure that can be turned off i think that will greatly affect how many people actually make the switch, i mean i know allot of people who will never ever get a windows live account because of bad experiences or just plain principle so to force them to have an account to login for the first time is just plain stupid. The Microsoft app store or what ever you want to call it is just a reboot of the app store that appeared in vista and failed, the thing that makes windows so good is the ability for anybody to write anything and distribute it without going through strict checks first, i know for a fact that the last application that i wrote would never get through any of the checks since i used old virus techniques to achieve what i needed. The administrator side of things needs to be greatly improved before any of the businesses that i work with would make the switch, since most of them still rely on the handy batch file and visual basic script to implement security features which upon testing i have found that most of the commands they use have been either Nerfed or removed so that's going to make there it department happy. It just seems like Microsoft when ahead and made the windows 8 without thinking of the end user or even the IT guys that have to manage it.

Just my little rant for the day, please feel free to correct me its pretty early in the morning here.

Ward Bell said...

Sadly I have to agree with you on almost all points. I'm begging them to invest a little more in enterprise support (see my post).

Whether they do or they don't, I have faith that we'll find ways to slip into Metro where we can. Insinuating ourselves where we're not wanted ... kind of a developer's specialty don't you think?

Francois said...

History repeats itself... Zoom back a few years and replace metro in your post by WPF and you'll be amazed that you actually time travelled! :) Point being? As a professional software developer you'll do in 2012-2013 what makes sense for your clients given their requirements. If that means using winrt for business Apps, then be it!

Anonymous said...

While technically, Metro is tied to Windows 8, its UI concepts will be duplicated entirely by browser apps. Look for enterprise apps benefiting from Metro guidelines to appear in IE long before employees upgrate to Windows 8.