XUL will succeed… but just which one are we talking about?
AFAIK, XUL is a generic term describing both an XML vocabulary and a runtime. In the case of Mozilla’s XUL, the runtime is Gecko. In the case of java.net’s JDNC\*, the runtime is Java and the vocabulary is different from Mozilla’s. I would even call Microsoft’s XAML a XUL implementation. There are lots of vocabularies out there (Mozilla, Flex, Laszlo, JDNC, …) and while they all have merits, the success of XUL (2005 will be the year of Rich Clients) will boil down to two thinks: runtime and tools.
– Runtime: is it already deployed? If not, how big is it? Flash is pretty good in that area, but Java has its chances with lot’s of PCs already installed and a nice JavaWebStart deployment paradigm.
– Tools: this is a space where pretty much everyone needs to make lots of progress (first efforts planned in JDNC in release 0.8 I think). While there are some XUL IDEs in the works, it’s not enough. I believe more in a mainstream language and IDEs specializing in rich client development rather than a dedicated environment or even paradigm. You don’t usually wake up one day saying you want to do rich clients. As matter of fact, some applications need to be deployed in both rich and web versions. What if tools could help you describe a generic UI and generate its rich or web version? Components (textfield, combo, forms, etc.), validators (date, credit-card, etc.) and converters (Objet2String and String2Object) are all common to both approaches. There’s some nice parallel between the JSF tag library (or any other taglib really) and the JDNC-defined XUL vocabulary IMO, and in both cases, event-handling is implemented in Java (maybe there’s a use-case here for some Java-friendly scripting language here) which has the benefit of a clean separation between UI layout and user actions.
Mozilla’s XUL doesn’t make the cut. Don’t get me wrong, I use and love Mozilla/Firefox, I just don’t see “Firefox only” taking off.
\*: JDNC 0.7 was just released with a DataSet API, Login & Authentication API, and new demos.