An Open Letter to You and Alex Russell

by Brian Moschel

An Open Letter to You and Alex Russell

Brian Moschel This is a pipe-dream, random, 3 AM thought. Do not take seriously.

posted in Development on September 22, 2010 by Brian Moschel

DISCLAIMER: This is a pipe-dream, random, 3 AM thought. Do not take seriously.

This is a two part letter to the Open Source JS authors of the world and to Alex Russell of Dojo (now Google) fame. But first, a little background.

JavaScriptMVC is over 2.5 years old. It’s first version included:

For the most part, I just took what other people’s projects and packaged them up. Event delegation via controller was the exception.

Today, JavaScriptMVC has added a ton of polish, depth, and features. Yet at it’s core, it’s still these components.

But in these 3 years, solid alternatives have developed. For example:

  • jQuery widgeting – $.widget
  • Model – js-model
  • Dependency Management – RequireJS, LabJS
  • Client Side Templates – JAML, Mustache, jquery-tmpl, etc
  • History – Sammy, jQueryBBQ

Recently, JavaScriptMVC added FuncUnit which is a decedent of Selenium and qUnit.

With that, I begin my letters …

Dear Open Source Authors,

Can we start putting aside differences and collaborating? Yes, we might disagree on a few design goals, but there are clear wins. For example:

  • $.widget is lightweight (and now broken into parts)
  • $.Controller can bind / unbind all event handlers automatically
  • LabJS is fast
  • RequireJS keeps namespaces ultra clean
  • StealJS can handle Less, CoffeeScript, and a ton of templates, and split builds across pages.
  • Sammy is elegant
  • BBQ is light weight (and lower level)
  • FuncUnit is … well, there is no comparison here, but I’ve asked for it to become part of Selenium and qUnit

Surely, we can figure out ways of working together to ‘solve’ these problems that doesn’t involve building another tool from scratch? Today, low-level libraries like jQuery, Dojo, and MooTools are extremely close in what they provide. There’s no reason to write another offset method!

Imagine a world where you can build your own toolkit from parts of other libraries with little or no waste. Want to use jQuery’s event system with NWMatcher? Just require(‘jquery.event’,’nwmatcher’). Use the perfect build tool to make your own perfect library.

JavaScript development needs to start conforming around the patterns we now know are best-of-breed.

Unfortunately, I don’t how to make this happen or even where to start. I certainly don’t have enough influence. I’d be interested in sponsoring a collaboration meetup of sorts with some framework / library developers. I really want to combine StealJS, RequireJS, and LabJS.

But, before I get ahead of myself, there is someone who already accomplished this who might have some solid advice …

Dear Alex Russell,

First, I have a huge man crush on you. How can you blame me? Your beard screams old-spice-guy manliness.

786 Russell

Plus, you invited me out to dinner with the big Dojo guys (and Christian Heilmann), before I knew anyone and I looked creepy, having shaved JavaScriptMVC into my head:


It’s my understanding that you started the collaboration of competing toolkits that led to the creation of Dojo. How did you do it!?!? All I found is this short article. It doesn’t provide any suggestions on how someone without your charisma or skill could accomplish this feat. Getting together a pool of talented developers to unite under a single project must have taken a considerable effort.

Unfortunately, the Dojo project missed an opportunity by not releasing something that became jQuery. But …. I wonder … is it possible to correct that so everyone can start moving forward together?

My pipe dreams are clogged. Sincerely,

\~Justin Meyer

blog comments powered by Disqus

Module Loaders: Master the Pipeline!

Ilya Fadeevposted in Development, StealJS on June 30, 2016 by Ilya FadeevThis article is for developers who want to dig into JavaScript Module Loaders. We will look at how module loaders work, what the stages of the pipeline are, and how they could be customized.