This content is not yet available over encrypted connections.

Friday, May 4, 2012

I'm A Contributor, And So Can You!

A while back I made a small contribution to the Dart code base (Dart is open source, didn’t you know?). It wasn’t anything spectacular, just a enhanced output for HTML unit tests (source, blog) Eventually, my patch was accepted and is now part of the Dart trunk codebase, which is both personally satisfying and just really cool. More to my pleasant surprise, I found that the Google Dart team added my name to the AUTHORS document in the root of the Dart repository – neat!

This started me thinking about other meaningful ways I could contribute to the project. There were lots of improvements to Dart that I’d suggested over time (all of them awesome), so why not work on one of those, right? As it turns out, this isn’t as easy as it seems. The Dart core code moves fast and furious inside Google – and that’s a good thing. It also means that submitting something truly impactful requires one to keep up with the fast pace of change in the ‘bleeding edge’ branch; not such an easy task. And even if one were able to keep up with the change rate, any patch that would significantly alter the core language would come under heavy scrutiny, and rightly so. Such a contribution might not be considered at all.

After some dialog with Seth and other members of the Dart team on this topic, we (well mostly he) came up with a list of suggestions for folks who want to contribute to the Dart open source project. While some of the suggestions on the list aren’t “core” Dart programming tasks, they are important to the project, and would provide a way for Dart enthusiasts to get their own names listed as a contributor in the Dart AUTHORS document.

It is important to note that the items in the list below are merely suggestions.  You can submit anything you like, and it is highly recommended that you familiarize yourself with the  “How To Contribute - Guidelines” as your first step.  It is also important to note that there are no guarantees that your submission will be accepted.  In fact, you’ll probably go through some stringent, but ultimately satisfying, feedback cycles with the Google Dart team.  I found the process to be both challenging and rewarding.

Contribution Suggestions (see ‘Resources’ below for reference material):

  • Documentation (code docs, updated/comprehensive README’s, etc.)
  • Better build instructions (full walk-throughs for each OS)
  • Better “How To Contribute” docs (full walk-through, step-by-step)
  • HTTPS support for Dart VM
  • Libraries to unify HttpClient and XHR
  • Libraries to unity FileSystem API and the File/Directories form dart:io
  • Unified Logging API
  • Move to true Element constructors in dart:html (from Element.tag(‘div’) to Element.div())
  • Add or update samples (check existing samples first)

So what are you waiting for? Become a Dart project contributor today!



  1. Does anyone know of good directions for building the Dart VM on Mac OS X 10.7.3 with XCode 4? I haven't been able to do so yet, but would like to contribute a patch to add a merge() function to HashMap for merging the contents of one hash in to another.

    1. Mark, so sorry for missing this. Your comment got dumped into the spam catcher, which I've never checked until today. Hopefully you've found the answer to your question since May? ;)

  2. A lot of people might think contributing to the source code must include a huge pull request. Thats not true really, you can contribute in your own way, that be small or big, the contribution is eventually worth it.
    Thank you for sharing this. Now, forking the Dart repo :)

  3. Great job putting this together. I aiming to do a little Dart every night. :)