We’re pleased to announce the release of Drake version 1.0.1. This release is a quick follow-up to the recently released Drake 1.0.0.
The 1.x version of Drake provides easy installation, including a Homebrew recipe for Mac users.
We’ve also included a commemorative logo upgrade, check it out!
Many thanks to @amalloy for his ownership, guidance, and leadership with Drake’s core codebase since he started at Factual.
Many thanks to @mavericklou for taking ownership of specific bugs & features and owning release management. Mav notably added a shiny new install/upgrade script, which makes it dead simple for Linux users to install and upgrade Drake. Mav also took over the Homebrew recipe for Drake and has been keeping it up-to-date.
Thanks to @chen-factual for recently contributing an honest-to-goodness missing feature to Drake, allowing us to better justify this 1.0.1 release. It’s not too hard to ask for a feature, but it takes brave and good people like Chen to actually release a feature.
And as always: A heartfelt thanks to everyone in the community who has contributed bug reports, feature requests, and most awesomely, code contributions and pull requests!
Some background on Drake and project versioning:
Drake (Factual’s data processing workflow tool) was first open sourced by us on January, 24, 2013. It was versioned 0.1.0 at that time. Over time we upgraded Drake and moderately increased the version tag. Two years in we considered Drake “barely famous” and found ourselves at version 0.1.6.
There’s a kind of unwritten rule of humility in the Clojure community around open sourced library versioning. Authors are reluctant to presume too much. As an example, the Leiningen build tool defaults a new project’s version to 0.1.0, but then some authors change that to 0.0.1 as a first step on a new project. Because, you know… let’s not be presumptuous.
Well, I was bragging to Alan about a Drake release, which I was calling 0.2.0. Alan rolled his eyes. He was like, “Considering the conventions put forth by Semantic Versioning, and considering that Drake has been in production at this company as well as other companies for years now, why not call it version 1 already?” I pushed back a bit, by surveying two existing open source Clojure projects I know of:
- Aleph, Zach Tellman’s notorious asynchronous library for Clojure, is currently versioned 0.4.x. Keep in mind it’s been in production at Factual and other serious minded shops for years now. I asked Zach when he plans to cut a 1.0.0 and his reply started, “Each minor release has been effectively a ground-up rewrite…”.
- Riemann, Kyle Kingsbury’s network event stream processing system written in Clojure, also enjoys prime time adoption in various production environments. And yet it’s versioned 0.2.x. I asked Kyle if he plans to cut a 1.0.0:
Kyle: Naw, I don’t think it’s 1.0 material yet. 🙂
me: What would it take to justify a 1.0 ??
Kyle: API stability, a bunch of protocol enhancements, dropping a bunch of deprecated stuff, performance stuff, bunch of bugfixes, disk persistence, maybe determinism & a better stream compiler…
me: when will the madness end !?
Kyle: Probably never? Or, like, we could say that a tool may be sufficiently stable for a job while not being finished yet. :-/</span>
Alan was copied on all these emails. He wasn’t convinced, and questioned my motives. “Chesterton’s Fence1!” was my last defense, but it didn’t stand (so to speak). In the end, Alan and Mav outvoted me 2-to-1 for Drake 1.0.0. Plus Artem (Drake’s original designer) was enthusiastic. So we presumptuously bumped Drake’s version to 1.0.0 and cut a release.
Of course I made sure to warn my colleagues: “You should most certainly not use this version of Drake! As a general rule, do not use a version x.0.0 of any product. Sorry, you’ll need to wait for Drake 1.0.1 or whatever…”.
As of today, we’re closing that loop. Drake 1.0.1 has been released, a.k.a. “Drake 1”. Please consider it officially usable and ready for production… if that’s not too presumptuous of us. We hope you like it.
Go make some great workflows!
– Aaron Crow, Factual engineer, Drake contributor
- Thanks to Alan for teaching us about Chesterton’s Fence(s).