Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Branching hell, where is the risk vs productivity tipping point? [closed]

My company is floating the idea of extending our version numbers another notch (e.g. from major.minor.servicepack to major.minor.servicepack.customerfix) to allow for customer specific fixes.

This strikes me as a bad idea on the surface as my experience is the more branching a product does (and I believe the customer fixes are branches of the code base) the more overhead, the more dilution of effort and ultimately the less productive the development group becomes.

I've seen a lot of risk vs productivity discussions but just saying "I think this is a bad idea" isn't quite sufficient. What literature is there about the real costs of becoming too risk averse and adopting a heavy, customer specific, source code branching, development model?

A little clarification. I expect this model would mean the customer has control over what bug fixes go into their own private branch. I think they would rarely upgrade to the general trunk (it may not even exist in this model). I mean why would you if you could control your own private reality bubble?

like image 747
Syndrome Avatar asked Mar 10 '09 19:03

Syndrome


3 Answers

Can't help with literature, but customer-specific branching is a bad idea. Been there, done that. Debugging the stuff was pure hell, because of course you had to have all those customer-specific versions available to reproduce the error... some time later, the company had to do a complete rewrite of the application because the code base had become utterly unmaintainable. (Moving the customer-specific parts into configuration files so every customer was on the same code line.)

Don't go there.

like image 161
DevSolar Avatar answered Oct 23 '22 04:10

DevSolar


I agree its generally the overhead to handle customer fixes is high, but I wouldn't say don't do it.

I would say charge the customer an arm and a leg (and them some) if they want that much attention. Otherwise don't do customer branches.

like image 34
Pyrolistical Avatar answered Oct 23 '22 03:10

Pyrolistical


You describe the changes that go into the customer branch as "fixes". Because they are fixes, I am assuming that they will also be made in the trunk and are really just advanced deliveries of future bug fixes. If this is the case, why not just create a new "servicepack" (from question: major.minor.servicepack) and give that version to the customer.

  1. For example, you release version 1.2.3.
  2. Customer #1 needs a fix, create version 1.2.4 and give it to Customer #1.
  3. Customer #2 needs a fix, crate version 1.2.5, give it to Customer #2 and advertise that they also get interim fix "for free".
like image 2
Alex B Avatar answered Oct 23 '22 03:10

Alex B