Dojo 2 Vision
A Quick Dojo 1.x history
The mission of the Dojo Toolkit has been to provide consistent and easy to use features and APIs that allow developers to create maintainable web apps faster and easier without having to worry about the inconsistencies and quirks of each browser.
This works great for smaller initiatives but as requirements grow and complexity increases, more packages from more sources are added to the project. The utopian idea that you can just swap out a package for another one later on if you want to is quickly realized to be more theory than reality.
When building software for large corporations, it’s often impossible to operate this way as their legal teams demand clean intellectual property and that code is reviewed and accepted by legal before use.
Our approach with Dojo 2 is to hit the sweet spot between separate packages and a unified Dojo Toolkit release. We will develop, package and release core Dojo functionality with packages such as dgrid, dstore and Intern. Developers will be free to use and upgrade the parts they want independently or use the packaged Dojo Toolkit release.
Breaking up Dojo ‘just enough’ will allow others to contribute more easily and releases to happen faster and much less painfully.
Leverage the Ecosystem
Speaking of documentation, our documentation efforts with Dojo 1 improved over time, but are not up to the standards we have for Dojo 2. A large part of this was due to the friction caused by the lack of tooling. By utilizing modern solutions like JSDoc, Markdown and GitHub, we can increase both the quality of documentation and the speed to add and update docs.
Widgets are a big part of Dojo 1.x but a lot has changed since we unveiled dijit. Between dijit, richer native widgets, web components and other UI focused toolkits there are a lot of decisions to make about how Dojo 2 will handle widgets. Our initial focus is on defining a solid core for Dojo 2. During development of Dojo 2 we will start defining the vision for widgets.
To ensure that what’s built is both what’s needed and consistent across the toolkit, we are working on each part of Dojo 2 in phases.
Define. Define the functionality and the API surface area to create a high level ‘specification’ for each Dojo 2 package.
Develop. Using the high level specification, develop and document the functionality and use Intern to validate that it’s working.
Release. Dojo 2 will be a packaged collection of these various modules. As we complete each module we are closer to the Dojo 2.0 release.