FeatureSwitcher
Brings features under control
Branch by feature workflow
- Create a branch for a feature
- Write required code
- Continuously merge from master
- Merge the branch into master
- Continuous integration detects problems
- Fix the problems on feature branch
- QA detects problems
- Fix the problems on master
- Release new version
Problems on live system
- Revert to previous version
- All features introduced in the version are gone
- Provide a hotfix version
- Hotfix the problems
- Release new version
Feature switch workflow
- Write required code
-
Guard integration places with a switch
- Check in into master
- Continuous integration detects problems
- Fix the problems
- Release new version
Problems on live system
- Disable the switch
- Other features introduced in the version are present
-
Fix the problems without hassle
- Release new version
- Enable the switch
Enable feature permanently
- Remove switch on integration points
- Remove unused code
Benefits
- Less merges required
- Code is continuously integrated
- Simple release management
- Easy way to revert if problems occur in production
Handicaps
- More combinations to test
- Multiple code paths to maintain
How-to
Get the library
Install-Package FeatureSwitcher
Create a class for the feature
class Colorize : IFeature {}
Guard integration places with a switch
static void Main(string[] args)
{
if (Feature<Colorize>.Is().Enabled)
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Yellow;
}
Console.WriteLine("Hello world!");
}
Demo
Questions?
Links
Contact
FeatureSwitcher
By Max Malook
FeatureSwitcher
Introduction to FeatureSwitcher library.
- 3,701