HTML vs WinFX
I had accidentally posted my entry to Joel's essay on the Microsoft API War a little too early. "Post as draft" in my new blog client clearly doesn't mean that.
Anyway, Joel asserts that HTML has become the de facto API that developers are writing too, and that an opportunity exists for some company to finish the API war by extending HTML to match the full richness of the desktop.
He has impressed many with his arguments about the eventual dominance of Web over Windows. I suspect most of these people do not use .NET or, if they do, aren't aware of Microsoft's future plans in Whidbey and Longhorn. His credibility is also enhanced by his former status as a Microsoft program manager and his current status as a Microsoft ISV.
The notion that the "network is the computer" is actually old news, but it is, nevertheless, a profound revelation for those who haven't previously thought much about this. Most of the applications that I use are actually Internet-based applications (email, directions, news, online banking, shopping) and the time I spend probably equals the time spent on my regular Windows applications (Word, Visual Studio, etc). Companies typically deploy applications on the web nowadays because the cost of installing and updating applications on individual computers is simply too high.
In the article, Joel admits he hasn't used the .NET platform, which he criticizes. He sees the runtime overhead, but he doesn't see any of the benefits. He also glances at Longhorn and doesn't see any radical benefits; superficially, the Longhorn desktop doesn't look much different from XP. I doubt that he has attended the Professional Developer's Conference last fall, where Microsoft points to merging of the Web programming and deployment model with that of Windows in Whidbey and Longhorn.
I must say, that Microsoft has seen this threat early on, although some of its initial response, such as Active Desktop and the integrated explorer, were misguided. Microsoft appears to have correctly analyzed the threat this time and is actually meeting it on directly with the .NET platform, which I believe Joel misses.
First, .NET platform solves the basic problems with the Windows API (which are solved with Java), such as difficulty of programming COM, the lack of object orientation, the lack of garbage collection, lack of type safety, the language interoperability, the lack of code access security, and the multitude of frameworks. By providing a unifying system that allows languages to talk to each other and offers a single comprehensive API set, Microsoft is able to focus and push ahead in a single direction.
Second, Microsoft is including native support for Web concepts in Whidbey and Longhorn, thereby neutralizing virtually all of advantages that web offers excepting platform independence. In essence, Microsoft is saying applications can be rich and maintainable.
- Deployment and Automatic Updates. ClickOnce which ships with Whidbey, in first half 2004, offers simple dialog-free, secure deployment of .NET applications over the Web and automatic updates. Deployment can automatically install Start Menu shortcuts and add an Uninstall option in the "Add/Remove Programs" control panel.
- Security. Downloaded applications run in a Secure Execution Environment, that utilizes deployment manifests and Code Access Security to limit harm. Longhorn reportedly adds additional security enhancements such as providing a virtual view of the registry and filesystem, so web applications won't be limited to isolated storage or standard file dialogs to access files.
- Browser-based navigation versus Standalone Execution. Longhorn navigation applications have the option to run within a browser or stand-alone. Browser-based naviation behaves like a web application today, eliminating the notion of an install step. However, there are some major differences, I believe: Pages run in the client (no round-tripping) and can carry state. Longhorn also provides a lot of navigational infrastructure, missing from the HTML, such as breadcrumb bars and page functions (pages that act like functions by returning to the original calling page with a result). Longhorn also extends the concept of favorites and history to pages within application.
- Inductive UI. Longhorn emphasizes web-style inductive user interfaces.
- Declarative Programming. Longhorn introduces code-markup separation with XAML, not to mention the far richer presentation capabilities of Avalon. I can also see web servers dynamically emitting rich XAML instead of HTML, when a Longhorn client is detected.
As for HTML, I have a hard-time seeing HTML progressing very far. It is standard and not owned by any one party--no one with the singlemindedness focus to push it forward, that comes with proprietary ownership. The dominant client is Internet Explorer, and I don't see Microsoft enhancing its support of HTML to the point of obsoleting Windows. Yet, I don't see HTML going away either, especially because of its platform independence; and, no doubt, HTML will continue to improve the meet the ever improving lowest denominator.
The real threat is, of course, from Java. Perhaps, Sun can enhance the language to the point of making Windows irrelevant. However, it seems easier for desktop applications to appropriate web concepts than for web applications to adopt desktops concepts (such as local storage, offline access, client richness). The idea is that duplicating the functions of a web browser is a much easier task than duplicating the functions provided by an operating system.