We’re Contributing to Dojo 2!

By on April 16, 2015 2:28 pm

At the end of 2014, we looked ahead to determine where to focus SitePen’s open source efforts in the coming year. After our successful contributions to dgrid and the new dstore package, it became increasingly clear that contributing to the future of Dojo was where our team would have the biggest impact and the most fun. So, we’re happy to announce that we are and will be actively contributing to the planning and development of Dojo 2!

SitePen In Action

So far, We have contributed our knowledge and expertise in developing enterprise web applications to what Dojo 2 needs to be; a modular, collection of packages that fit together to deliver high-performance web applications that are well-designed, highly performant and maintainable.

We’ve also poured our hearts (and design resources) into the overhaul of the Dojo Website, which was in dire need of a modern design and cleaner information architecture.


So Much Excitement!

A few of the reasons we’re looking forward to contributing to Dojo 2:

  1. the final result will be a tight collection of packages that feel familiar to Dojo developers while leveraging the capabilities and improvements of the modern web platform.
  2. It’s going to be authored in TypeScript! As a superset of JavaScript, TypeScript makes it simpler to support many of the recent ES2015 improvements and provide support for types and interfaces.
  3. Helping to reshape and grow the Dojo community!

Don’t delay! Check out the new Dojo Web site, read the Dojo 2 vision and roadmap and when you’re spun up like us, hit the contribute button and tell us that you want to be part of the future of Dojo!


  • Alexander Kläser

    Hi SitePen team. Wonderful new website, congratulations :) !

    I was a bit shocked by TypeScript in Dojo 2… what implications does that have for people/companies using Dojo? Will they need to port their code to TypeScript, as well? Or will it be possible to stay plain JavaScript while continuing to use Dojo’s features such as OO etc.?

  • TypeScript is a strict superset of JavaScript, allowing us to leverage both ES2015 features as well as extensions to the languages such as types and interfaces. We will make Dojo 2 available for users as TypeScript and as JavaScript in the form of AMD, CommonJS, or ES2015 modules. So as an end user, you’ll have more flexibility than you do today.

  • Alexander Kläser

    Hi Dylan! OK, that’s cool :) . Does that mean that Dojo 1.10 (AMD) modules will work out-of-the-box then with Dojo 2.x?

  • Yes, though that would probably mean loading Dojo 1.x and 2.x together as you migrate code, since you would need various dependencies from Dojo 1.x that will change in 2.x.

  • Gaurav Ramanan

    The site looks great! Excellent Job Dylan and team! Just a couple of points:

    1. It seems to me that this quite a surprise! Even to the community! Was the redesign of the website planned publicly? Any proposals / discussions?

    2. I strongly advice that both the site (templates) and the documentation generator be open sourced and put into the GitHub Dojo organisation, as soon as is possible. The community at large will help in identifying issues and PRs

  • Hi @gauravramanan:disqus


    1. We discussed it on the weekly IRC meeting a few times.

    2. That’s the plan. It’s been a pretty major clean-up effort to move the old site from svn to git and to get things all in order, but that’s the plan once we have things put back together more completely (e.g. we’re still getting the reference-guide back in place for versions prior to 1.7, etc.).

  • Alexander Kläser

    Ok, thanks for the quick reply, Dylan. Is there any info/doc/site available where one can get an idea of how such an scenario would look like?

  • We’re not that far along yet, but basically it wouldn’t be much different from loading two different versions of Dojo today using a map config if you just wanted to use both Dojo 1.x and 2.x as AMD modules together in the same app. The specifics may be different, but the approach would be roughly the same.

  • Corey Alix

    Typescripts stong typing has saved me so much time! I imaged 2.0 to be a typescript rewrite of 1.10, but it sounds like it might be a complete reinvention? There’s no way you can do that and still deliver this fall, but I’m sure you will! I’d love to hear more about the ecosystem(s) you intend to leverage (not requirejs, not backbone, not underscore so what?).

    As far as a dijit replacement goes, maybe adapters for all the component suites out there to give them a common API before writing yet another tabbed control makes some sense. You could start with the 1.x dijit resources and then take on jquery-ui, bootstrap,etc.

    Users implement a Button as a wrapper using a dojo-ui adapter:

    import Button = require(“jquery-ui/ui/button”);

    export class MyButton extends DojoUI.JQueryAdapter {
    ui = Button;
    import Grid = require(“dgrid/OnDemandGrid”);

    export class MyGrid extends DojoUI.DijitAdapter {
    ui = Grid;

    And magically MyButton and MyGrid both have a common API and can be added to a common container and destroyRecursive() would destroy both of them.

    Whatever you decided to do will be great and I’m excited to watch the results come together.

  • Hi Corey,

    Thanks for the feedback! I would say it’s a reinvention that is heavily influenced by what makes Dojo great. It’s also safe to say that more recent additions to Dojo are less likely to change from an API perspective.

    Your thoughts around widgets are very similar to what we’ve done with Mayhem ( https://github.com/SitePen/mayhem ), though it currently just wraps widgets. But again, yes, define a good API, and then a map between how that widget API works. We’re also looking to collaborate with https://github.com/jquery/css-chassis on markup structure and class names for widgets.


  • Pingback: Multi-Platform Distribution with TypeScript | Blog | SitePen()