Heroku is a cloud computing platform, i.e. a place where you can run your applications. When you author an application on Heroku it is split into two parts. One part, the buildpack, is responsible for building your application; while the other part is the actual application’s sources.
I found this interesting. Modularity always serves to separate concerns. What concerns, and who’s concerns, are natural next questions. Buildpacks make it easier to get started with Heroku; so they address one of Heroku’s concerns – i.e. “How can we get people to use our product.” – by lowering the barrier to entry.
There are many buildpacks. Heroku provides a half dozen, and other people have build a few hundred more. Each build packs makes it easier to get an app based on some programming framework started. For example there are ones for: ruby, node.js, erlang, wordpress, common lisp, go, etc. etc. etc.
Of course how exactly any given application get’s built tends to quickly become unique. I suspect that most serious app developers customize their buildpacks. Heroku makes extensive use of git to move things around, so naturally a lot of the buildpacks are on github. I got thinking it would be interesting to look at some statistics about them.
The chart above has one dot for each of N buildpacks (in some cases multiple buildpacks have landed on the same dot). Notice that the chart is log-log. The vertical axis indicates how many +1 like stars the buildapp has received – so that’s a proxy for how popular it is. The horizontal axis shows how often the buildapp has been forked.
In one’s fantasy the perfect build app for a given programming platform would fufill all the needs of it’s app developers. In that case it would never need to be forked. But three things work against that fantasy. First off the buildapps aren’t perfect, in fact they tend to simplistic because their short-term goal is to make it trival to get started. Secondly – I think – the building of applications tends to sport all kinds of unique special cases. And finally the usual third reason – it’s hard work to push patches around, so even if you improve a given buildpack the chances your enhancments flow back to the master buildpack are – well – iffy.
Anyhow, I wanted to share the picture. (oh, and zero was mapped to .1)