I have a dilemma. I am tasked to make a final decision for my company, between Dojo, and EXTjs, as our framework for all our clients. Our developers are split right down the middle, between those who like Dojo's orthodoxy and stability, vs those who see it being brushed aside by EXTjs, with its many widgets that save so much time, and provide so much UI sizzle. It just overpowers most arguments the Dojo proponents are making. They also point to what they see as a noticable slowdown in Dojo projects, community, and general enthusiasm.
I realize the Zend announcement of this past winter provided a boost, but as I survey the web, there's a rising tide of experienced developers shifting either to EXT or ui.Jquery. I'm just not finding many strong advocates for Dojo out there. I personally felt burned by EXT early on, when I felt oversold on it. But they've come a long way, I am told, have more themes, and a lot more widgets. On the other hand, I love the maturity of Dojo, and their dedication to accessibility issues. The EXT advocates say the accessibility is coming, but two years ago the EXT devs were shrugging about the need for it. That indifference scared me.
The old "bloated" arguments are still tossed about, and I still can't seem to get an honest appraisal of whether 0.9 is all that much faster than 0.4. But the themetester taking 45 seconds to load in IE6, and 20+ seconds in FF3 doesn't give me a warm feeling. Assuming performance improves, there is still the largest concern, which is the relatively small number of UI elements including grids, sizers, themes and the many other other toys found now in Jquery and EXT. It makes me wonder if Dojo is really serious about keeping up with these advances, or is it a project heading for the dust bin of history in the face of more aggressively developed frameworks.
I realize both are fabulous projects with very hard working and dedicated people, and each deserves high praise for the vast improvements they have brought to javascript. I'd just appreciate some candid feedback about what Dojo users and devs feel about the current state of dojo, and its near and long term prospects.
I am sure many others trying to decide will appreciate anything shared.

Hi Expresso (is that your
Hi Expresso (is that your name? ;) ),
First of all, its great that you are considering using dojo on your project. I can just point out my point of view which hopefully will help you make a decision.
> They also point to what they see as a noticable slowdown in Dojo projects, community, and general enthusiasm.
I personally don't see this happen, there is constant development, there are great projects out there and you can find very regular news items about new directions of dojo devs and people who use dojo.
> The old "bloated" arguments are still tossed about, and I still can't seem to get an honest appraisal of whether 0.9 is all that much faster than 0.4.
Dojo _is_ fast, unfortunately since dojo still lacks of good documentation (it is been worked on very hard at the moment) people use the test cases in the dijit/test dir as a reference. You have to realize that the tests don't use an optimized build, which every dev should use. The test cases pull in every single js file, one after the other and that obviously slows down the browser.
The tests are really tests for the devs who can not make a dojo build everytime they make a change, they are very slow and are not supposed to be fast. Dojo itself is fast, take a look at the dojo build screencasts to see youself: http://dojocampus.org/content/category/video/
We are trying to address this often happening misunderstanding by providing better exaples vs. tests and by releasing good dojo documentation.
In regards to ui elements, we are just about to release 1.2 which will come with several great improvements, including Grid, Charting and dijit.layout. There are still some widgets missing and we're trying to listen to the needs out there.
I would argue though that including what is in dijit and dojo, dojo has many widgets/sub projects which are not covered by both extjs and ui.jquery
Not forgetting that everything in dijit supports a11y and i18n.
Dojo has/had issues which have put a "bad" light on it, including docs, but you can be sure that we are putting most effort into addressing those issues right now.
Nikolai
Two important points
1. Job trends: Dojo v.s Extjs.
I think the chart below speaks for itself.
http://www.indeed.com/jobtrends?q=dojo%2C+extjs&l=
2. Published books.
There are four Dojo specific books being published (Amazon.com). I don't see any books on Extjs. If Extjs is so hot, why nobody is publishing an Extjs book? Clearly, the publishers think they can make more money by publishing a Dojo book then an Extjs book.
Interesting, about the jobs
Good points, Les,
But Dojo is older and more established, so you would expect a larger existing base. And that job chart also shows a steady increase in postings, though not at dojo's level. I think next year's chart might prove more revealing.
As for documentation, I think publishers want to make money, so they go where the need is. Dojo's documentation was always a major shortcoming, and EXT's is quite extensive. Perhaps they just feel there wouldn't be the demand?
That said, I probed EXT still more today, and it's clear that their attitude is "Accessibility schmessibility." They just don't seem to care much, encouraging people to do separate interfaces. That concerns me--a lot. If the developer attitude is that such issues aren't really worth their time or attention, it cannot speak well for the future. I do wonder why so many of their big customers don't have more problem with the Accessibility issues. I thought government regulations required some compliance to these things, and would be rather important to such companies. But what do I know?
But still, the aggressive development of EXT impresses me. Dojox activity in these forums seems pretty spare, and while i see some interesting ideas for the future, the immediately useful toys or features to us would be things like sizers, handles, image galleries, multi column trees, animations, etc. I see these things happening in UI.jquery, EXTjs, YUI. I rarely see them even mentioned in Dojo.
We are just doing the exploration of this before we get too deep. We're already invested in Dojo, and right now, inclined to think we made the right choice. But if we're going to make a change, we'd rather decide now, than later. Thanks to all for comments, thus far.
More UI widgets
Nikolai wrote:
<
I don't suppose this is the best place for thish post, but I will do it here in context, and look for a good place to cross post:
My priorities:
-- Image resizers, textarea/div resizers (corner grip style, and edge-based resizing)
-- Tab scrollers
-- Light box/Spotlight
-- Status bars
Just to jump in: Tab
Just to jump in:
Tab overflow/ scrolling is something I am literally working on right now, but it probably won't be stable until after 1.2 goes out. I'll do my normal "work from trunk" evangelism as soon as it lands, but for now it's just a bunch of sloppy code on my machine.
-- Resizers -- DojoX has resizers, but they are not fully featured, and not accessible yet. I plan to make a ResizeContainer that adds the resizing around any div, rather than the current implementation: dojox.layout.ResizeHandle
-- Lightbox -- I made on several months ago. dojox.image.Lightbox. Then applied the styles to a dijit.Dialog subclass called dojox.widget.Dialog
- Status bars? Like menu bars? Yet another of my tickets.
The big thing to take away from this would be: I'd love to have all those widgets. I'm currently working on some of them, but we (Dojo) invite you to join our open development cycle. If you find a bug, report it. If you want a feature, we care, so tell us. Want to contribute? Great! Don't want to sign a CLA? We'll promote your plugin/project/idea to the best of our abilities. The list goes on and on.
And just a moment of defense about the documentation: We're _always_ working on documentation. The breadth of Dojo (read: API surface) is ginormous, but entirely optional. All the core functionality is really well documented, and it gets thinner as you get further away from base/core. All of Dijit's public API is documented at the very least in http://api.dojotoolkit.org ... and sites like DojoCampus.org really fill in a lot of the gaps for "how do I _actually_ use this" rather than simple explanations. A lot of DojoX is tagged experimental, and simply needs documentation added (in the book, campus, inline/api, and demos)
It is simply a matter of resources. I have lots to do personally with/in Dojo, but I (like all the other Dojo committers) have client obligations as well, and work on Dojo voluntarily.
Resizers:
Resizers: http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/layout/tests/te...
TabScroller: In the works right now
Lightbox: http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/image/tests/tes...
StatusBar: afaik not there, though if you post a feature request in tract I am sure this will be addressed pretty soon
(Those are unfortunately test pages, so they are not as fast as they could be)
Again as I said, it seems that the lack of complete docs give the impression that widgets are missing, I know its not good, but this is been worked on right now.
In regards to animations, dojo provides a complete set of very useful animations, take a look at a demo page by one of the SoC students:
http://gruppler.dojotoolkit.org/ - this is an ongoing project showing what you can do with animations, so bear in mind :)
What I forgot to mention in my last post is the licensing. I am sure you are aware of the different licensing models. ExtJS has a very different model than dojo does
I'll address both of your last comments...
...so some of the priorities that you're looking for do, in fact, live in DojoX (lightbox, resizer--though I don't know the status of that one), and your suggestions are welcome for other things; at least one dev (I won't name any names but it starts with "d" and ends with "ante" ;)) likes to tackle community-suggested problems at times, and things might suddenly appear in DojoX because of it. If you have a little bit more info on what you're looking for, feel free to flesh it out.
WRT to "slowing down", it just appears that way to the outside because an awful lot of the discussion / support has been shifting to IRC--more so than I would like. The problem is that the team of committers have their preferences in terms of scanning materials and questions, and for many the forum format is not their favorite. It's a perennial problem and we're doing our best to shift things. In terms of development and direction, there are a number of things coming down the pike that will continue to push the boundaries of what's possible :)
WRT to Dijit vs. ExtJS (and this is the right comparison, btw), the reason why there are books coming out about Dojo et al is not just because of the age of the project but also because we seem to be chosen more and more as the AJAX library "of the Enterprise"--which is not teh sexy(tm) of the Intertubes (i.e. we don't have the loud jQuery fan-boy base, or the uber-defensive Moo people, to watch all the popular blogs and try to Digg the crap out of them). You're probably well aware that several major IBM products use and distribute the Dojo Toolkit; what you probably don't know is that a number of major companies (none of which I can name) have been adopting it internally and externally as the toolkit of choice, and it seems like the number of companies doing that has been increasing. From a personal standpoint, I'm always very surprised to hear "Fortune 100 company X uses Dojo across the spectrum of its products" and lately it seems like I'm hearing that more and more often.
ExtJS is a very polished library, but it is a commercial product* and not Open Source--in the same way that Backbase and Bindows is. All three do an excellent job of accomplishing the task of UI RAD but being a commercial product has its good points and its bad points. (In addition, ExtJS's look and feel is a little *too* close to Vista's, and we've been surprised that they have not had to deal with the Monolith yet.) We've always been big fans of Jack Slocum's work, but the recent license change/snafu and a few other things (such as some of the attitudes of developers on the team, as you've alluded to) do make us wonder sometimes as well.
So with that comparison, I would say that it really just depends on what your needs are and how you feel the project developers will help you accomplish your goals.
Hope that helps.
* A small clarification: ExtJS is sort of commercial and sort of open but they try to have it both ways, and in the end--from a practical standpoint--it is a commercial product. There's nothing wrong with that but it does make for confusion at times.
Great responses. Thanks
Thank you all, This was great stuff.
The resizers are fantastic. Just what I needed (although a handle along the entire edge, not just the corner is also important).
I think those will create a lot of buzz when released. Are they stable enough to start using?
Can't wait to see the others (after some sleep).
Ttrenka, much of what you say makes a lot of sense, particularly your read on the cultures of other communities.
These posts have done much to convince me we're in the right place. I appreciate the respect you all show other efforts too.
I looking forward to helping out. I'm a crappy coder, but a good tester, bug reporter, and general nag ;)
Ext is illegal software
FYI
On advise of our lawyers, we stopped using Ext JS once they changed their license to GPL. Our lawyers did a complete code audit of ExtJS and GXT and found numerous violations in the Ext JS library. We raised our concerns but they went unanswered (not surprising really given Ext’s history). For example, it is a well documented fact that the Creative Commons License is not compatible with GPL and yet Ext uses famfamfam.com’s Silk Icons that are licensed under Creative Commons.
IIRC, it is only illegal if you are incorporating it for...
...redistribution as part of another product.
I think a good portion of the confusion surrounding licensing has to do with redistribution; many people seem to confuse license terms between "terms of use" and "redistribute". If you are using it in an end-product (i.e. like a web product), there might be questions surrounding code history but if you are not redistributing it as part of another product, normally (I say "normally", every situation can be different) you should be ok.
If you are using it as a part of something you are trying to release under different license terms though...this is a different story, and one of the big reasons why many projects are turning away from the viral terms of the (L)GPL. Creative Commons tries to address this with specific conditions (i.e. attribution, etc.), and it may be this grey area that caused your lawyers to determine that the Silk icon usage is illegal (and I'm not going to speak to that without examining it for myself, probably with a second team of lawyers).
We've found that the BSD license, and it's liberal terms, causes the least amount of confusion. In conjunction with the CLA requirement, it helps to ensure that no matter what we do, you won't be subject to a SCO-style lawsuit.
Hope that helps--and those who know the legal ramifications better than I do (i.e. Alex) can chime in with some clarification.
For a little more clarification...IIRC ExtJS might be distributing under illegal terms but that does not hold someone using ExtJS liable, as you purchase/use that toolkit in good faith. But it does make one question...
I want to be clear about what I mean by "redistribution"; if you are releasing something as a library, that is different than releasing something as an application. A library is incorporated as something you can use to create applications; "applications" are tools you use to accomplish tasks that are anything but creating other applications. And so the grey area begins ;)