Web apps get the ultimate endorsement: Windows 8
Web-style programming in the next-gen Windows is a radical break for Microsoft. But there are reasons to expect it'll help draw programmers, not just alienate them.
With the Internet's importance steadily gaining, it's not as if Web programmers needed an ego boost. But Microsoft has given them a major one anyway with a radical change coming in Windows 8.
The next-gen Windows will come with a new programming foundation, letting developers build native apps with the same techniques they use for Web applications. Microsoft calls this new variety "tailored apps."
It's a bold move for the company. Microsoft's financial fortunes have depended heavily on Windows sales, and Windows' continued momentum has depended heavily on the wide range of software written to use Windows' direct interfaces.
Tailored apps, in contrast, use a higher-level interface: a browser engine. Now we know why Microsoft has been so gung-ho on IE9 over the last year.
Why this sharp break from the past? Microsoft isn't commenting on its rationale beyond speeches earlier this month, but here's one very good reason: ARM processors.
Today's ARM processors, from companies including Qualcomm, Texas Instruments, Nvidia, Samsung, Apple, and Freescale, are usually used in mobile devices. But they're growing up fast, and Microsoft is designing Windows 8 to run on ARM chips, too.
Windows has run on other processors besides x86 chips from Intel and AMD--Itanium, MIPS, Alpha, and PowerPC. Although each of those versions has been abandoned over the years, Microsoft clearly has adapted the Windows code base for processor independence.
Getting programmers to come along is another challenge altogether, though.
It's a chicken-and-egg problem. Why should a Windows programmer create, say, an Itanium version of some product when there are so few Itanium computers shipping? And why should a person buy an Itanium-based computer if there is so little software shipping?
Once Microsoft issues its ARM version of Internet Explorer--Windows 8 will come with IE10--the tailored apps should become cross-platform. In contrast, ordinary native apps such as Adobe Systems' Photoshop or Microsoft Office that are written to Windows' lower-level interfaces would have to be created separately.
Mike Angiulo, vice president of Windows planning, demonstrated the approach in a Computex speech, playing a touch-screen piano app on two machines. "These are the same apps. This is running on x86, this is running on ARM," he said. "It's the same app, completely cross-platform, based on the new Windows 8 app developer model."
Microsoft already has a cross-platform programming foundation, .Net and Silverlight, and there has beenamong its fans about Microsoft's Web-tech move.
But ultimately, Microsoft's position makes some sense. Windows remains a powerful force in the industry, but almost all the hot consumer-level programming action today is taking place either with Web apps or with mobile apps running on iOS and Android. Every now and again a new native app arrives for Windows--Angry Birds, say, or any number of other video games--but the hot platforms of the moment are mobile and the Web.
"Over 60 percent of people's time is spent in a browser when they're using virtually any system," said Angiulo said.
There's already an army of Web-savvy programmers, a fact that helps ease with the chicken-and-egg problem of spinning up a new programming foundation. It's not clear how closely tailored apps will resemble Web apps, but it's likely that something like Facebook's interface could be repackaged without major difficulties. That could help flesh out the Windows 8 app store faster.
In addition, Web programming is expanding beyond the Web already: Hewlett-Packard's WebOS uses Web technology, as do browser extensions written for Google's Chrome, Apple's Safari, Opera, and the imminent Jetpack framework for Mozilla's Firefox. Note that Chrome extensions can be sold as full-on Web apps through the Chrome Web Store already, and that Web apps are what Google's Chrome OS runs.
Thus, in a way, Windows 8's tailored apps are close cousins to Google's Chrome OS apps.
With the fevered rush of standards development, the Web is getting more powerful. One of the hot areas today is in CSS, It's growing more advanced not just as a way to put drop shadows behind boxes with rounded corners, but also as a way to animate changes such as boxes popping up and even provide 3D effects such as windows flipping over.
Other work is improving CSS Web typography and layouts. With Scalable Vector Graphics, more complex graphics are possible. HTML5's Canvas element provides a two-dimensional housing for such graphics.
Another Microsoft effort makes more sense in light of tailored apps: pinning. IE9 Web pages can be pinned to Windows 7's task bar the way native apps can. With Windows 8, this behavior makes perfect sense since the Web-style tailored apps will be full peers to native apps.
One big unknown is how closely Microsoft will adhere to Web standards and how broadly it will support them. After years in the wilderness, Microsoft has caught Web standards religion, participating in their development, promoting them, offering test cases to iron out compatibility problems, and most notably, building them into IE9. So it seems likely Microsoft will toe the line here, but given how fast the Web is changing, it's probably safe to expect compatibility problems between, say, Chrome OS apps and Windows 8 tailored apps.
But it's not clear just how far Microsoft will go in its support. Much of the development of Web standards takes place in browsers, not just in conference rooms at standards meetings, and browser makers are keen to move forward as fast as possible. Windows itself hardly moves at a breakneck pace.
One uncertainty is whether Microsoft will support IndexedDB, a database technology that a browser can use to store complicated data and could be helpful for applications that have to work when there's no Net connection. And it looks all but, a new standard enabling 3D graphics on the Web that also can improve 2D apps such as games.
Don't expect existing Windows interfaces to go away: Microsoft has a huge collection of existing software to support, and you can bet programmers who don't want to be confined to tailored apps' limits will keep demand high.
What's not clear, and won't be until Microsoft's Build conference in September, is when Microsoft thinks programmers should use the different programming foundations.
Here's one big difference between Web apps and native apps, though: state. It's an arcane technical subject, but in short, it refers to who's in charge. With Web applications in a browser, state is maintained on a server. That lets multiple people simultaneously edit a Google Docs spreadsheet, for example; the server handles connections to all the browsers. With native apps, though, it's the local machine that typically maintains state.
For a good illustration of state, think of what cloud computing means to Apple vs. Google. Apple's iCloud synchronizes data among different devices, but when you play a music track, it's playing from the local device's storage system. Google streams it from a server, and the browser is at its beck and call.
HTML is getting more powerful abilities to store information locally, though, so that a server isn't required. The browser increasingly is able to maintain its own state.
Here's another difference: programming tools. Microsoft has kept the loyalty of many programmers through highly regarded tools used to build software. Web programming is comparatively primitive.
It seems very likely, therefore, that part of Microsoft's news at Build will concern how programmers can quickly make tailored apps.
After all, while Microsoft has had trouble matching Apple and Google in mobile devices, it's stayed competitive with programming tools. Don't expect the company to throw that asset away any time soon.