← Back to team overview

launchpad-dev team mailing list archive

[lep] feature flags

 

I would appreciate review comments on https://dev.launchpad.net/LEP/FeatureFlags

----
goal state: Launchpad has a registry of configuration options that can
be changed by admins through the web ui, without restarting Launchpad.

As a Launchpad developer/operator
I want to turn features on and off without a heavyweight deployment
so that I can more adroitly test and deploy new features (A:B testing,
long-running closed betas, etc)
and so that I can recover from emergencies by cutting-off problem features

As a Launchpad user
I want you to tell me about impending downtime through the web ui
so that I can I can plan not to be using Launchpad when it's offline/readonly.

This is not a mechanism for general per-user configuration
This is not a complete replacement for static configuration or other
parts of the deployment process
This only affects new code that specifically uses it; it doesn't
magically affect existing code
This may become a replacement for things that are currently done
through SQL queries or configuration files
This is site-wide not per-appserver.
This does not yet replace the readonly-mode flag (implemented as a
special file on disk) because it's special.

This embraces "feature flags" and more, such as site-wide notifications.
Scenarios:

Dark launches (aka embargoes: land code first, turn it on later)
Closed betas
Scram switches (omg daily builds are killing us, make it stop)
Soft/slow launch (let just a few users use it and see what happens)
Site-wide notification
Show an 'alpha', 'beta' or 'new!' badge next to a UI control, then
later turn it off without a new rollout
....

-- 
Martin