10 Oct

Launched: Atlassian Bitbucket Pipelines and HipChat Integrations

LaunchDarkly Atlassian Bitbucket Pipelines and Atlassian HipChat Integrations - Feature Flags

We’re pleased to announce the launch of two LaunchDarkly integrations with Atlassian.

From “concept to launch,” Atlassian gives teams an integrated approach to build software. Now with LaunchDarkly, you can get more control over production rollout via Bitbucket Pipelines and HipChat integrations.

Feature flagging is a way of gating functionality to gain better control over a release – serve to a limited segment, get feedback and facilitate rollbacks without having to redeploy. LaunchDarkly helps teams to manage flags at scale. With a management platform in place, feature flags become prolific and it becomes even more significant to integrate these with your DevOps tools.

With LaunchDarkly, you can create and enable feature flags via Bitbucket Pipelines, giving you the control you need to release confidently, reduce risk, and gather feedback on your new functionality.

With LaunchDarkly’s HipChat integration, you have visibility into all feature flag changes in real-time within your team’s collaboration tool.  See all changes to flags, including the team member making the change and the applicable environment, and do this without leaving your native workflow.

LD HipChat

“Using Bitbucket Pipelines and LaunchDarkly together unlocks the true power of DevOps and continuous delivery. Our integration allows customers to have end to end feature control, for risk mitigation and quicker time to market,” says Edith Harbaugh, CEO LaunchDarkly.

Together, LaunchDarkly’s integration with Atlassian is bringing premier DevOps tools to the space.  Read about how Atlassian uses LaunchDarkly internally here.

28 Sep

Launched: Enterprise Feature Flag Management

Before using LaunchDarkly, many of our customers were already feature flagging using internal tools or open source products. They used feature flags to mitigate risk, manage releases, and deploy better software, faster. However, they learned that creating a handful of feature flags was easy, but managing them at scale was extremely hard. Flags would go stale, accrue technical debt, and become neglected. It was hard to know who was responsible for maintaining and cleaning up a flag or to know which flags were temporary and which were permanent.

Flags inherently need some form of organization. You can have multiple flags that control different parts of a single feature, flags that control configurations, and flags that should only be managed by certain people. This was very difficult to implement in internal systems.

LaunchDarkly Enterprise Feature Flag Management

 

To improve feature flag management for teams, we’re excited to launch some new management features:  flag maintainer, flag tagging, flag descriptions, and rich flag variations.  These new features complement our existing management tools like flag statuses, custom roles, and the flag dashboard.

You can find most of these new features in the Settings tab of your feature flag.

LaunchDarkly Feature Flag Management Settings

Flag Maintainer

This feature allows you to assign responsible for the flag to any team member. It allows you to know who to contact if a flag needs to be cleaned up or who to contact for help. By default, the maintainer will be the individual who created the flag. You can assign any member of your team as the maintainer for a particular flag.

LaunchDarkly Feature Flag Maintainer

Flag Descriptions

You can now create custom descriptions for each feature flag. These human-readable descriptions help you identify the flag and its functionality in-depth. This is critical for effective feature flag management, organizing flags, and communicating the flag’s purpose to your team members.

LaunchDarkly Feature Flag Descriptions

Flag Tags

Adding tags to your flags (like Front-End, Ops, Marketing, Restricted) helps you categorize flags and manage custom permissions.

Here, we have added the tags “mobile”, “marketing”, and “unrestricted” to a feature flag.

LaunchDarkly Feature Flag/Toggles Management Tags

Rich Flag Variations

When creating a feature flag, you can specify a name, description, and value for each variation. This allows you to explicitly describe the purpose of each flag variation, especially if you are using multivariate flags returning numbers, strings, JSON objects, or JSON arrays. For example, you can have a flag that returns numbers and then add a name and description to describe each variation.

LaunchDarkly Multivariate Feature Flag / Toggles Names and Descriptions

We hope these new features are able to improve your team’s ability to manage feature flags and mitigate technical debt. If you have any questions or feedback, we would love to hear from you at support@launchdarkly.com .

 

20 Sep

Launched: Prerequisites for Flag Dependencies

LaunchDarkly prereqheader

To perform smarter, conditional feature releases, our customers have asked for the ability to control feature dependencies in LaunchDarkly. In other words, they wanted to evaluate Flag B only if Flag A was “on” for a particular user.

For example, let’s say we have a feature flag that controls the visibility of a checkout flow with multiple steps. Within that flow, we have additional feature flags that control smaller elements, like a button and a modal. We want to make sure that the checkout flow is actually “on” for a user before we evaluate the flags for buttons and modals.

To provide this functionality, we have launched Prerequisites (beta), which lets you add a list of flags and their expected values as prerequisites to enable a feature.

Prerequisite Example

Let’s say we have two flags that control an API: api_reads and api_writes. In this case, it makes no sense to have write access to the API if you do not have read access. With prerequisites, you can make sure that api_reads is “on” with the user receiving true before api_writes is evaluated for that user.

You can manage your prerequisites in the feature flag’s Targeting tab:

LaunchDarkly Feature Flag / Toggle Dependencies - Prerequisites

You can add as many prerequisites as you want to a feature flag. We have checks built in to ensure that there are no circular dependencies and that deleted flags are automatically removed as dependencies.

Example Use Case

Mutually exclusive experiments

Let’s say we want to test whether the size or color of a button affects user engagement, but we want to run these two experiments at the same time.  Prerequisites gives you the ability to compartmentalize experimentation , allowing you to run exclusive experiments without hardcoding the logic into your codebase.  In this case, we want to ensure that users who receive the button size experiment do not receive the color experiment.

First, we have a feature flag that shows a red button to 50% of users:

LaunchDarkly Feature Flag Rollout

Second, we have a feature flag that shows a big button to all users who are receiving false for the ‘Red Button’ flag:

LaunchDarkly Feature Flag Rollout - Prerequisite flag dependency

In other words, all users who receive true for the Red Button flag will receive false for the Big Button flag.   This means that no user will get Red and Big for their button style.

Here is some example code (Java):

However, what if you now want to test making the button both Red and Big ?  You can do that with LaunchDarkly by simply changing the prerequisite value to true:

LaunchDarkly Feature Flag / Toggle Prerequisites - Inclusive Experiment

No code changes are needed. The beauty of this example is that your experiments are completely decoupled from your codebase.

There are many exciting ways to use prerequisites, especially when you take full advantage of our multivariate feature flags and custom rules.  If you have any questions or feedback, please send them to support@launchdarkly.com and we’ll be happy to help!

14 Sep

Launched: Custom Targeting Rules

LaunchDarkly custom rules targeting with feature flags

A goal of LaunchDarkly is to provide our customers with the ability to target your users to meet the needs of your unique use cases.  We have always allowed you to target individual users or groups by any attribute that you define: name, e-mail, group, ID, country, age, etc.  However, we did not let you perform granular percentage rollouts for each attribute, nor did we allow you to construct conditional targeting rules. Many of you have asked for this!

Now, we are excited to launch custom targeting rules, allowing you to construct a conditional rule using a user attribute, operator, and value.

Use Cases

Using both boolean and multivariate feature flags, you can perform extremely powerful and granular user targeting:

  • Roll out a new feature to users who registered before a certain date
  • Perform a percentage rollout for all of your users who live in Canada and the United States
  • Release a feature to your beta testers whose e-mail address ends with gmail.com
  • Turn on a VIP checkout system for all users who spend more than $100 per month
  • Release a new feature to 10% of users who belong to your Gold Plan and who signed up before August 1st, 2016
  • Target all of your users above age 35, and show the one-click checkout to 30%, the two-click checkout to 20%, and the original checkout to 50%.

Custom Targeting Rule

For a more concrete example, let’s say we have a feature flag that controls our app’s checkout flow.  This multivariate flag has three variations: one click checkout, two click checkout, and original checkout.  Here, we are performing a percentage rollout that targets all users whose email ends with gmail.com or yahoo.com:

LaunchDarkly feature flags and toggles using custom conditional targeting rules

Constructing a Rule

Let’s now build a rule using LaunchDarkly.  Here is a rule that serves the ‘true’ variation to all users whose e-mail address ends with gmail.com:

LaunchDarkly Custom Targeting Rule

You can target users by using any attributes that you send to LaunchDarkly, like group, country, age, and device.  For each feature flag, you can create as many custom targeting rules as you would like.

Additionally, you can add multiple conditions to a rule.  Users must meet all the conditions in a rule to match the rule. If any of the conditions are not met, the user will not match the rule.

Here, we’ve created a custom rule with two conditions. This rule serves true to all users whose e-mail address ends with “gmail.com” and whose country is either “USA” or “Canada”.

LaunchDarkly feature flags / toggles custom rule with multiple conditions

If we want to do a percentage rollout instead, we can select “percentage rollout” from the dropdown and allocate users accordingly.  Here, we have are serving “true” to 25% of users whose ‘groups’ attribute is “beta_testers”.

LaunchDarkly feature flags / toggles percentage rollouts using attributes

There are many exciting ways to use custom rules, especially when you take full advantage of our multivariate feature flags.  If you have any questions or feedback, please send them to support@launchdarkly.com and we’ll be happy to help!

09 Sep

Launched: Multivariate Feature Flags

LaunchDarkly has always supported boolean feature flags, which came with two pre-defined variations: true and false. This satisfied our customer’s use cases for risk mitigation and end user control.

As our platform grew, so too did our customers’ requests for more powerful ways to harness feature flags, like managing user plans, app configurations, and multiple variations of a feature.

To meet these use cases, LaunchDarkly now provides support for multivariate feature flags. A multivariate flag allows you to define two or more custom variations. These variations can be strings, numbers, JSON objects, or JSON arrays.

ld_flags-1

Creating a Multivariate Feature Flag

The next time you create a feature flag, you’ll be able to specify which kind of flag you need: boolean or multivariate.

Here, we have created a multivariate flag that serves strings as variations. There is no limit to the number of variations you can add to a multivariate feature flag, making it very powerful for complex use cases and to manage two or more variations of a feature.

LaunchDarkly multivariate feature flags and toggles with multiple variations

Multivariate Percentage Rollouts

Now, you can easily perform percentage rollouts using multivariate feature flags. In this example, 10% of users will receive one-click-checkout, 10% will receive two-click-checkout, and 80% will receive original-checkout.

LaunchDarkly multivariate percentage rollouts for granular user targeting

Multivariate Individual User Targeting

We have also revamped our user targeting UI to support multivariate feature flag user targeting. This UI allows you to easily target individual users by key.

In this example, bob@example.com will get the one-click-checkout , john@example.com will get the two-click-checkout, and sarah@example.com will get the original-checkout.

LaunchDarkly multivariate individual user targeting

Multivariate Rollouts Using Custom Rules

You can also create custom rules to serve variations based on any user attributes you send us.

In this next example, we have two rules. The first rule serves two-click-checkout to all users whose country is USA. The second rule targets users whose email ends with example.com and serves one-click-checkout to 50% and two-click-checkout to 10% of those users.

LaunchDarkly multivariate feature flag / toggle rollouts using custom targeting rules and user attributes

All users who have not been targeted in the custom rules or who have not been individually targeted will fall to the Default Rule.

In this next example, all users will receive original-checkout if they have not been individually targeted and have not matched any custom rules.

LaunchDarkly Default Rollout Rule

We hope you find multivariate flags useful. Send us feedback at support@launchdarkly.com

29 Jun

Launched: Event Stream API

One of LaunchDarkly’s core strengths is that the entire product is driven by a REST API.  This means that everything in the app can be accessed programmatically– including modifying feature flags, goals, accessing A/B test results, and more.

There was one notable exception to this— we did not provide a way for customers to access their raw analytics events. This can be a huge amount of data, so a normal queryable REST API is not the most reasonable solution.

Real-Time Event Stream API

To fill this gap, we have launched an event stream API that provides a real-time stream of raw analytics data.  These events include feature flag requests, analytics events, custom events, and more.

LaunchDarkly Event Stream API A/B Testing Analytics and Data

Benefits

Customers can harness the event stream API for their own internal analytics platforms or build custom integrations tailored to their specific needs.  You can then leverage user data to analyze metrics like conversions, revenue, and application performance.

Connecting to the stream

Accessing the API is simple. This is how to do it with curl:

Check out the documentation for more information.