Hello, Dylan. Over the past decade, you've had a variety of roles in the web development world: founder of the Dojo Toolkit and cometD, conference speaker, open source proponent, etc. What are you focusing on these days?
We're ready to start working on 2.0, which will be a major effort.
Hi, David, my greatest passion is building things, whether it's products, projects, teams, etc. I'm current the Dojo Toolkit project lead and president of the Dojo Foundation. In recent years, I wasn't writing as much code, but this year I've become more active again in making contributions to and using Dojo. We're very excited about the 1.8 release, with countless hours of effort into improving the code base and documentation. We're ready to start working on 2.0, which will be a major effort.
Not many developers know this, but the Dojo Toolkit has featured many of the more advanced utilities that other frameworks have used today, including Deferreds. What other advanced functionality has Dojo boasted before other frameworks?
We've had Deferreds and promises for several years.
Dojo has a reputation for being ahead of the curve in trying new things. As you mentioned, we've had Deferreds and promises for several years. Our support for native vector graphics dates back to 2005. Aspect-oriented programming concepts, client-side pubsub, real-time, offline and local storage, browser history, data store bindings for widgets, and more all date back to versions of Dojo from 2005 or 2006. More recently, our mobile-specific efforts have emphasized really pushing richer capabilities to mobile devices, such as grids, real-time chat, charts, gauges, 3-D interfaces, and more.
At this point in time, we're in our best position ever with regards to performance, solid documentation, and ease of getting started.
Over the past few releases of the Dojo Toolkit, numerous features have been added or enhanced: the new AMD loader,
dojo/on to separate function and native event listening,
dojo/touch for mobile event listening, etc. What new features are available in Dojo 1.8?
1.8 has a new Ajax API,
dojo/request, which simplifies and provides extensions for pretty much everything I can imagine doing with an HTTP request from a browser, or from within a Node.js application. We have also introduced
dojo/Router, to simplifying routing between views. For 1.8, it works with changes in the browser hash for compatibility with currently supported browsers, and, for 2.0, it will work with the HTML5 history API.
dojox/mobile has received extensive API refinements and 26 new widgets. There's an impressive new full Calendar widget, and of course there's dgrid. Our parser and promises implementations have also received extensive improvements. This release has hundreds of refinements and bug fixes that make this a very solid and stable release, as well as support for non-browser platforms, like Node.js. And of course the documentation, in particular the API Viewer and Reference Guide, are impressive.
We've worked hard to refine modules that were not as fast as they should be, and wherever possible, we've reduced the dependencies of modules so they only require code they need. We've also worked to improve our build tools and documentation so it's easy to create your own optimized applications.
With the creation of
dojo/node, what role do you see Dojo having on the server side?
Having Dojo work on the server-side makes many things possible...
Dojo has accumulated quite a bit of code over the 1.x lifetime. How does the Dojo team manage to maintain even legacy modules?
Thousands of hours of valued contributions from the community, and an open and inviting process for getting involved and contributing. Also, companies like SitePen and IBM will make fixes based on urgent requests from their customers. We've been better this release with setting goals, and getting more people involved, which has been really refreshing. We have many long-time contributors, but also a lot of new people that have made 1.8 amazing.
At this point, it's safe to assume Dojo has started the transition toward 2.0. Modules have been written in AMD format, a new async loader has been built, and some of the legacy IO methods (io/iframe, xhr, etc.) have been consolidated. Can you hint at what we'll see in Dojo 2.0?
We'll start by cleaning up our APIs further, removing support for things that have been deprecated for several releases, and just get to a simplified starting point. We'll also take a hard look at which browsers and platforms we should support... it's much easier now with has.js feature detection built-in, and it's really easy to exclude features from your optimized builds, but we still want to simplify the maintenance of the toolkit as well.
Basically, the great features of Dojo will still be there, but we expect many new advancements to support modern and mobile browsers, as well as a massive refactoring of old or stale APIs.
Dojo's usually on the bleeding edge of client side advancements, Deferreds and Promises being examples. What do you see coming down the pipeline, and how does Dojo plan to work with those technologies?
Much of DojoX will be split into separate projects with their own release cycles.
I also think we're still running into many performance limitations of web browsers.
For example, native vector graphics or charts with very large data sets crawl in even the most modern browsers, so I expect we'll see more fixes to work seamlessly with larger data sets.
Much like virtual paging has worked well with grid components, we need more solutions to other limitations on the platform.
Dojo's official "plugin repository", DojoX, hosts numerous enterprise-level subprojects, include
dojox/gfx, and more. What is the long term plan for DojoX? Will it stay within the official Dojo repository, or will the Dojo team create its own plugin forge?
We currently have an early package management system, called cpm, with a listing of available packages at http://packages.dojofoundation.org/ . dgrid is the most popular Dojo package available today. DojoX will likely be split, with some features moving into Dojo or Dijit, and other features, like gfx and charting, becoming their own top level packages. They'll still be available under the same licensing as Dojo, and major releases will have tools to easily combine popular packages into convenient builds, but they will have a much easier time releasing more frequently than Dojo.
SitePen has created an incredible grid widget for Dojo, called dgrid. What was the motivation for creating dgrid, and where is dgrid in its development lifcycle?
It's really more stable than any of the Dojo grid widgets today
Several years ago, we brought the original DataGrid into Dojo by actually paying the developers of the most popular third-party widget to contribute it to the Dojo Foundation. SitePen, Mozilla, and a handful of others contributed cash to make this happen. After years of iterations, and the emergence of mobile browsers, it was time for a fresh, from the ground up rewrite that would work well on mobile and desktop, be incredibly modular, and work with all the latest APIs and features. This became dgrid. While we're still calling it a beta, it's really more stable than any of the Dojo grid widgets today, and we're finding a wide variety of companies are already using it in production. We also support jQuery's ThemeRoller styling conventions, so it's pretty easy to use dgrid inside a jQuery app without any other Dojo, if that's your preference.
Lastly, open source projects are always looking for good developers to help. How can Nettuts+ readers get started using Dojo, and how can they start contributing to the project?
Start with our excellent tutorial series http://dojotoolkit.org/documentation/ which is being updated for 1.8 now. Sign-up for our mailing list and ask questions http://mail.dojotoolkit.org/mailman/listinfo/dojo-interest. Try things out, give us feedback (on each documentation page, there's a link to provide feedback on that page. We've fixed nearly 1000 documentation issues reported this way alone this year), file bugs or tickets, sign a contributor license agreement online ( http://dojofoundation.org/about/claForm ), and start contributing in areas that interest you the most.
We have a weekly IRC meeting on irc.freenode.net #dojo-meeting at 2pm Pacific time on Wednesdays, or you can find us on #dojo at other times.
And of course the SitePen blog, or our workshops or support services if you need help right away.
The verdict? Dylan, SitePen, and most importantly, the Dojo Toolkit, are doing big things in the open source community. Dojo Toolkit's feature set and momentum are impossible to ignore, and developers looking to create super-powered web apps should look no further than the Dojo Toolkit.