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:
Cream
Hackered's PDC Round Up
Paul's Day 2 Summary
WinSuperSite's PDC day 2 gallery