Release Early, Release Often

It’s an old saw, but I was wondering today why some projects don’t cut releases more often. The repo for a project may contain the bug fix you need, but it’s just sitting there on GitHub. I think it often just comes down to the fact that making releases is tedious.

You have to update the version number (perhaps in multiple places), update the change log (hopefully), merge your development branch into your release/master branch, create a tag, clean your dev environment, build a distributable package, upload that package, maybe upload some docs, push some commits, etc.

Doing all that manually isn’t much fun, so…

Write a script to do it for you.

Write it in Python or Bash or as a make target or whatever floats your boat. It’s a one-time cost that pays off big.

You can’t quite automate everything–like writing a (good) change log–but you can automate most of the process.

As an example, I wrote this release script for a project I started a month and half ago. I’ve already made 13 15 26 alpha releases because it’s so easy to do. Putting in an hour or two up front was well worth it.

If you’re feeling lazy, you can use something like zest.releaser (for Python projects). I’ve used it in the past and it’s been the inspiration for all the release scripts I’ve written since.

One thought on “Release Early, Release Often

  1. You are correct, it should be easy. But you are neglecting a few more:

    1) responsibility, once you have in the open ecosystem, you sometimes need to react quickly to solve it, otherwise you might cause you users havoc

    2) testing can be hard task, and time consuming, not all projects even have tests, not to talk about good functionality coverage.

    And that’s the small projects, the bigger ones has much more issues around releases, and how stable they expect them to be.

    People are doing a lot of effort to get the flow working, but it’s far from tribal task (especially if you are doing that projects out of the goodness of your heart)

Leave a Reply

Your email address will not be published. Required fields are marked *