About a year ago, I read Neal Stephenson's "In the Beginning was the Command Line," an extended essay about computing. (The essay was later published as a book, which you can read for free at http://www.cryptonomicon.com/beginning.html.) Stephenson's commentary is essentially a manifesto about the future of OSs. The essay chronicles the author's experiences with computers during the past 20 years and makes dead-on observations about the state of the computer industry. Most interesting is the story of how Stephenson gave up his decade-long dedication to the Mac OS because of a hard disk crash in 1995 that wiped out a book he was writing. At that time, Stephenson turned away from GUIs such as Windows and Macintosh and migrated instead to Linux.
Stephenson's migration is interesting for two reasons. First, his move to Linux occurred when the OS was in its infancy and was difficult to set up, use, and maintain. He describes his writing process, which occurs in a plaintext editor in a text-only environment, rather than the rich Microsoft Word environment most writers prefer. Second, and what really hit home for me, was Stephenson's discussion about file formats and how most UNIX and Linux programs use ASCII text files rather than proprietary document types, as Microsoft Office does. According to Stephenson, the biggest decision for a writer using Linux is determining whether to use vi or emacs (two popular text editors), not whether the program can load Word documents.
After I read Stephenson's commentary, I filed his thoughts away. But last weekend I ran across an interesting discussion on Zimran Ahmed's Web site (http://www.winterspeak.com) that instantly reminded me of the essay. A current debate in the Linux community concerns whether software developers should try to recreate the Microsoft desktop experience on Linux, which is an open-source OS. Organizations such as Ximian are attempting to create Linux desktop environments and applications that emulate Windows and Office. The argument for this plan is that users won't consider Linux unless Linux has credible solutions that are similar to Microsoft's offerings. But a movement is growing to reject this strategy and pursue a path that meshes with UNIX and Linux's underlying philosophy of small, simple programs that easily interoperate. Such programs use plaintext whenever possible—or an XML-based document type, which is essentially plaintext.
How does this debate relate to .NET? Microsoft gained power in large part by creating software that solved problems that in many cases no longer exist. Office is firmly rooted in early 1990s technology. The goal at that time was to prepare documents for paper-based printing and subsequent distribution. Today, we distribute most documents electronically, and many people spend more time using email than using Microsoft Excel or Word. And during the past 10 years, Microsoft added the appropriate functionality to adapt Windows and Office to the Internet age. This approach created humongous applications that aren't suited for our networked world. We have engines designed for printing, not for being quick and lightweight.
With .NET, Microsoft will need to make some changes. The company can't simply morph Office XP into a thin and light .NET client. Instead, a component approach will be necessary, in which Microsoft exposes specific functionality (e.g., Office's spell check, Windows' file find) as individual services. As the Linux community races to emulate Windows, Microsoft seeks to make .NET, its core platform of the future, more like UNIX and Linux. We live in curious times.
Earlier this year, however, Microsoft killed its NetDocs project—which would have offered .NET Web services based on specific Office functionality, as I recommend above—and integrated the NetDocs team into the Office team. This action shows that Microsoft prefers to protect its monopoly products (i.e., Windows and Office) rather than allow competing technology to survive, even if that technology comes from within the company. So, although the next version of Office will probably include .NET functionality, the program will be the same monolithic application suite Microsoft has saddled us with for years.
Microsoft often discusses open standards and XML, but the company has yet to prove that it can move customers from their proprietary file formats and applications to a Web-centric, text-oriented future. And even if Microsoft could, why would it? Proprietary file formats lock users into Microsoft's solutions, whereas giving users open formats would offer them more choice. Will Microsoft come through on its promises? I think the future is plaintext, as Stephenson and others in the Linux community have predicted. If Microsoft is serious about .NET, the company will stop pushing Word and Excel and give us something that truly works in a connected world. Otherwise, .NET will be nothing more than another of Microsoft's stall tactics, designed to hinder innovation while the company catches up.