With Microsofts Professional Developers Conference in Los Angeles filling much of my agenda for the rest of this week, this seems like a good time to look at the progress of developers continuing quest for abstraction: the not-so-secret ingredient, so far, of Windows success.
Instead of every commercial application developer needing to master the low-level hardware of the IBM-compatible PC and its peripherals, worrying about keyboard interrupts and writing dozens of printer drivers, most commercial development teams have chosen to focus on understanding the Windows APIs and to let Microsoft worry about everything underneath. Those developers got the benefits of dramatically higher productivity; users got the benefits of user-interface consistency and inter-application communication; Microsoft got the benefits of a huge portfolio of applications that relied on Windows and were not readily portable to any other platform.
The question is whether that strategy is still compelling: There are many ways in which its becoming much less so.
The strongest plank of the next-generation Windows platform, as it was discussed at the October 2003 PDC, was the Indigo (now dubbed Windows Communication Foundation) framework for radically strengthening — while also simplifying — developers access to advanced communication models. At the time, I fully agreed with eWEEKs Darryl Taft that while fancy graphics and file system tricks were getting most of the hype at the 2003 PDC, it was the power combined with the abstraction of Indigo that had the most potential to keep developers focused on Microsofts road map — and Microsofts most consistently brilliant tactic, I likewise agree with Mary Jo Foley of Microsoft Watch, is its ability to define and attract and retain communities of developers to add value to Microsofts platforms.
In many ways, though, the defining paradigm shift for the next generation of development is the opportunity to shun the compromises of mass-market abstraction and to maximize performance and function by creating new application-specific platforms — then delivering the resulting applications to commodity clients using the non-proprietary abstractions of Web services. Most of the online world uses Google, and much of the e-business world revolves around Amazon, which means that a huge number of people are Linux users — regardless of what runs on their desks or in their laps. The compute-intensive tasks that drive many users hardware purchases are taking place today, not on the general-purpose CPUs of their PCs, but on the graphics processors of their cameras or their PCs video subsystems: A brilliant game or other multimedia offering may depend much more on low-level graphics hardware knowledge than on the high-level abstractions of the client platform.
The code thats being written in supercomputing centers, as much as ever, is written with deep knowledge of hardware and strong dependency on that coupling. “Knowing how your memory caches work, the memory hierarchy, that really matters. Theres people doing research into frameworks that do the optimization, but so far they havent replaced the hard work. Some of our people think its just going to keep on getting harder, and people are just going to have to make it work,” was the assessment of Anke Kamrath, division director for User Services and Development at the San Diego Supercomputer Center, when I visited there earlier this month — and the enterprise offerings that matter most to customers and supply-chain partners increasingly resemble what we used to consider supercomputer applications, collecting data in vast arrays from RFID tags or point-of-sale scans and performing massive calculations to optimize flows of goods and services.
We might summarize the Windows model as one of creating a proprietary layer of abstraction for a commodity hardware platform, then profitably selling a copy of that abstraction layer on every client device. That model must now compete against an alternative approach of creating an application-specific platform, then offering worldwide access to a single central deployment of that platform through non-proprietary protocols and platform-neutral presentation tools that commoditize the entire client-side stack.
Its still possible for something as clever as Windows Communication Foundation to give developers a compelling advantage in making information and services available on the client in ways that people will prefer, without unacceptable costs in developer learning and implementation. Its also essential, this week, for Microsoft to convince PDC attendees that this is what Microsofts Vista will achieve.
Tell me what you think Microsoft has to prove this week, or even this year, at [email protected]
Check out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools.