Jerry Nixon on Windows

Thursday, December 20, 2012

Hey IT Pros! What developers already know about Windows 8

Remember how Star Trek 2: The Wrath of Khan ended? Spock saved the Enterprise but died from radiation exposure. Fortunately, Spock mind-melded with Bones before his famous “I am and always will be your friend”. That’s how Kirk restored Spock’s Genesis Planet copy in Star Trek 3 (man, I hope that wasn’t a spoiler for anyone).

Well, Microsoft has been mind-melding with developers since Windows 8’s 2011 unveiling. Why? Because it’s a big deal. Because the development model is different. Because the languages are different. Because design is different. Because device support is different. Because deployment is different. And, so much more.

Today, we have trained up our developer base and many traditionally non-Microsoft developers. They know those core concepts. Now, when Spock melded with Bones I thought to myself, “I would love to have that knowledge.” As an IT Pro, you might be thinking the same about Microsoft’s meld with developers. How are you going to get what developers already have?

Lucky for you, I am one of Microsoft’s Spock surrogates. Over the past year and a half, my colleagues and I have melded with thousands of developers. I have revealed the realities of Windows 8 and the strategies surrounding it. And, this article is a summary of the core ideas.

What developers already know about Windows 8?

And, to keep it cheesy, I made it a list of 8!

1: Desktop

Windows 8 is the next version of Windows 7. That may sound obvious, but given the language we use at Windows 8 events you might think it’s a whole new animal. But Windows 7 desktop applications run on Windows 8 just fine, and potentially better because of tuned processing and memory management.

Other than an absent Start button, the Windows 8 desktop is identical to Windows 7. The .Net Framework has revved to 4.5. It’s a smaller runtime and natively supports asynchronous programming, parallel computing, and real-time communication. But it’s still just .Net. So, when developers look at their options to build Windows desktop applications, the list is the same in Windows 8 as in Windows 7: Web Forms, Windows Forms, and Windows Presentation Foundation.

My first slide in every Windows 8 presentation reads like this “Everything that runs on Windows 7 will run on Windows 8”. It quells a lot of fears and, best of all, it’s true. Your apps, like Quicken, run fine. The development team can keep on building. And, your six million dollar investment into that line-of-business application carries right on over without a squeak. If there’s one thing Microsoft does right, it’s backwards compatibility.

2: Gestures

Windows devices aren’t the first to be touch-enabled, you know. We have competitors. Thankfully to them, many touch gestures have become ubiquitous, like: pinch zoom, panning, and tapping. As a result, some techniques to navigate Windows 8 with your finger are a matter of knowing how to use your smartphone. But we also introduced new gestures and they have to be learned.

I like to compare this to Alt-Tab. What a useful keystroke. It’s the easiest way to navigate through a cooperative multi-tasking environment like Windows. But now consider where you learned Alt-Tab. Can you remember the day? Probably not. It’s just a gesture you know. But you learned it, that’s for sure. If you had not learned it, Windows would not have been as great.

It’s the same with touch gestures. There are some new ones we created, like: swipe from right to reveal the charms, push down to select and drag down to close. Users will simply have to learn these new gestures to get the most out of Windows. And, as I tell developers, don’t create your own. Let us spend the millions of dollars in marketing and training to teach users how to use Windows and Windows apps.

So there’s this video on YouTube where this high-tech son lets his low-tech Dad try Windows 8. It’s tragic. The son should be ashamed. Here’s what I mean: Dad loves the Start menu but can’t find the Start button. Why didn’t his son step in and help? Dad didn’t know the gesture.

Dad could have tapped the keyboard Windows key. Dad could have moved his mouse to the bottom left corner. Dad could have swiped open the charms (where the Start button now lives). He could have hit CTRL-Esc. In fact, I have counted 8 ways to uniquely reveal the Start menu. But did that son help is Dad? No.

In one second, the son could have told his Dad the gesture. And, Dad would never forget something so simple. It’s like Alt-Tab. You have to learn it. So, yes, there are new gestures. No, they are not all obvious. And, certainly, they will have to be learned to get the most out of Windows 8.

3: Start

It would be a little misleading to say that Windows 8 is a simple upgrade to Windows 7. There are a lot of underlying differences to the kernel and OS that make it more reliable, faster, and more manageable than ever. But, at the same time, it is wrong to overstate how different it is.

In Windows 7 we had that little Start menu on the bottom left. You click Start and there it is. It showed you your apps, settings, and files. It let you search. In Windows 8, the Start menu does the same. The function is the same and the keystrokes are identical.

The real consumer difference in Windows 8 is the full screen Start menu. We’re all too smart to believe that’s the only difference, but if you let yourself believe for a minute – it’s true. The fundamental change in the Windows UI is just that the Start menu is full screen. That easy.

A full screen Start menu is finger-friendly. But to developers, the important nuance is that applications can run inside the Start menu. The Start menu is an execution shell. And apps running inside the Start menu are full screen and finger-friendly, too.

4: WinRT

Writing an app leveraging WinRT means it runs on x86 devices and ARM devices. That cross-architecture capability is a real selling point for WinRT, but it’s not the only reason WinRT was created.

Is this another .Net? Before I get started on the Windows Runtime, it’s important to say that WinRT is not the replacement to .Net. In fact, where .Net is a framework, WinRT is just an interface. .Net is a collection of namespaces and base classes to make development easier and more productive. In the following paragraphs, you’ll see that WinRT has a far different purpose. And, .Net is safe and sound.

Desktop applications are dangerous. In a millisecond they can wreck a hard drive. In a nanosecond they can corrupt the registry. The only desktop application you can reliably install is one written by trusted publishers. How can we create an ecosystem where INSTALL isn’t an act of faith?

Desktop applications are greedy. If I want my computer to run fast I can’t have a program gobble up my memory. If I want my computer to run smoothly I can’t have a program goggle up my processor. How can we create an ecosystem where applications don’t kill user experience and system reliability?

Desktop applications are pushy. If they want to talk to the file system or some USB device driver, they just do it. If you want to restrict an application, your only real option is to uninstall. How can we create an ecosystem where applications obey user permissions and revocations?

The answer is WinRT – a Runtime and interface to the device and the operating system.

WinRT is sandboxed to prevent applications from wrecking a system or other apps. The list of what applications can’t do is long. As a result, users can confidently install a Windows Store app without first considering a system-wide backup. Windows Store apps are safe.

WinRT is asynchronous to prevent applications from locking the UI thread. Interacting with anything that could theoretically take more than 50 milliseconds is mandatorily asynchronous. As a result, users have excellent experiences in Windows Store apps because they are friendly.

WinRT is brokered to ensure application capabilities align to user’s permission. Applications can use whatever capability a user’s device has. But, WinRT restricts access to any capability the user revokes from the app. Windows Store apps are trustworthy.

About the name: WinRT isn’t the same thing as Windows RT. Windows RT is the version of Windows 8 that runs on ARM. WinRT is the runtime on and through which Windows Store apps interact with the device and the operating system.

Desktop applications can be written in native C++ and .Net languages like C#. Windows Store apps support native development with a language extension called C++/CX. They support .Net languages with the .Net Framework for WinRT. But, Windows Store apps can also be written in JavaScript. The IE10 JavaScript engine (once called the Chakra engine) and HTML5 rendering engine (once called the Trident engine) have been extracted and made to present JavaScript apps natively inside the Windows Runtime.

Why JavaScript? Traditional Microsoft developers are either C++ or .Net developers. Non-traditional Microsoft developers are often JavaScript developers. Windows 8 is an effort to expand the Microsoft development ecosystem to non-traditional developers. This troika drives that agenda without leaving traditional Microsoft developers behind.

WinRT is projected. This means its classes and interfaces are presented to more than one language in that language’s appropriate syntax and data types. C++ data types aren’t .Net data types, for example. But when either language uses WinRT, they see their native types. The same is true with JavaScript. And, since projection is in parity across languages, developers don’t have to compromise app capabilities by choosing one language over another.

A Windows Store app in JavaScript (we call these Windows Web Apps or WWA) uses WinRT to talk to the device and the operating system. It surfaces as a simple JavaScript library. Developers can use any other library (like jquery, node, knockout, etc), too. And, since Windows Web apps use HTML5 for their UI, developers leverage the skills they already have to build excellent experiences.

5: Design

Since most developers are left-brained nerdy types (you know the kind that reference Star Trek in all their examples), talking about the emotive qualities of their software isn’t as easy as it sounds. But Windows 8 embraces the design language refined by Windows Phone. And, it’s awesome.

In fact, Microsoft is the first company to have a unified design language across every single platform (embedded, Xbox, phone, Windows, and web) – that’s something since we probably have more platforms than most. Everyone else in the industry is now following us. It’s nice to lead from the front again – hopefully, for a while.

You mean Metro? I want to have an aside about Metro. During the early days of Windows Phone we called our design language the Metro style. But, that codename has been DROPPED. Now we call it the Windows style or the Windows design language (those are interchangeable). And, we build Windows Store apps. Lots of early-adopters fell in love with the Metro term. They’ll just have to deal. It is what it is.

The Windows design language is based on a minimalistic, Bauhaus-like style. It’s clean and full screen. Windows style is authentically digital with little affordance from the physical world. That means we coach developers to embrace that they are writing software and avoid replicating a leather journal or spiral notebook. And, the Windows design language is about quality. That means we design user experiences, not simply user interfaces.

In fact, I often walk through some of the Windows design pillars:

Pride in craftsmanship

Authentically digital

Do more with less

Fast and fluid

Win as one

So, it’s been a lot of design training. And, since most developers don’t have a formal design background, it’s been a challenge to get developers to think differently about their software. But the early birds in the Windows Store have lead the way and raise the bar with exemplar apps. From this point forward, the telling attribute of Windows apps is excellence in design.

6: Lifecycle

ARM is certainly a less powerful chipset than x86. So, how do we get apps that run great on x86 to run great on ARM? One strategy is through the Windows 8 app lifecycle. If you understand the Windows Phone app lifecycle you have a head start. Developers can ignore this lifecycle pattern and write a mediocre app, or embrace it for an excellent app.

Picture a deck of cards. There is only one card on top, right? Apps in Windows 8 are the same. They are stacked on top of each other and only one is on top. And only the top app is running. What I mean is, every other app has its threads suspended. The kernel is no longer scheduling processor operations for them. As a result, the top-most app gets all the memory and all the processor. Nice.

This also means developers have to think about their apps differently. Long-running apps that crunch big numbers either get offloaded for cloud processing or they aren’t good Windows Store app candidates. Not only that, but suspended apps might be terminated without warning if Windows determines resources are running low. Developers simply have to plan for this new lifecycle strategy.

To handle certain operations while an app is not running, there are Background tasks. These aren’t like Windows Services. Background tasks interact with the device and the web, updating certain parts of the UI app. But, they have constraints. Developers must re-think their assumptions.

In either case, Windows Store apps aren’t run-of-the-mill apps. They are cross-architecture. And as a result of their lifecycle and other improvements, performance and battery life are awesome.

7: Enterprise

The enterprise story for Windows 8 is pretty solid. Because it is Windows, it is the most customizable, secure, and manageable operating system in the universe (I think). So, System Center, et al still keep your Windows devices under control.

Cloud-based Microsoft Intune is another cool management product; it’s perfect for smaller businesses and managing “bring-your-own” devices like the Surface RT. Intune and System Center are close friends. They can both manage and handle application deployment. It depends on your strategy.

Speaking of the Surface RT. That’s our tablet that runs Windows RT – the version of Windows 8 running on ARM. Windows 8 on any tablet is real candy to an IT Pro like yourself. Why? Consider the ongoing problem of Executive Leakage.

You know the story: you are sitting in some meeting when Joe Executive walks in with his toy du jour. Was it his birthday? Did he just buy it? Who knows? The reason you are sweating is because you know he’s going to ask you to support it. You were wrong. He demands you support it. Well, frak.

You know you can’t reliably manage that thing. You know you can’t reliably secure that thing. But does that matter to Joe? Nope. He goes ahead and wantonly fills the unsecured device with his corporate email and internal data. Did he listen to you? No. And now your network is… diluted.

This is Executive Leakage. And thanks to Windows 8, IT Pros like yourself now have a viable alternative to suggest, deploy, and standardize on. And because it’s Windows, you can customize it, manage it, and most importantly you can secure it.

What’s not part of the Windows 8 enterprise story is the carte blanch conversion of all your company’s line-of-business desktop applications into Windows Store apps. With the investment you’ve already made in your LOB systems, perhaps a companion app is appropriate. Perhaps a business intelligence dashboard is appropriate. But nobody is prescribing that you deprecate everything on the desktop. End of speech.

8: Store

Add this up for me: we’ve sold around 700M Windows 7 licenses. The hardware requirements for Windows 8 are less than Windows 7. That means the upgrade-to-Windows 8 opportunity is high. There are maybe 5 or 600 Windows XP machines out there. We’ve ended support. And their hardware end-of-life is surely approaching. That means the upgrade-to-Windows 8 opportunity is high. It is estimated that 400M new PCs will be sold in the next 12 months. That means the opportunity for new Windows 8 devices is high. You do the math; what’s the potential? Survey says: bunches.

So, the Windows Store allows Windows Store apps to be deployed to x86 and ARM devices seamlessly. It also processes updates seamlessly. It also processes payments for apps seamlessly. It also processes in-app purchases seamlessly. All this in 200+ markets, 70+ languages, 45+ currencies, and with the most generous revenue split in the industry.

When I speak to developers I say it like this: We’re Microsoft. Our Windows Store is going to be big. You are at the front of the line. You can make the most of this situation. Don’t let it slip away. This is one of those times you will look back on. Don’t let it be in regret.

I know that’s a little heavy-handed, but there’s nothing but truth in it. If you have an app and hope to make money by selling it, selling in-app purchases, or monetizing with advertising – a developer’s opportunity today is astronomical.

Conclusion

Okay. That’s a lot and, of course, there is more. But with it all, developers must remember these new gestures, leverage WinRT, build with good design, and handle the new Windows 8 app lifecycle. Considering the robust certification process, it’s hard to cut any corners. I realize it’s not easy, but we’re not splitting the atom, either.

This forthcoming proliferation of apps is a happy dream to IT Pros like you. Instead of cluttering machines, they are a clean install and a clean uninstall. Their ability to tamper with a machine is wholly mitigated. And, your ability to manage them, monitor them, secure them, and enforce corporate policy isn’t compromised in the least.

Remember Star Trek 3: The Search for Spock? In that documentary (just kidding), the Enterprise crew returned Spock’s Genesis copy to Vulcan where he could be rejoined with his consciousness. Until that time, Bones was plagued with a second personality. Though comical for the movie audience, it seemed excruciating for his crotchety character.

You don’t have to be like Bones on Star Trek. Nobody is asking you to be an IT Pro and a developer. You’re a great IT Pro. Do what you love. But there are things you know as an IT Pro that help you. There are also things developers know that help them. Now you know it all. And, knowing is the battle.

Hey! I'm Jerry Nixon, a Microsoft Engineer in Colorado. If you are into development, you are at the right place. I blog, I teach, and speak; should you see me out somewhere, say hi! Thanks for your visit.