Today was the second day of the Professional Developer's Conference (PDC) where Microsoft is showing off some of the technologies that will make up the next version of Windows code-named Longhorn (due out in 3 years).
And there's some really exciting stuff from a developer's point of view. There's so much to digest that it's hard to get handle on exactly what all the goals are. This is my interpretation of events but I think they're pretty on target in this case.
Microsoft is moving to a managed code base. What this means is having code that can be much better controlled from a security point of view. The API that hooks into Avalon and WinFS, and Indigo and such is called WinFX. But presently, it's more like an API layer that talks to managed versions of the Win32 API as well as the Longhorn specific features such as Avalon.
This has me somewhat concerned about how extensible it will be. Let me give you an example -- CursorXP is one of the most popular programs on the Internet. It's a program that lets you change your Windows mouse cursor to support ones with a lot more multimedia features. To work, it has to do some system hooks. Under Longhorn, as presently envisioned, something like CursorXP may not be able to be done without writing some sort of device driver that would tell us where the mouse cursor is and then move the "window" (the CursorXP cursor) to fit on there. Now, companies like Stardock, who have the development resources, can always find a way to get things to work with enough development time. But what about smaller developers? How are the third party shells going to work? How about programs like NeXTStart? Or anything that is designed to extend the base OS via system hooks? A lot of cool things have been invented thanks to system hooks (Instant Messaging anyone -- mouse and keyboard hooks to let people know if you are there or not). Perhaps I am overly worried but managed code is designed to be as secure as possible, a laudable goal but at some point, it can stifle innovation by restricting the ease in which new ideas can be added to the OS base feature set by third parties.
This brings me to Avalon. Now, Avalon looks really cool. It has a ton of really neat visual features. In Longhorn, 2D and 3D are put together. The desktop will be able to have the kind of slickness that was previously only possible in a game. But the most interesting thing, for developers like me anyway, is XAML. What Microsoft is doing here is essentially merging application development and web development into a single discipline. Now, if you're not a Windows user, XAML should scare the heck out of you. I could see the day where HTML is a dead language replaced by XAML. With XAML, the web and Windows applications are the same thing.
Take a look at this screenshot courtesy of XBetas, This is Amazon.com done as an XAML app. Is it a website or is it a program? The distinction is blurred. One thing is for sure, there won't be much doubt about which "browser" HTML will "render faster" on. It'll be on Windows.
But that does bring up an interesting issue. XAML is, in the end, basically a really extensible HTML type language. I.e. a text file. Is this going to be compiled at run time into the application or via a compiler via VS.net and C#? I don't know. Based on the demos I've seen, it would seem that XAML is loaded and compiled via some sort of software processing system because there was a noticeable pause between the window being created and the UI coming up.
But that's really just the tip of the iceberg. Here's the central question my friends: Do you want your applications to behave like websites? As an application developer (which is what PDC targets) it certainly is cool to be able to easily create my own super customized looking application. But is this something end users are going to want? Do they want every application to be as different from one another as every website currently is? There is something to be said about the rigidity of the Windows UI. Even the poorest written programs have UIs that most people can follow because it's hard to deviate too much from the norm. But XAML opens the door to having apps with user interfaces as bad as...well the typical website. It is no coincidence that they had Amazon.com there. After all, their website probably has the best UI of any website on the net. But most of the sites I visit have atrocious user interfaces. And we want to bring that sort of thing into regular applications? Microsoft will provide templates and specifications for how to do a proper UI but Avalon and XAML will make it pretty tempting for every wannabe developer to start putting in flaming logos and gratuitous animations.
Remember in Jurassic Park where they try to break into the computer nerd's computer and his face pop's on and says "Un Uh, you didn't say the magic word!"? I fear that may be the user interface of Christmas future.
Sure, I run the world's most popular Windows customization site. Why would I object to any of that? Because I am in favor of giving power to USERS to customize their own computers and their own software to suit their particular needs. I don't get nearly as excited about every developer imposing their own unique tilt on how applications should be used on the world. I've seen enough developer UI over the years to be thankful that Windows has, up till now, imposed a lot limitations on how much developers can easily change their user interface to be non-standard. In other words, give users the ability to customize how software looks and feels. That would be where I would put the priority.
None of this should be taken as me being down on Longhorn. WinFS, for example, is going to revolutionize the way we work with data. I have a lot more info on WinFS that I can't pass on but the coolness of WinFS, if anything, is being understated at PDC. And the feature set of Avalon and Indigo are absolutely incredible too.
I just don't want to see Microsoft limit extensibility. I think it would limit the options of users to alter Windows to their specific needs. I also think it would open the door for Linux in a big way. And as most people know, I am not a fan of Linux. But by 2006, Linux will probably be a pretty solid competitor to Windows on the desktop for normal people (and no, it's not currently competitive for the mainstream). Add in the ability for corporations and users to add features to extend the OS in ways that make it easier for them to do their jobs and it could make Linux into a contender.
Still, it's early and as I said, I'm still trying to digest the massive amount of data I've seen already. There is no question that for developers and most users that Longhorn is revolutionary. Tomorrow I'll give equal time to managed code to explain some of the benefits of managed code.
I'm not against managed code, I just don't want to see extensibility sacrificed for security. If Windows 98 was a house made of straw and Windows 2000 was a house made of sticks and Windows XP a house made of bricks, then Longhorn is looking like a house built of solid titanium with guards at the door to frisk visitors. As a user, I'd be perfectly willing to sacrifice the guards at the door to be able to easily extend the features of the OS in ways that no one today has imagined yet.
Some useful links: