What is feature flipping?
"an approach to development that helps solve some of the issues associated with risk management and quality assurance when a fast moving development team expands." Chris Campbell, 99designs
"Feature flags and flippers mean we don’t have to do merges, and that all code (no matter how far it is from being released) is integrated as soon as it is committed. Deploys become smaller and more frequent; this leads to bugs that are easier to fix, since we can catch them earlier and the amount of changed code is minimized." Ross Harmes, Flickr
Typically Dry Martin Fowler Explanation
"The basic idea is to have a configuration file that defines a bunch of toggles for various features you have pending. The running application then uses these toggles in order to decide whether or not to show the new feature." Martin Fowler, Famous Developer Type
Why would you do this?
Test new features in a live production environment
Allow stakeholders to view new features without a staging server, or a VM
Don't fear deployment
Easy to rollback
Test things on your users, react to responses
Get marketing off your back
How does it work?
Wrap content in simple conditionals
do some feature thing
Determining a feature’s state
1. Default: On or Off
2. Database / Persistent Store
3. Cookie (Oh yea.)
User.admin?, User.member?, User.courses.size > 4
Load > 5, AvgResponseTime > 2s
FeatureToggle (Symfony) github.com/marekkalnik/FeatureToggleBundle
Gargoyle (Django) github.com/disqus/gargoyle
Django Waffle (Django) github.com/jsocol/django-waffle
4.7/10 from 393 users
"Robert Downey Jr. is scraping the barrel bottoms. Billy Zane seems to have one expression: disdain/disgust. You want cliche's? This movie is one BIG cliche'." rlowe, New Orleans
Feature Flipping is not always appropriate
Database schema changes
Add, not alter
Remove when safe
Don't create technical debt
Clean up your shit.
How does Etsy manage development and operations?
Feature Bits: Enabling Flow Within and Across Teams