We shared our research of the implementation of the feature flags, using LaunchDarkly, with our VSTS extensions in a series of blog posts:
- Phase the features of your application with feature flags
- Building VSTS Extensions with feature flags : Part 1, Part 2, and Part 3
- Azure Functions : Prepare for continuous delivery, Provisioning and configuring our Azure Function infrastructure, Integration tests automation, and Integrating monitoring with Application Insights
Why did we pick the Roll Up Board widget extension?
It’s a simple extension and we had a few applicable items on our backlogs. This extension was the best candidate for our firsts implementation of features flags.
Enabled/Disabled the telemetry monitoring to Application Insights
Over time we found that telemetry was not always relevant. For example, extensions in the Canary ring do not need to be monitored. Teams usually ignored that telemetry as noise.
In another case, one of our extensions was collecting and sending too much telemetry. We incurred unnecessary cost and had to temporarily disable the telemetry.
With the feature flag we’re able to activate or deactivate the telemetry without the need to release an update for the extension. We simply flip a flag or add a rule in the LaunchDarkly portal. You can apply these rules to a VSTS account or a specific user account.
For each feature flag we specified the default rule  - all user and all VSTS account by default send telemetry. We add a specific rule to ignore telemetry from our sandbox VSTS account , and individual user, where needed.
When disabled, the extension displays a message in the F12 Debugger console.
See Building VSTS Extensions with feature flags for details.
Enable/disable the display logs traces in browser developer tools
When developing an application (here we are talking about a VSTS extension) we often generate a lot of traces to enable debugging and troubleshooting.
These traces are especially useful with a web application for the development team. For the user, however, the traces are disruptive and of no value.
We allow the user to choose whether or not to capture logs in the F12 Debugger console.
Unlike other widget configuration parameters, this setting applies only to the current user and not for all team project users. By default, we do now show the logs. The user must enable the feature to see them.
On the side of LaunchDarkly, this parameter is simple. We just configure the default value of the rule, as shown.
What about TFS On-Prem?
We are currently investigating constraints with TFS on-prem, for example certificates and connectivity. For the time being, the Roll-up Board widget extension does not support feature flags on TFS on-prem. If you updated the extension on TFS on-prem, the extension will default to telemetry=enabled and logs=disabled.
Encourage other extension teams to add support for feature flags and investigate A|B testing using LaunchDarkly.
THANKS REVIEWERS - Niel Zeeman, David V. Corbin, Edward Fry, Darren Rich