Wednesday, August 14, 2013

Announcing dygraphs 1.0.0!

Today is a big day for dygraphs. With a controlled set of scripts and procedures, we are moving dygraphs to controlled releases, and with that, we’re proud to announce dygraphs version 1.0.0!

While this means that you’ll still have access to the very latest source, there will always be permanent, stable resources available for 1.0.0:
That means the next bug fix release will be version 1.0.1, the next feature release will be 1.1.0, and who knows what 2.0.0 will look like?

The master branch will continue to have the latest development code.

Brief History of dygraphs

For its first official "release", let's take a quick trip down dygraphs memory lane.

Dan originally created dygraphs in 2006 to serve his team's internal dashboard at Google. It was based on PlotKit, by Alastair Tse. (Curiously, Dan and Alastair would share an office in 2012 before discovering this connection.) Even now, dygraphs is often used for internal dashboards, a reflection of this original use case. Back in 2006, Firefox 1.5 and Safari were the only browsers which supported <canvas>. Given their market shares, Dan didn't see much value in releasing dygraphs publicly.

In 2009, Dan found that dygraphs was useful to his new group at Google for something other than an internal dashboard. So he decided to open source it! The initial commit was to Google Code, but the project moved to github shortly thereafter. dygraphs gained some initial attention at this time via a Hacker News post.

In 2010, Robert started working on dygraphs, contributing several major features and greatly improving the community. You can thank him for the dygraphs tests suite, the dygraphs gallery and this blog!

In 2012, Klaus began contributing to dygraphs and encouraged us to move towards a plugin model. As we did this, it became increasingly clear that we needed a way to deprecate certain parts of the API. And that's how we've arrived at version 1.0.0!

Why Do Release Branches

Here are the benefits of creating release branches:
  • It will allow us to add powerful new features: We have lots of features we want to add, but some of them are hard to do with some of our archaic features, or will break existing APIs, which leads to the next benefit.
  • It will allow us to break backward-compatibility: there are some old options, API and behaviors that we would like to remove for the sake of cleanliness. We would also like to change how charts appear in some ways that might frustrate users who rely on the existing rendering. We also want to drop support for excanvas and Internet Explorer earlier than IE9 (which added native support for <canvas>). 
  • It will allow you to have reliable, consistently tested, releases: Someone who relies on a specific version doesn’t want to have to know a specific git commit SHA, nor should a user always have to suffer when new patches are released that may break backward compatibility.
  • It will help turn plug-ins to a first-class feature. Plug-ins can be a powerful feature, again, if we break backward compatibility.
Here’s what won’t change: 
  • Easy configuration: The Hello, World! of dygraphs is pretty darn simple, and that’s how we want it to stay.
  • Rendering large data sets quickly: This has been an extremely powerful part of dygraphs, and it has to stay that way. In fact, we have a change pending that will improve performance by 100%. There’s plenty of things to work out: deployment strategy, testing strategy, git branching strategy, refactoring for the plug-ins architecture, and so on.
  • Quick support on the mailing list: We enjoy making sure dygraphs works for you, and really enjoy the people in the community growing around it.

Waaaait a minute. Wasn't dygraphs at version 1.2 for, like, forever?

Yeah, we feel sheepishly guilty about that. But we're moving to an active versioning numbering scheme with three number identifiers, so while it may seem like we'll release another 1.2 one day, in fact it will be 1.2.0, and before too long we'll have 1.2.1, 1.3.0, and on into the future, and this whole "1.2" thing will be a distant memory.

Want to help craft the future of dygraphs?

Here’s what we need from you: are you interested in helping us refactor dygraphs? Do you like writing tests? Is there a feature you're dying to implement? Do you have opinions about the plug-in architecture? Then we want to speak with you. Drop us a note at

Thank you

We wouldn’t have even considered building a new release if we felt it wouldn’t be a great benefit to all of you. Your support and feedback has been valuable and encouraging, so please keep it up.

Here’s Dan, hard at work releasing 1.0.0 for you!