Thoughts on the AJAX Toolkit Spectrum

Last week, Dion wrote about the spectrum of AJAX tookits. He ended with a question, wondering which end of the spectrum will dominate? Will it be lightweight composable toolkits like prototype, script.aculo.us or Dojo? Or a more comprehensive toolkit like Atlas?

This came up in a chat I had w/ Jimmy Nilsson today. Well, not specifically about AJAX toolkits. Rather, we were talking about what he called technicalities vs. semantics:

I have noticed that there seems to be a focus first on the technicalities and then on the semantics. Take Indigo (or WCF) for example. There has been sooo much talk about its technical aspects, but very little talk about how to design for it. I’m pretty sure that when the technicalities have been sorted, it’s time for the semantic side. I’m not thinking about technical semantics, but rather business semantics.

On more than one occasion, I’ve had a head-beating-wall conversations with WCF folks who are completely obsessed with the secure, reliable and transactional delivery of messages, but have given exactly zero thought to the actual contents of said message. So I know where Jimmy is coming from.

With respect to AJAX toolkits, the question becomes just how easy will these lightweight toolkits compose? Because while Dion describes Google Maps as “a simple JavaScript include”, that’s just the technicalities, it doesn’t begin to deal with the semantics. For example, Dojo has Dictionary object, prototype has a Hash object. Dojo extends the Javascript Array, so does prototype. Both libraries wrap the XmlHttpRequest object. In each of these cases, it appears to me that the library authors have focused on the technicalities, but not thought about the semantics. These implementations are all semantically similar, but incompatible. So I don’t buy that these lightweight toolkits will compose well. What do I do if I’m using prototype but want the rich text editor in Dojo?

The network effect that Dion doesn’t consider is the component ecosystem phenomenon that Microsoft has a ton of experience with. Old school VB, COM/ActiveX and .NET have all had large ecosystems of components and controls evolve that extend the functionality of the baseline development platform. There’s no reason to believe that won’t happen with Atlas. I think it’s wrong to describe Atlas as a monolith or self-contained or enclosing. It’s an extensible baseline platform – i.e. the baseline functionality is set down once at the development platform and the ecosystem can extend it from there. Sure, overlapping extensions happen (how many rich text editor components are there for ASP.NET?) but at least they all have basic compatibility.

Update: Fixed link to Dojo Toolkit in the first paragraph.

Comments:

Hi, Just a couple of Dojo clarifications: a. the URL is http://dojotoolkit.org (I think you've got .com there). b. The Dojo Dictionary and ArrayList classes are actually derived from/influenced by the .NET framework (with adjustments); ArrayList doesn't extend the Javascript array as much as wraps it and imparts .NET ArrayList type functionality on it. As far as technicalities vs. semantics, I have to agree with you :)
To answer your question about using prototype and also using the dojo rich text editor - you just use prototype, and require the dojo widget package. They work fine together. Dojo plays in its own namespace, and Prototype works in its own. There could be issues if Dojo uses the for..in construct with objects that Prototype extends, but besides that there they should be fine together. So in the real world, you see these libraries used together when appropriate, and they work fine.