Why we used Feature Branching Alan Parkinson CEO, Hindsight Software Ltd
May 17, 2015
Why we used Feature Branching
Alan ParkinsonCEO, Hindsight Software Ltd
we publish a
Universal Binary that
supports 7 platform versions
with breaking API changes
Deploy to Production
FunctionalTests
CommitStage
Deploy to UAT
Deploy to Dogfood
Every 3 weeks
Early Access Customers:Hourly or Daily release
A Feature Toggle Headache
Customers deploy to their own hardware=
Little control over data and feature toggles
Knight Capital lost $440 million in 30 minutes
“the problem might be a test program in production—or, possibly, a configuration flag that wasn't ready for production and
should have been turned off”
Rick Lane, CTO of Trading Technologies
Technical Support
Increased complexity and incidence rates
Disabled by Obscurity
“one danger with feature toggles is an accidental exposure, when someone forgets to
wrap the UI feature in a toggle tag”
Martin Fowler
Noisy Testing
Batching many unrelated commits together is a headache for risk based test analysis
FEATURE BRANCHING OUR WAY
Inexperienced Team
Junior team members are reassured by the safety net
No “jack of all trades”, people collaborate on branches
Pull Requests offer a learning opportunity
Our take on Feature Branching
• Build from master for releases• No direct commits to master• Each issue/feature/bugfix has a branch• No merges to master, open Pull Requests• Manual testing occurs on Pull Requests
Merging is HARD work
Refactoring code is bad for merging
Use a SCM with good merge support – git
Do small merges
Merging is a CHANGE to the codebase
Tests are run Before and After the merge
Feature Branches in CI?
Once upon a time you couldn’t get CI for feature branches. It’s now possible with Jenkins and
Bamboo
Branches can diverge massively
Every feature branch build merges from master before compiling
Summary
Loosing control of Feature Toggle configuration management significantly increased our
Technical Support costs
We went back to the drawing board and mitigated known issues with Feature Branching
Questions?
Alan Parkinson - @alan_parkinsonCEO, Hindsight Software