Feature toggle
Feature Toggle,[1] (also Feature Switch, Feature Flag, Feature Flipper, Conditional Feature, etc.) is a technique in software development that attempts to provide an alternative to maintaining multiple source code branches, called feature branches.
Continuous release and continuous deployment enables you to have quick feedback about your coding. This requires you to integrate your changes as early as possible. Feature branches introduce a by-pass to this process. Feature toggles brings you back to the track, but the execution paths of your feature is still "dead" and "untested", if a toggle is "off". But the effort is low to enable the new execution paths just by setting a toggle to "on".
The technique allows you to release a version of a product that has unfinished features. These unfinished feature are hidden (toggled) so they do not appear in the user interface. This allows many small incremental versions of software to be delivered without the cost of constant branching and merging.
Whilst the pattern can be implemented very simply in most programming languages there are libraries [2] available to further simplify usage.
As stated by Martin Fowler a Feature Toggle is the second-best solution. The best solution is to find a way to gradually integrate, without Feature Branches or Feature Toggles.
Feature toggling is used by many large websites including Flickr,[3] Disqus,[4] Etsy,[5] Gmail.[6] and Netflix [7]
References
- ↑ Martin Fowler 29 October 2010 (2010-10-29). "FeatureToggle". Martinfowler.com. Retrieved 2013-09-27.
- ↑ "FeatureToggle". Github.com. 2013-02-17. Retrieved 2014-01-16.
- ↑ http://code.flickr.net/2009/12/02/flipping-out/
- ↑ http://blog.disqus.com/post/789540337/partial-deployment-with-feature-switches
- ↑ http://codeascraft.com/2011/02/04/how-does-etsy-manage-development-and-operations/
- ↑ http://gmailblog.blogspot.com/2011/12/developing-gmails-new-look.html
- ↑ http://techblog.netflix.com/2013/11/preparing-netflix-api-for-deployment.html
External links
Tools
- Flip, an open source framework for feature toggles in Java
- Togglz - Feature Flags for the Java plattform
- FeatureToggle .Net - Feature toggles for .Net developers