Dojo 1.7 Released!

Dojo 1.7 is now available and ready for your web app. The second major release towards our plans for 2.0, we’ve undergone substantial improvements while preserving existing APIs and capabilities. The Dojo community has come together to dramatically improve the performance and modularity of the toolkit, a popular theme in the world of AMD (asynchronous module definition), JavaScript loaders, and microtoolkits.

Dojo Nano: Less than 4KB gzipped!

Dojo 1.7 provides substantial improvements for building desktop and mobile apps using open web technologies. In addition to a wide variety of features and changes, Dojo has been significantly improved to deliver a foundation that’s ideal for building your applications in any environment (web, desktop, mobile, server-side). Starting with less than 4KB (gzipped), you include just the features you need in your application, from Dojo, your source code, and plug-ins hosted by Dojo, GitHub, and others.

Overall Vision: Separation of Data and User Experience

You will oftenhearustalkaboutseparation of concerns. Your users typically want access to relevant data and information, in a variety of different contexts and experiences (desktop web, mobile, tablets/pads, television, automobiles, and much more).

With this understanding in mind, Dojo provides:

Tools to mix and match to create your app

Simple APIs to seamlessly separate data from UI logic

Modularity for very simple projects that’s flexible and consistent enough to handle the most challenging, feature-rich web apps

By truly separating data from your user experience, you can efficiently deliver amazing results to the users of your applications. In a world of many diverse platforms, the separation of data and user experience is key to giving your users access to the data and information they want, in an experience that’s ideal given the context (device, task to be conducted, etc.). It’s definitely a concept that’s gaining popularity, for example the experimental model-driven views library from Google.

Getting There: Compatibility and API Changes

One of our major goals with the Dojo Toolkit is that your application should be easy to upgrade between point releases, e.g., 1.5 to 1.6, and we only make major, incompatible API changes when changing major version numbers, e.g. 1.0 to 2.0. In order to guarantee this API compatibility and consistency, we need time to make sure our APIs are stable and solid. The changes in Dojo 1.6 and 1.7 represent a major refactoring of Dojo for 2.0, while preserving compatibility with previous versions of Dojo. Thus, there are a flurry of new APIs that you should consider to represent Dojo 2.0 alpha or beta, while still being able to safely use existing APIs that may be deprecated in 2.0.

We will discuss many of these changes in more detail through blog posts, tutorials and web site updates in the near future. Here’s a brief summary of the major changes.

Optimized Resource Loading: Asynchronous Module Definition

Module and resource loading has become extremely popular as more application developers have discovered the need for powerful management of larger JavaScript code bases. AMD arrived in Dojo 1.6 and has been completed for Dojo 1.7.

Dojo Toolkit developers have played a major role in helping define the AMD specification. These are excellent innovations in JavaScript which do not necessarily require Dojo and can encourage interoperability across projects. In fact, the RequireJS project is a Dojo Foundation project that’s popular in the jQuery community for working with modules and AMD. And AMD is also gaining support in newer versions of jQuery, MooTools and many other projects.

Key Considerations in working with AMD include:

Package Management

Modularity of code as well as ease of cross-project sharing, while reducing side effects and testing complexity

Reconstitution: easily combining modules from Dojo, your work, and other projects across the web

The amazing new async loader dramatically improves the performance of your AMD application. For reconstitution of modules outside of Dojo, we have a package distribution system that makes it easy to deploy packages and their dependencies. It is the work in progress CommonJS Package Manager platform, which works well with Dojo and many external projects.

dgrid

Core refinements

Dojo 1.6 introduced the new Dojo Object Store API, based on the HTML5 IndexedDB recommendation. It provides an incredibly intuitive and simple way to include arbitrary data in your user interfaces, with simple APIs for getting and setting data. More advanced constructs like real-time updates with Dojo Socket, validation, caching, and more are simply added through lightweight wrappers. Refinements and stability improvements to this have been added in 1.7.

As announced previously, the event and query systems have been refactored to improve performance, simplify the API, and add modularity. For example, you can now use a very lightweight query system, or include the full Dojo Acme, jQuery Sizzle, or MooTools Slick query engines within your application.

Other major improvements

“Baseless Dojo”, with far lighter dependencies throughout the Dojo codebase. Expect more efforts in this area towards Dojo 1.8.

Mobile Modularity

Testing and Compatibility

In total, we’ve resolved more than 1000 issues since Dojo 1.6. The DOH test suite of tens of thousands of tests passes in all officially supported browsers:

Chrome: 8.x and newer

Firefox: 3.6.x and newer

Internet Explorer: 6, 7, 8, and 9

Opera: 11.x and 12.x

Safari: 5.0.x and 5.1.x

Dojo is also tested with popular mobile browsers including iOS 4.x and 5.x, Android 2.x, 3.x, and 4.x, and Blackberry 6, and passes for all supported features in Dojo Mobile, and most features throughout Dojo. Work is planned for supporting Blackberry 7 and QNX, and Windows Phone 7.5.

Use Direct from the CDN, or Download

Get the Dojo release that’s right for you. Choose from CDN, optimized builds, or source versions with full demos and utilities. Please note that if you are upgrading from 1.6 or earlier, we no longer make a distinction between dojo.js and dojo.xd.js (all versions work cross-domain with the new loader), so update your URLs to refer to dojo.js.

Documentation

Many improvements have been made to the Dojo documentation. The dozens of Dojo Tutorials are being updated for 1.7, in addition to the reference guide and API documentation. Expect these updates to be completed by the end of 2011.

Roadmap

Work on Dojo 1.8 is already underway. We’re anticipating a 1.8 release in Q1 2012, and 2.0 in mid-late 2012.

Release Notes

Browser-compatibility Releases

In the coming weeks, and as a new policy going forward, we plan to issue point releases more regularly for 1.5.x and newer, rather than just for the most current release. The goal with these updates is to fix compatibility issues with new browsers that are released. This will allow you to use Dojo with new browser releases without as much risk in the upgrade cycle. Expect a 1.5.2 release in the near future with support for Firefox 4+ and IE9, and a 1.6.2 release as well with minor updates. Because new browsers are released with increasing frequency, this should help many Dojo users keep their apps running properly with new browser releases. While we’re moving more of Dojo to feature detection, there are still no guarantees that everything works as expected in new browsers, especially when changes are as dramatic as IE8 to IE9 for example.

Thanks!

And as always, we appreciate your interest and usage. If you find an issue with Dojo, have a suggestion, or see anything on the site or within the documentation that you think should be better, please register for a Dojo Foundation account and open a ticket.

Great job guys!, the advances in the dojo mobile is quite impressive.
There are some things which i would have changed in the toolkit, especially in the dojo.data. but in general this toolkit has proven itself in the projects and foundations i used it.

Please correct the release notes at http://dojotoolkit.org/reference-guide/releasenotes/1.7.html
Instead of “Many widgets which used to extend _Templated now extend _TemplatedMixin. If you have custom widgets that extend standard widgets, and use widgetsInTemplate: true, you may need to also mixin dijit._WidgetsInTemplate”

Should read “Many widgets which used to extend _Templated now extend _TemplatedMixin. If you have custom widgets that extend standard widgets, and use widgetsInTemplate: true, you may need to also mixin dijit._WidgetsInTemplateMixin”

Hey,
Just one query regarding 1.7. I am trying to integrate the new dgrid widget with Dojo 1.7 but I am not able todo it. The way I am trying to do it is by downloading the dgrid’s zip code and keepingit in a seperate folder as dgrid on the same level as dojo,dijit,dojox and util however what I have observed is the onload function called collectively with the reuire calls using the function require() are not getting fired. Any specific reason for this or I am packaging the dgrid module in wrong manner, I also tried putting the dgrid module in dojox but all in vein, please suggest a way to overcome this.I am using IE7

We’re working on a response and cleaning up the docs. It should work, provided you have all of the dependencies as siblings, or use cpm. The dgrid depends on two other modules as well, so you’ll need to have those in place to get things working.

If that’s not the issue, I’d suggest posting an example to jsfiddle.net and send us the link, and we’ll look into it.

Hi Dylan,
Thanks alot for the prompt response. Pardon me if I seemed too impatient to wait for response as this being my first post. I was trying to run the example simple_grid.html from dgrid. I have posted the same html on jsfiddle.net at the following locationhttp://jsfiddle.net/vzeVa/.

I think the issue is with loading the dgrid module with AMD. I suppose that is not working as Grid.js for dgrid is not getting loaded, also I have added the folders put-selector and xstyle on the same level as dgrid.
Thanks
Yogesh