I’ve been meaning to write these thoughts for a long time. I have been using Dojo from version 0.2.x (almost two years) and I have promoted Dojo in all the projects I’ve been involved. Long story short – I was and still am – a huge fan of Dojo.

However, in the last few months, I’ve been using Ext js and actually promoted the idea of rewriting an old UI for another project (I hope Martin will share more with us about his Ext js experience).

Both projects are great. Actually dojo is greater than Ext js :-). It has a lot of super-uber-cool stuff in it:

  • superb infrastructure – the dojo.event.connect is the most prominent example; dojo.io.bind is another great functionality
  • i18n and a11y – I’m not even sure if other JS frameworks are implementing this
  • good solid written API – one can easily write its own custom widgets
  • dojo storage and dojo offline – excellent ideas from Brad Neuberg
  • the most ingenious graphics package – uses Canvas for FF and VML for IE making 3d graphics in browser portable between browsers
  • many, many others – just check Dojo’s website and you can find out more

Ext JS is a relatively young framework (compared to dojo) that is best described by Dojo’s own website: “It features a large number of consistent, good looking widgets with an
emphasis on pixel-perfect layout and desktop-like UIs across browsers.
Originally developed to run on top of YUI and later JQuery, EXT now has
it’s own low-level library, removing the need for 3rd party
dependencies. The EXT community is very active and good documentation
is available for the library.

As they put it – Ext js is just a widget library with eye catchy UI. Much less than dojo which has dojo, dijit and dojox. But the true facts here are:

  1. People need widgets. The number of developers wishing to adopt a base framework without a widget hierarchy is ridiculously small compared to the number of users searching for the building blocks of a Web UI – the widgets
  2. A good UI is the first selling point, whether your project it’s open source or not. This is the first and foremost lesson. Alex Russell did not get that. Jack Slocum did. That’s why the Ext js forum are now having their traffic at least triple compared to dojo’s. Dojo’s themes are L.O.U.S.Y. One cannot use them outside the box. On the other hand – Ext JS looks fantastic. The perfect thing for an administrative interface. Perhaps you’ll customize it for a public website, but then again, who’s really using such powerful frameworks for their public website? Try looking for that in their mailing lists. I tried that several times during the last two years and the answers are insignificant. To give an answer to that – almost everyone uses and loves prototype.
  3. The ever lasting table widget. Just look at the number of questions/requests in dojo’s mailing list for a good table widget that supports resizing, pagination, etc. That should’ve been one of the first widgets to develop. Ext js has a marvellous widget here.
  4. Page loading time. Again, this one of Dojo’s ghosts that haunted them until their 0.9 release. Perhaps they’ve fixed it, but until now, it required so much effort if you had your custom widgets, or if you just needed a custom build.

Of all these reasons, I blame number 2 the most. This is a HUGE blocker in adopting a framework for a project. I adopted Dojo with much enthusiasm and I am still waiting for it to become the ultimate framework, since it has such a great potential.

But as a pragmatic programmer, if you have something that gets your job done, you use it. I don’t want to create an awful looking interface and work on “pixel-perfection” another several days. Clients are not paying for customizing Dojo – they’ll just ask – “if you could’ve built the same UI with another library and looked much cooler, why didn’t you do it?”. (we can argue here also about the usability of Dojo’s widgets vs Ext js’ widgets, for I believe Ext js is simpler to use – but this is a different topic).

Dojo had several attempts in pushing for some good looking themes. Unfortunately they did not get that “good looking widgets” and “pixel-perfect” layout. Widgets are still difficult to integrate (I haven’t switched to dojo 0.9 yet), and as I said, developers need widgets. Widgets that work well with other widgets, that are easy to program. Just compare the mail example from Dojo with the RSS feeder written by Jack Slocum.

So the people behind Dojo – excellent developers and arhitects, you must consider some marketing advices. It would rise both Dojo (and Sitepen of course) to the level where it should be – the best JS framework out there. Everyone needs marketing – even open source projects …

technorati tags:, , ,

15 responses to “Dojo vs Ext.js – How Dojo lost in front of other UI frameworks like Ext js

  1. Hi Marius,

    First, thanks for being a long-time Dojo user and for your evangalism over the years (!).

    Regarding size and UI: I think if you dig into the 0.9 widgets you’ll find that they are consistent, useable out of the box, and quite attractive. If you have specific suggestions about the 0.9 Tundra or Soria themes, we’d love to hear them. Perhaps this hasn’t been noted widely yet, but the new theme system has been built explicitly to allow you to change your theme by only modifying CSS. While EXT’s themes are attractive, they’re hard to integrate into your site without accepting their L&F 100%. Frankly, very few of the projects we do can accept a constraint like that, so we built 0.9’s theme system to look good and let you make your own choices too.

    Additionally, while the default UI is attractive and performant (we spent a LOT of time on performance for 0.9), there are now new options for optimizing your deployment including layered builds. We understand that some of this stuff is still too hard to get at and we’re working to make it easier.

    As for the table, have a look at this quick-and-dirty demo of 0.9’s dojo.data APIs and the new dijit.Declaration widget:


    The full grid is coming for 1.0 (as we promised) and there should be more news about it shortly.

    Thanks again for your thoughtful post. I encourage you to get involved in Dojo and help us make it better. We know it’s not perfect and are working hard to build a tool we can all be proud of.


  2. Hi Alex,

    And thanks for responding. I wish I had the time and the skills of a web designer – I would certainly try to make Dojo’s default theme as sexy as possible. I know Dojo is customizable, but the “default” is very important. That’s why Apple and Microsoft are so successful – they give people the defaults they need (of course, this is only one of many other reasons).

    I’d have to comment on my own assessment: there are no major sites written either in Dojo or with Ext JS. For Dojo at least, I know AOL Mail rewrote their new site using Dojo. And yesterday, a news surface about Bloglines using Dojo to rewrite their new UI.

    And I also have to comment on what you said about integrating Ext JS in one’s website. We did integrate and customize the L&F of the Grid control in several pages. And it was actually a good experience.


  3. I’d add one to your list…documentation. I’m definitely seeing an improvement the last 45 days, but there’s still so far to go. An API browser and usage example for every dojo item available directly from the root of the dojo site is a big key toward convincing developers its worth the effort to invest their time in it.

    I was teaching a class today, and the noise level from students about this is very high.

  4. Hey Alex,

    sorry for the bitter tone i’ll use, but we’re “digging” into the 0.9 widgets as we speak and we’re finding stuff quite inconsistent when you need to call .startup() at many magical times that nobody seems to understand. Currently we’re working with the Tab Container in 0.9 Release, trying to do some programmatic, dynamic stuff with them with little success. Check the TabContainer_remote test, add you’ll see what i mean. YOU MUST UNDERSTAND, that these inconsistencies have gotten us so mad, that we got to this article looking for ext examples, considering giving up on dojo. All of our team has been building experience in Dojo in the past few months in order to do great things with it, but we’re finding that, if we don’t use dojo for what the dojo commiters use it, we have no chance of getting anything stable out of it. We need to do stuff without markup, programmatic only, and this is getting like running backwards naked through a cornfield.
    BTW have you ever tried skinning a Tab to have rounded corners? It’s not a pleasant experience, and we were not able to implement a complete skin without hacking the dojo code. But when we were done hacking we found that there are bugs, and to fix those bugs, we have to get new SVN source, and for that we need to re-hack. And this at times gets like falling in that cornfield

  5. I actually like the Dojo 1.0 theme more than any of the Ext themes. However, it’s certainly not as polished as Ext. There are lots of inconsistencies… even the examples and demos have bugs.

    The other major concern for me is the lack of documentation. I was never able to find a short overview of how things work, and there is no basic tutorial that goes through all of the major features. There must be something there though, since the table of contents spans 5 pages. It could really use some better organization.

  6. Hi,

    First, it’s a very articles and I’m searching for articles like this. My position here are a but different. For using ExtJS for a while, I can assure that everything is Ext is done with flexibility in mind.
    You are not really contrained to they style as every component can adopt custome style without effort. Oh yes, some component require you give a specific name but it’s not a real problem, no ?

    Dojo has a great potential but it need some good designer to design cool widget …

  7. IT’s all the old story: What do you choose, who do you rely on, whom’s your bet on?

    Well, trying to find an optimal “Javascript-Framework” for about two years now, my bet is on extjs yet. I followed many frameworks, the dojotoolkit as an example, and am trying to get my job done on that. Consistency, release-turnarounds etc. p. p. , trying to think of everythin”k” that is needed or exists out there is difficult. That’s not new to you, folks.

    The dojotoolkit looked good for a long time. It’s inheritance, the things that were implemented. But I – personally – think that behind one great framework there normally is one great mind. Not the guy/guyette that does everything on his own, but the type of person who weaves all together. That, in my opinion, is Jack with extjs.

    Just my 0,02 $, an that’s all about that.


  8. dont even compare extjs, its not open source in the first place.

    so even it has wonderful UI and presentation and some gud marketing brains… open source will def triumph!
    someone shud work on dojo presentation.

  9. I agree 100%. I think the actual Dojo framework/architecture is #1. It’s scalable, consistant and well thought out. But the actual designs of the widgets, are even today, NOT GOOD ENOUGH! To be honest, they’re ugly.

    If you look at an ‘out of the box’ Dojo grid vs an out of the box Ext grid. (or tabs), Ext looks FAR more solid and more sexy.

    My advice to Dojo – you’ve done the hard work already – the infrasturcture is great – all you need is a single *GOOD* designer to create some good designs for your widgets, and your toolkit will be outright #1. Such a small task in the big picture – do it as a matter of priority!!

  10. That Ext.js dual licensing means if your application is not open source, you cannot use it without paying the price. While the prices are not that bad at all, for commercial web application development – that might still pose a problem with entry. I agree with the post above – Dojo is great, just needs one web designer.

  11. When I read about Dojo being loosely coupled with the Zend Framework, I really wanted to try out Dojo, however, as there was almost no documentation available, it took me far to long to produce a complete functional screen with some buttons, a grid, a form, etc.

    When I heard about Ext, I also gave that a try and within a couple of hours I was already adding my own functionality to the Ext widgets and could really start thinking about how to build a huge web-based app with Ext.

    So now, I’ll stick with Ext, even though I’m using the Zend Framework and would have loved to use Dojo therefor… It’s just not as complete as Ext is. Maybe at the core Dojo is better, but hey, all I’m looking for is something understandable that gets the trick done.

Leave a Comment:

Your email address will not be published. Required fields are marked *