Where are the Capistrano alternatives?

Is Capistrano the new CruiseControl?

I used to love CruiseControl, back when setting up a continuous integration build was a wonderful new thing, and you tolerated all its quirks and shortcomings and just made it work to get that build goodness going.  But time moved on, and the rate of updates seemed to stagnate, and well, other cool stuff happened along.  Now, despite Thoughtwork's rejuvenation efforts, its hard to sell CruiseControl to a dev group. We currently group use Hudson, but there are other more and less ornate options out there.

Has the same stagnation happened to Capistrano?

We're trying to pool some automated deployment goodness between a few teams. One team is just setting up, one has a Capistrano based setup, and the other started out with cap, but became frustrated and crafted their own ruby solution. Hmmm, what to do?

The Operations team we're all working with would prefer one flavour, their friendliness towards automated deployment is relatively new, and hard won. The dev teams should agree on a common set of tools and work with them.  I'm not so hot on developing our own as configuration management and deployment setups can get surprisingly complex and cumbersome to refactor.  It isn't as easy as it looks.

I'm inclined to push for Capistrano, regardless.  Sure, it hasn't been updated in almost a year, but then again, how much has the problem changed? (aargh, I remember saying the same thing about CruiseControl!).  Perhaps our frustrations with it are simply through not understanding it thoroughly enough.  We need to look deeper.

Or look elsewhere.

Cosimo Streppone has a good roundup of Capistrano alternatives making a distinction between configuration management and "last mile" deployment, which is fair enough.

configuration tools:
deployment tools:

In the end, he went with Puppet for config, and Fabric for the deployment.  His main reluctance was that Fabric does not support parallel processing.  I'm not sure if that is an option for us, as Fabric is Python.  We're having enough issues supporting Java + Ruby bilingualism without adding another dialect (if you say "Erlang" I'm going to have to strike you again, my friend).

This as good a list of options as I've been able to find, but there is a lot of overhead to adopting many of the configuration setups.  We may end up sticking with Capistrano just because of its simplicity, like a happy old car.


In praise of efficient production

My favorite place for lunch is Don Don's in Melbourne.  Not just because its yummy, but also because it is blindingly efficient.  Through a small menu, efficient process, and massive energy you can cross the street, get a beautiful Sashi Don (picture below) take away, and be out on the curb in time for the next walk signal.  I am not making that up.

They could probably be given the same analytical treatment given Starbucks Barista Heuristics, which I have to admit, also shares some beauty in efficiently producing happy snacks.

(Don Don images via Bunrab Daily Feed, thanks!)


Project Management Zeitgeist

Liquid Planner has put out a list of the top thinkers in project management today which makes pretty good reading.

Granted, they've got Steve McConnell at the top of the list (with disclaimers, he's on their board), but I was happy to see a mixture of familiar and unfamiliar names.  Which means I'm feeling the awesome because I've read a bunch, and I'm feeling the tired because my reading list just blew out. Again.


Yes, of course, SLA's are essential. But they still suck.

Entp makes a spirited case against SLA's and I like it.  I wish I could use it to eradicate SLA culture.  But I can't.

There's something confrontational right out of the box about SLA's.  Negotiating them is a painful process, getting to signoff has all the feelgood moments of negotiating a pre-nuptual agreement.  And in practice, when you have to go to the SLA, its never a shining moment for inter-departmental harmony.

What the case highlights is how poisonous it is to assume that the SLA's describe an acceptable support procedure.  The SLA should be considered the absolute worst case support, and actual support practice should aspire to be much better.  Problem is, the SLA is almost always encoded as the acceptable process.


very handy tool: Rubular

Thanks to James for showing me Rubular, a Ruby regular expression editor.  It is extremely handy if you're trying to fashion truly impenetrable, er, awesome regular expressions.


W. Edward Deming