"jQuery is primarily a JavaScript library for doing DOM manipulation, Ajax, events, and effects. Dojo is a more comprehensive toolkit that offers those same features, but also includes many other pieces that facilitate building rich web applications, such as patterns for code organization, tools for abstracting data syncing between server and browser, internationalization, accessibility, templated widgets, graphing and charting, rich UI widgets, and much more. Dojo also provides dependency management and build/optimization tools for creating a production-ready JavaScript application." Rebecca Murphey [1]
Rebecca also gives a detailed description of her first foray into Dojo coming from jQuery. [2]
Personally, I think Dojo's lack of good documentation/reference code, lack of 'marketing', and relative complexity keep it from becoming popular. It's much easier to get started with another library like jQuery because of all these factors. However, once you get over that initial steep learning curve, Dojo is great!
Check out the new docs. I think it's no longer reasonable to say Dojo lacks good docs or reference code.
Marketing is challenging for engineers. We tend to not go crazy over every small feature, but focus on the big stuff. That said, we're improving our approach.
The tutorial section looks much improved over previous visits - good job.
Two points:
1. The tutorial shows using the CDN, then there's big warnings saying "don't do this in production". Give another demonstration of the "highly recommended" approach vs leaving people to piece that together themselves.
2. "we tend to not go crazy over every small feature". What's a small feature to you may just be something that 80 people have been waiting patiently for. While you can often judge what a 'big' feature is by your standards, dismissing many other things as 'small' probably misses a lot of people.
Point 1. is indeed a "uncomfortable" part of dojo. Getting started is difficult. For a lot of demo and hello world like apps CDN version is fine, assuming they are only using the modules packaged into dojo.js on CDN. If you start using other modules, then you will soon see a escalating number of HTTP requests, and for this reason using CDN version for production is bad idea.
Its just not that easy to get started with and get a sane production build from dojo yet. Hope all of this will change by the time 2.0 is out.
Popularity is fickle... things that are new and sexy get more buzz, things that are solid and reliable and powerful get used a lot, but don't receive as much hype.
I recently did a project using Dojo (1.7) and my coworker told me that it 'lost the war' against jQuery. Having worked with it, the documentation was absolutely horrid (which they no claim to have somewhat resolved). As for popularity, it is a Catch-22 - it's not used very often and so no one is willing to learn it and people don't learn it, so it's not used very often. From the same website showing jQuery is on 50% of websites now, you can see that Dojo is absolutely abysmal in popularity and usage:
Dojo is used in more than 80% of the world's 2000 largest companies. Yes, it's not the default toolkit for WordPress or other large blogging and microsite platforms (which dominate the number of sites on the web), but Dojo is used far more than the numbers indicate. For every 10,000 basic sites, there's an impressive app out there that makes use of it. As I've argued before, if Apple had given up to Microsoft because everyone used Windows, or if Firefox had given up because everyone used IE, the world would be a boring place. With AMD, it's less about Dojo vs. other toolkits, and more about how to use toolkits together in an efficient modular manner to build the app you need.
Unfortunately, you cannot load Dojo with other AMD loaders. It has shims and features within its dojo.js that prevent's other loaders from being able to use it; dojo can load other AMD modules but not vice-versa.
Also, the comparison of FF/IE and Windows/Mac, the argument is flawed - the underdogs came out to fix problems with the status quo. Dojo does not provide significant benefit over jQuery or similar tools to warrant switching frameworks.
"Dojo does not provide significant benefit over jQuery or similar tools to warrant switching frameworks."
This is not correct at all. Compared to jquery, dojo is significantly better option for large projects. Dojo has a very rich unified set of widgets, jQuery has plugins, but they do not play well with each other. Each jQuery plugin is unique, with no standard way to extend them. I can extend any dojo class and in a very uniform fashion.
It is possible to do write good code in jQuery, but a vast majority of them are not, jQuery is like PHP, a haphazard mix of functions that do something. Dojo is like Django etc, with everything thought out from start to end, everything gels together.
Or at least that is my initial impression, would love to know why you believe the class system, the AMD modules, the rich widget library, storage framework, MVC framework, i18n, etc offered by dojo is no benefit to you?
The latter point is your opinion, but certainly many developers actually believe it does.
Dojo has plugins for localization and text loading that are needed for certain features. You would need similar capabilities in other AMD loaders for them to work. I believe it's simple enough to get most of Dojo working with RequireJS, or with Curl.
One of the best javascript library out there, checkout my work in progress attempt to port ikog to web while I am learning dojo: https://github.com/amitu/ikog.
I find dojo project way more neater than an equivalent jquery project by default.
Module systems rock. Real object oriented programming rocks, see how I extended Pager to make PausePager, this is how object oriented programming was meant to be. The fact that I can extend any dojo class, and the fact that dojo comes with a large collection of class, its just too sweet.
I have not yet created a "build", so there are a bit too many http requests (check work in progress live version here: http://amitu.com/ikog/), but I am hoping after build this issue would be solved.
Thanks for the suggestion, I am looking into boilerplate now.
I like that build.sh in dojo boilerplate "minifies" the html file too!
I checked your todo.sh project, I see the html page, and java loads, but nothing happens when I type something and press enter in text field. May be you just started and its not implemented yet, or may be I am doing something wrong.
My suggestion to you would be to do a hosted version, that syncs to dropbox. That is my plan for iKog. Parse is good if you do not want to have a dependency on dropbox, as a storage. Both of these allow me to access todo list from anywhere, the applet solution does not allow that.
It all depends on what you want to do, for me it is a playing ground to work with different libraries/services.
I didn't think much of Dojo previously, but then I had the need to create a web app with dynamic SVG for the interface, that would be a pain to do with DOM+CSS. I searched for libraries that could help me, I tried RaphaelJS but rejected it for the lack of support for the <g> element. In the end the best library I found is Dojox/GFX, which also can render to SVG, VML, Silverlight and even Canvas!
I have yet to start producing the app, but Dojo really deserves more attention.
Dojo is rather past its prime, because of increasing browser support for CSS3 and HTML5 features. Better support for native language capabilities like map/reduce/filter/indexOf in arrays also have siginifact impact.
Dojo is my primary js framework, I prefer it over jQuery, because it's more strict.
Nice comeback, I almost forgot Dojo exists but I have to admit, if you put aside style / coolness, Dojo get's you going out of the box with most UI needs without searching for plugins, and has a great mobile library
I tested Sencha, jQuery Mobile and Dojo 1.7 and 1.8 a week ago with my Nexus phone -> Dojo 1.8 wins clearly when it comes to performace of touch events and transitions :)
I read your comment and tested it myself. I was actually very disappointed with Sencha and especially JQuery Mobile's performance but seems like dojo actually got it right.
I am forced to use Dojo whenever I am doing any sort of ESRI Arcgis web map development. While I agree that there are some nice points in Dojo, I think it's a travesty the way they were okay with PUKING all over the DOM with their Dojo specific markup. We have data attributes now, so hopefully they are beginning to leverage that. The app I'm working on now still uses Dojo 1.7 and it still has quite a bit of "dojo-this='foo'".