Feature flagging (also known as feature toggles, feature switches, feature flippers etc.) is a development practice that allows teams to decouple code release from feature release, and is something that we’re big fans of, and have been practicing here for the last few years.

For more information on feature flagging and how useful the practice can be, see these notes:

Introducing Bandiera

Today we’re open sourcing our in-house feature flagging service, and all of it’s client code - we call it Bandiera. We use it to enable us to deploy our application code, and turn on new features as and when we’re ready - entirely outside of the deployment cycle.

You can see a demo instance of Bandiera in action at http://bandiera-demo.herokuapp.com/. Feel free to add new features/groups and play about - the instance will be reverted to a default state every hour.

Using Bandiera

Bandiera is a very simple ruby application that requires a MySQL or PostgreSQL database backend. You can find details on how to run it here:

https://github.com/nature/bandiera/wiki/Running-a-Server

Alternatively you can quickly deploy it to Heroku using the “Deploy to Heroku” button on the repo homepage.

##Using Bandiera in Your Applications

Once you have access to a Bandiera server, you’ll need a client library to talk to it. We’ve written libraries in the following languages (the ones we use) but welcome contributions for other languages:

Please see the README’s within the each project for more information on how to use the client.

Development

We welcome contributions in the form of pull requests and issues.

If you want to hack on the code, you can clone the git repo:

git clone git@github.com:nature/bandiera.git

Then check out the getting started guide in the repo.

Please ensure that you have adhered to the contribution guidelines before submitting any pull requests.