On YUI, Dojo 2, and long-term JavaScript toolkits

By on September 9, 2014 9:20 am

In late August, YUI surprised the JavaScript world by announcing that, effective immediately, development efforts on YUI have been suspended. YUI was a well respected peer of Dojo over the years, and we were surprised to hear this news from Yahoo. The JavaScript community can be very fickle, with new projects created every day. It’s very easy to create open source software, but it’s difficult to create projects that last.

A quick history

When Dojo and YUI were started, the JavaScript world was a very different place. Our mission was to help create an ecosystem where developers could collaborate to create an open source toolkit for building serious JavaScript applications. There was no GitHub, Chrome, HTML5 or iPhone. At the time, you had to create your own ecosystem. Thankfully this is no longer the case, as this is a tremendous amount of work.

Although the improvements to the shared ecosystem, tooling and browsers in general have been great for developers and users alike, it has meant a shift by many individual developers away from adding their work to larger projects to instead releasing their work as small standalone modules.

The YUI blog post touched on this by saying:

“The consequence of this evolution in web technologies is that large JavaScript libraries, such as YUI, have been receiving less attention from the community. Many developers today look at large JavaScript libraries as walled gardens they don’t want to be locked into.”

We don’t think it has to be one or the other!

A vision for flexibility through modularity

It may not be as sexy today to provide a larger toolkit that does many things, but our users actually appreciate this, and choose this path for a reason. When building mission critical software, the last thing you want to do is to figure out how to make 20 different projects and their multitude of various dependencies work together, let alone determine how to maintain that house of cards for the lifecycle of the application.

Our approach has been to provide tested tools to build robust and flexible software in one unified release with a shared core and philosophy so that you can focus on building your app instead of endlessly tweaking the new shiny things to get them to play together nicely. At the same time, there are no walls, you can extend Dojo to your heart’s content.

Dojo has, and has always had, a module system. In fact we helped pioneer AMD, a flexible module loading format that is most popularized by the Dojo Foundation Project – RequireJS. Our vision has always been for a more modular and interoperable ecosystem. But even as more developers have recognized the usefulness of packages, the vision remains unfulfilled. Something as simple as modules has led to a plethora of module formats and metaformats to try and wrap all other formats (e.g. UMD, CJS, AMD, ES6 modules, Browserify), and then on top of this there’s a divergence on package managers (NPM, Bower, volo, etc.). The community suffers greatly from this fragmentation, where we cannot agree on interoperability and de facto standards, and then work to make it so things can truly be used together more efficiently and coherently.

Dojo 2 – Building on the Vision

We will stay true to our base of users that have selected Dojo over the years, while making it possible for people to more easily mix and match across projects. When Dojo 2 ships, it will be a fully documented, tested, and coherent set of packages that work well together, that can also be used and upgraded independently with other modules. This is already possible with Dojo 1.x, but it will be how the entire project is run in 2.x.

What now for YUI users?

If you are a user of YUI and wondering what to do now, you could choose an amalgam of projects, or you could look at Dojo, either in its current incarnation or in its planned Dojo 2 form, and hopefully get the best of both worlds: A flexible collection of packages that contain a consistent approach and architecture.

We’re happy to talk with you about your project and help plan a short and long term strategy in the context of your application requirements. While we’re the creators of Dojo, we’re open source JavaScript experts and we enjoy helping companies find the right solution for their application development needs. Contact us to schedule a time to discuss your project and find out how we can help!

Getting involved

We’ve been working on Dojo for 10 years now, and we look forward to the next 10 years of creating powerful JavaScript tools. If you’re interested in these same goals, you should join us and help build the next generation of JavaScript tools!

Thanks YUI

A final note on YUI: we’ll miss you, YUI. You’ve accomplished many great things over the years, the JavaScript ecosystem owes a lot to you for your inspiration and great efforts. Thank you.

Comments

  • Corey Alix

    I was scared when I started reading this but as it turns out yet again…you guys rock! I’m having no problems using dojo and typescript together now (1.9.1) but would love to see a more natural typescript+dojo fit on the dojo 2.x roadmap.

  • Hi Corey, Thanks! As you might have gathered from some of our recent posts on TypeScript ( http://www.sitepen.com/blog/category/typescript/ ), we are fans as well. In case you hadn’t noticed, Intern 2 actually relies on a work in progress branch of Dojo 2 core that is authored in TypeScript ( https://github.com/csnover/core/ ). Stay tuned…

  • Corey Alix

    Schweet! Tuned I will stay!

  • Rainier Wolfcastle

    As somebody who has been stung badly by Sencha’s recent price-gouging on their “complete” package (I’m looking at a 1,000% price hike!), I’ve been looking for an alternative. So far it looks as though Dojo might be it. I was initially concerned when all Dojo books were written in 2008, but I guess it’s been pretty stable and hasn’t needed a new book since then? When will Dojo 2 be released?

  • Simon Speich

    The dojo documentation has improved a lot since 2008. A new book would be nice, but there are also a lot of useful tutorials available now: http://dojotoolkit.org/documentation/

    So you don’t have to wait for Dojo 2 nor for a new book to start using the toolkit. I really can recommend it, it’s not in fashion, but has everything you need and is very mature.

  • Tech books are generally not a great investment of someone’s time, as they take a couple of thousand hours of time to write, and then they’re usually out of date. If put together back to back, our Dojo tutorial series is a several hundred page book, and we prefer this model for our documentation efforts. We also of course offer training workshops as well, http://www.sitepen.com/workshops/ . The path towards Dojo 2 has been intentionally incremental, with the gradual release of features as they become ready (e.g. Intern or dstore).

  • Rainier Wolfcastle

    Since posting my first message I’ve spent some more time looking at your tutorials, and I have to say that they do look pretty good. I’ve spent the past three years learning and building up a substantial code base across 5 large web apps, so I can’t exactly change those to dojo, but one of them is a system referred to by the others, so I’d like to think about slowly changing that one, and the 4 client apps one day if/as required. Thanks for your reply.

  • Rainier Wolfcastle

    Yes, it doesn’t seem to be fashionable any more but, as you say, it has everything I need. I like the looks of the AMD system and the dijit UI is quite compelling. I won’t get near the flexibility of the Ext JS grids, but when faced with Sencha’s price gouging, I’ll just write some something to generate some code for a little popup window to edit the highlighted row. I can either pay the 1,000% price increase or live without the rowediting plugin. The choice is an easy one to make.

  • Simon Speich

    You mentioned the flexibility of the Ext JS grids. Maybe you don’t know about dojo’s dgrid, combined with the editor extension it might already do what you need: https://github.com/SitePen/dgrid/blob/master/doc/components/mixins/Editor.md