flashbang on the Dojo IRC channel suggested I do a quick write-up of my experiences working with Prototype and Dojo. I've used Prototype for a couple of AJAX-heavy applications (for
Cute Overload and
American Idol) and am using Dojo for my current project.
Two things I really like about Prototype are the (you guessed it) $() function (shortcut for document.getElementById()) as well as the many iterators (including faves from the Smalltalk world like collect and inject).
Dojo has fairly good approximations of the above, plus some heavy-duty features. I love the scarily super-powerful event toolkit (*every* function call is an event), which is the first use of Aspect-Oriented Programming that I've found useful. And the Widget framework is a fantastic way to organize/modularize huge JavaScript projects (a Widget is simply a javascript file + an html file, with some niceties for restricting the scope of events).
Overall, I like both. Prototype is more of a Porsche, whereas Dojo is more like a Hummer. Prototype is pure programming bliss (feels very much like Ruby), whereas Dojo is very much engineered (feels like Java) -- possibly a little overengineered in some places (IFrame-based workarounds) in order to offer what no other toolkit offers (asynchronous file uploads; AJAX back-button handling; javascript "include" mechanism).