DISCLAIMER: This is a pipe-dream, random, 3 AM thought. Do not take
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
- Event delegated controllers
- A model layer based off
- Integrated client-side templates with
- A dependency management and build system with
- Browser History with Really Simple
For the most part, I just took what other people’s projects and packaged
them up. Event delegation via controller was the exception.
at it’s core, it’s still these components.
But in these 3 years, solid alternatives have developed. For example:
- jQuery widgeting – $.widget
- Model –
- Dependency Management –
- Client Side Templates – JAML, Mustache, jquery-tmpl, etc
- History –
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.
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.
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
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
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
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,