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

      E-Mail > max@malook.de

      Twitter > @max_malook

      G plus > +Max Malook

      FeatureSwitcher

      By Max Malook

      FeatureSwitcher

      Introduction to FeatureSwitcher library.

      • 3,573