There was a fascinating article on Wired.com yesterday about how browsers are changing. It's very interesting to see the evolution of the browser as it becomes part information finder and part OS. With the plethora of web applications out now, the browsers are competing with each other to provide the most robust environment for those applications to run. There are a couple of problems with this. One, as a web application developer, you are dependant on each browsers ability to run your application. You can code around some of the hacks, but in the end, if you really, really need a feature that only IE7 has, you may be inclined to code that feature in and require IE7. When that happens, you've taken the universal part of the web and segmented it. The other problem with browser dependence is that the browsers aren't on a regular update cycle? We've seen patches to FireFox, but IE6 is 5 years old and is starting to show it's age with the newest Ajax applications. Technologies change very quickly, and while it is easy to release an updated plug-in, updating a browser to support a host of new technologies isn't always a timely process.
So what's the answer? I think the first generation applications from developers using Apollo and WPF will give us a taste of how developers can get around the browser. Instead of interacting with Rich Internet Applications via a web browser, developers will move to a desktop model where you serve up the application through the browser, but the desktop runtime is what does all of the hard work. Essentially, you'll have an installed copy of every RIA that you use regularly on your desktop so that you can interact with it when you're not online, but still get all of the updates and changes when you are online. An installed application for every RIA you use seems insane, until you see how these new desktop applications are being delivered. There is no install; you're simply copying a single file from the web to your computer. That single file uses the runtime that you've already installed and serves up the application. You may use the web browser to "go to" the application, but the days of running the application inside of the web browser are finished. This has the added bonus of having a built in solution to the online/offline problem. When the application resides on the desktop, you can access it from anywhere. When it's online, you'll be able to take advantage of the full functionality.
The web browser is a great tool, but it is being over extended. I know that we're all familiar with how a web browser works, and it seems very easy to run applications within it, but it is not a very intuitive solution. While the techmeme crowd may be thrilled at how much Ajax can do, the average person doesn't see their web browser as a gateway to applications. The RIA solution that Apollo and WPF provide, where the application actually runs on the desktop, independent of the browser, will be much more intuitive for average users. Here I think Microsoft has a big advantage with WPF: Vista and WPF will have such a similar user experience that it will be easy for Vista users to jump on the RIA bandwagon and feel comfortable in the environment. The data on the web doesn't have to be trapped in a browser. Sometimes that's the best solution - if I'm searching Google, I don't want an RIA - but other times, a more robust, interactive experience is needed.