Dojo 1.3 and PlugD Released: Q&A with Dylan Schiemann
Recently Dojo 1.3 was released alongside project PlugD which adds jQuery flavor to the Dojo toolkit. InfoQ has a Q&A with Dylan Schiemann, CEO of SitePen and co-creator of Dojo about the latest release, the evolution of the toolkit and TIBCO's General Interface choice to join the Dojo foundation.
InfoQ: Dylan, what are the highlights of this release for you?
The most obvious feature is official support for IE8 and Chrome. Microsoft made a number of changes that primarily impacted Dijit, and Chrome is not exactly the same as Safari. Beyond that, significant improvements were made to documentation ( http://docs.dojocampus.org/ ), and hundreds of stability and performance improvements, and API improvements to increase developer productivity. I'm also pretty excited about the new DataChart widget, which makes it super easy to create native charts backed by Dojo data stores, including real-time Comet sources.
InfoQ: It has been reported that Dojo is at least 2 times faster than other toolkits on common DOM operations. Would you like to comment on that?
While Alex announced TaskSpeed a bit early, at a minimum I'm very happy in that I can proudly say that for several releases now, Dojo is not the slow, bloated toolkit it was back in the days of 0.4. Whether it is the fastest is still debatable in my mind because TaskSpeed and SlickSpeed are still far from perfect.
InfoQ: With this release came also the PlugD plugin which adds to Dojo functionality we were used with jQuery. Do you see Dojo core moving in that direction also in the future?
Absolutely, because the jQuery API for accessing and manipulating the DOM has proven to be very popular. This work was started by Dojo project lead Peter Higgins, and done in a side project or plug-in for a few reasons. One was to demonstrate how easy it is to add significant functionality to Dojo in plugin form. Another reason is that we promise our users that features in Dojo Core and Dijit are stable and will not be backwards incompatible across .x releases. So we wanted to get this functionality right before introducing it into Dojo Core. I expect that we'll see much of this functionality in Dojo 1.4.
Acme was started by Alex prior to the announcement of Sizzle. Going forward, my hope is that at some point Sizzle and Acme will become one and the same unless they are philosophically incompatible and our users care. jQuery co-founder John Resig obviously contributed Sizzle to the Dojo Foundation to encourage collaboration and usage of Sizzle across toolkits, and I believe we'll see more collaboration across toolkits going forward as it makes sense. Off the top of my head, DOM manipulation is another candidate, as well as agreement on common names and idioms for CSS class names to make it easier to theme components when mixing in widgets while using multiple toolkits.
InfoQ: Dojo became widely known probably around release 0.4. Since then it has grown in several directions, so where do you see it going in the following years?
I consider our 0.2 release the tipping point for the project with interest from IBM, AOL, Sun and others. Dojo 0.4 had significant buzz around OSCON 2006, but we had to complete a significant rewrite to avoid jumping the shark. Each successive release has had more downloads than the previous release, and we continue to be impressed with the ways in which people are using Dojo. One of the most recent high profile examples is Mozilla's Bespin.
Today, people frequently choose between Dojo, jQuery, Ext, MooTools, and YUI when building an Ajax-based application, with Dojo achieving substantial adoption in the space of larger or more advanced applications. In the more traditional web site realm, Dojo adoption currently trails jQuery and Prototype by a wide margin, and we might also trail YUI and MooToolsin this area.
While your standard web site with a little bit of Ajax sprinkled in has never really been our target audience, the latest performance metrics show that Dojo can provide a powerful, feature-rich option for this audience as well. Beyond becoming more relevant among traditional web sites, we're also working to make Dojo highly relevant as a toolkit for mobile web apps, sites, and widgets.
Finally, with regards to features, we continue to listen to our users and work on the features that matter most to them. The Dojo Grid has received substantial interest and usage over the past year, and will continue to receive attention to perfect it and make it very modular as grids can quickly become complex if you try to add in every feature request for all users.
InfoQ: In the last years there have been several projects joining the Dojo Foundation like Cometd, Persevere, DWR and quite recently TIBCO's General Interface. Would you like to explain to us what is the function of the Foundation and how does it benefit these projects and the community?
Originally the foundation was started by Alex and I as an owner of the copyright of the Dojo Toolkit, so that it would not be Copyright Alex and Dylan. We considered applying for membership at a place like Apache, but we really wanted something with as little process as possible, keeping the emphasis on great code above all else including money and traditional foundation functions.
While the Dojo Foundation can always use donations to support better server operations and minimal annual expenses, the emphasis on code contributions, the budgetary autonomy for each project, and the extremely high level of distributed control by each project lead to run their project as they see fit is a very compelling story. We place few constraints on our projects: be a true 100-point open-source project (see Dojo Foundation web site), and offer your code under an approved license (currently BSD, AFL, and Apache). Once a project is accepted to the Dojo Foundation, we offer server operations assistance and other benefits. If you have a project that you would like to contribute to the Dojo Foundation, contact me for more details.
You can start using this latest release of Dojo either by downloading it directly or getting it from the Google CDN. You can also check out integrations for Dojo like Spring Web Flow (Java), Dojango (Django/Python), DRails (Ruby/RoR), Tatami (Java/GWT), Zend (PHP), or Dojomino (Domino Server).