Interesting: Continuous Integration vs. Feature BranchesIn this interview Martin Fowler advises against using Feature Branches, since it is incompatible with Continuous Integration:
So we very much follow the principles of continuous integration, which is not something you can do at the same time as feature branching.
- Martin Fowler
Fowler advises to use Feature Toggles instead of Feature Branches for the development of features that takes longer than a release cycle or features that the business does not want to have released yet.
I should also point out as well I do advocate using feature toggles for features that take more than a release to implement, but it’s only the second best solution in that case. The best solution is to find a way to release the feature’s capabilities incrementally and usually you can do that and people need encouragement to go down that path. And only when you can’t and absolutely can’t should you use toggles.
- Martin Fowler
These are interesting concepts and I wonder if they are equally valid for all kind of projects?
I think this advice is mainly aimed for projects with a compact, dedicated team with clear goals that is aiming at striding forward at a sustainable pace.
In open-source on the other hand, I see a flourishing ecosystem of projects where people are working together in a more loosely coupled way. "Social coding" on GitHub is the best example here, where forking and submitting patches is made ridiculously easy.
Here I see the concept of feature branches as a very sensible concept...