August 1st, 2015
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. :-/