Developing for Vista

Vista, to the end user, will probably look a lot like Windows XP with a bit of a UI refresh, but there's a whole lot going on under the scenes that only developers will appreciate.

Win32 has been how you write Windows software since Windows 95 (and that was based on Win16) - from the very first version of Windows to today, you're creating HWNDs and sending messages to them, and calling CreateFile when you want a file and so on.

But now Vista is delivering on a whole lot of strategies at the same time.

Avalon / Xaml replaces how you create user interfaces.

Indigo replaces how you do communications.

WinFS (which will probably get rolled into Vista at some point, now that it's gone from vaporware to betaware) replaces a lot of how you manage your data.

The rest of the .NET Framework (which will finally come with the OS so you can depend on it being there, assuming you're targetting Vista) replaces just about everything else.

It probably won't be for another 5 years or so, when developers can start thinking about depending on this stuff, that things will really change, but for Windows developers, it is a pretty big change.

The Mac of course has made these kinds of "forget everything you know and start over with this new technology" changes many times. It's the courage to do this that has kept the Mac alive, and I think shows that Microsoft is on the right track.

Unfortunately, both companies are radically changing how you develop software for their platforms, and they're completely different.

As a developer, will I ever get to use Avalon in a real app? I'm guessing not. Making a portability abstraction for Avalon and Xaml is a lot different than wrapping a button or a listbox with a generic API. Every platform has buttons and listboxes; no other platform has a Xaml equivalent yet.

The days of writing software for a single platform are coming to an end. The Mac is selling well and trending up. There's a real need for a truly cross platform desktop software development environment.

Rich Internet Applications is one way this is heading. Strangely enough, the Flash runtime is one of the best technologies out there for it, since it's on all the major desktop platforms, and is rich enough to write real apps in. But it's got a significant "not for serious work" stigma to get over.

I think Java has the potential to be the cross platform rich client platform, but it seems like everyone has forgotten Java on the client. Where's the Xaml equivalent for Java?

(After writing all this, I found this post that says the same stuff. It's good to see I'm not the only one thinking this way).