Engineering Insights & Enterprise solutions
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 in. 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 the 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
its 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:
- 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
- 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 is 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 prototypes.
- 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 marvelous widget here.
- Page loading time. Again, this is 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 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” for another several day. 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).
The 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, and 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 architects, you must consider some marketing advice. 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 …