I've been thinking about AJAX a lot recently. Between reviewing a book on the subject, reading some of the comments coming out of the Adobe Engage event and chatting with some coworkers at dinner about WPF/E I've had a lot of food for thought.
I'll start with an excerpt from Ted Leung's post entitled Adobe wants to be the Microsoft of the Web
The problem as I see it
I think that a lot (but not all) apps will become RIA’s, and the base
platform technology for RIA’s is very important. Too important to be
controlled, or designed by any single party. The current vogue
toolchain, AJAX, has this property. It also has the property of being a
cross platform development nightmare. On the desktop, you commit
yourself to a single cross platform library/technology, and then you
spend the rest of your time wrestling with it. In AJAX, you have
multiple browsers on each platform that you want to support. Not only
that, you have multiple versions of each browser.
Enter Flash/Flex. Flash has a great cross platform story. One runtime,
any platform. Penetration of the Flash Player is basically the same as
penetration of browsers capable of supporting big AJAX apps. There are
nice development tools. This is highly appealing.
What is not appealing is going back to a technology which is single
sourced and controlled by a single vendor. If web applications
liberated us from the domination of a single company on the desktop,
why would we be eager to be dominated by a different company on the
Ted Leung mentions two contenders for the throne; Flash/Flex and OpenLaszlo. I'll add a third entry to that list, Windows Presention Foundation/Everywhere (WPF/E). Before discussing what it will take for one of these contenders to displace AJAX, I should point out that being "open" has nothing to do with it. Openness is not a recipe for success when it comes to development platforms. According to TIOBE Java is the most popular programming language today and it was a proprietary language tightly controlled by Sun Microsystems. Before that, it was commonly stated that Visual Basic was the most popular programming language and it was a proprietary language controlled by Microsoft. I believe these count as existence proofs that a popular development platform can rise to the top while being controlled by a single vendor.
So what will it take for an RIA platform to displace the popularity of AJAX besides being able to build richer user interfaces?
Ubiquity: Over 95% of the Web users are using an AJAX capable browser. Any replacement for AJAX must have similar penetration or it's dead in the water. No one wants to turn away customers especialy when it's competitors aren't doing anything that stupid.
Debug Once, Run Anywhere: The biggest problem with AJAX is that it isn't a single development platform. Being able to write an application and debug it once instead of having a different debugging and runtime experience for Internet Explorer, Firefox and Safari is the killer productivity enhancer. Of course, there will always be differences between environments but if we can move to a world where RIA development is more like cross-platform Java development as opposed to cross-platform C++ development (yes, I know that's an oxymoron) then we all win.
Continuoum of Development Tools: I don't need expensive development tools to become an AJAX developer, however if I feel that I need heavy duty tooling I can buy Visual Studio 2005 then download ASP.NET AJAX to get a fancy integrated development environment. Any platform that expects to replace AJAX needs to have a continuoum with high quality, free & Open Source tools on one end and expensive, proprietary and "rich" tools at the other. The Java world with it's culture of Open Source tools like Eclipse, JBoss and Hibernate coexisting with overpriced tools from big vendors like IBM WebSphere and BEA WebLogic is the best example of this to date. That way the hackers are happy and the suits are happy as well.
So far Adobe seems closer than anyone in getting the trifecta. In a year or two, things might look different.