  Background: Using feature toggles is a technique that allows developers to
either turn a feature on or off with a variable in a conditional statement.
Feature toggles are increasingly used by software companies to facilitate
continuous integration and continuous delivery. However, using feature toggles
inappropriately may cause problems which can have a severe impact, such as code
complexity, dead code, and system failure. For example, the erroneous
repurposing of an old feature toggle caused Knight Capital Group, an American
global financial services firm, to go bankrupt due to the implications of the
resultant incorrect system behavior. Aim: The goal of this research project is
to aid software practitioners in the use of practices to support software
development with feature toggles through an empirical study of feature toggle
practice usage by practitioners. Method: We conducted a qualitative analysis of
99 artifacts from the grey literature and 10 peer-reviewed papers about feature
toggles. We conducted a survey of practitioners from 38 companies. Results: We
identified 17 practices in 4 categories: Management practices, Initialization
practices, Implementation practices, and Clean-up practices. We observed that
all of the survey respondents use a dedicated tool to create and manage feature
toggles in their code. Documenting feature toggle's metadata, setting up the
default value for feature toggles, and logging the changes made on feature
toggles are also frequently-observed practices. Conclusions: The feature toggle
development practices discovered and enumerated in this work can help
practitioners more effectively use feature toggles. This work can enable future
mining of code repositories to automatically identify feature toggle practices.
