Skip to content

Latest commit

 

History

History
235 lines (165 loc) · 5.32 KB

File metadata and controls

235 lines (165 loc) · 5.32 KB
theme ./
layout cover

OpenFeature

Standardizing Feature Flagging for Everyone


layout: intro

Welcome to OpenFeature

A CNCF Incubating project bringing a standardized, vendor-agnostic API for feature flagging across languages and platforms.


layout: section

What is OpenFeature?

An open specification for feature flagging


What is OpenFeature?

An open specification that provides a vendor-agnostic, community-driven API for feature flagging that works with your favorite feature flag management tool or in-house solution.

  • Vendor-agnostic - works with any feature flag backend
  • Community-driven - governed by the CNCF
  • Standardized - consistent API across languages and platforms
  • Extensible - hooks, providers, and evaluation context

What are feature flags?

Feature flags are a software development technique that allows you to change the behavior of your application without modifying the source code.

  • Gradual rollouts - release features to a percentage of users
  • A/B testing - experiment with different implementations
  • Kill switches - instantly disable problematic features
  • Environment configuration - different behavior per environment

layout: section

SDK Landscape

Supporting every major language and framework


layout: two-cols

SDK Landscape

Official SDKs available across multiple ecosystems.

::right::

  • Server-side: Go, Java, .NET, Python, PHP, Ruby, Rust
  • Client-side: JavaScript, React, Angular, Swift, Kotlin, Dart
  • Community: Growing ecosystem of providers and hooks

layout: section

Code Example


layout: image-right image: https://cover.sli.dev

Using the SDK

A simple example of evaluating a feature flag with OpenFeature:

import { OpenFeature } from '@openfeature/server-sdk'

const client = OpenFeature.getClient()

const showBanner = await client.getBooleanValue(
  'show-banner',
  false,
  { targetingKey: 'user-123' }
)

if (showBanner) {
  renderBanner()
}

layout: image-left image: https://cover.sli.dev

Provider Architecture

Providers are the bridge between OpenFeature and your feature flag backend.

  • Implement the Provider interface
  • Register with OpenFeature.setProvider()
  • Supports lifecycle events (ready, error, stale)
  • Multiple named providers for different domains

How does it work?

OpenFeature provides a unified API that abstracts the feature flag evaluation process.

1. Application

Uses the OpenFeature SDK to evaluate flags

2. Provider

Connects to your feature flag backend

3. Hooks

Extend behavior with logging, telemetry, validation


Tracking API

The new Tracking API enables experimentation support within OpenFeature.

Feature Status
Boolean evaluation Stable
String evaluation Stable
Number evaluation Stable
Object evaluation Stable
Tracking API Experimental
Flag metadata Stable

layout: two-cols

Why OpenFeature?

Avoid vendor lock-in and adopt a standardized approach to feature flagging.

  • Consistent developer experience
  • Easy provider switching
  • Built-in extensibility via hooks

::right::

Who uses it?

Backed by the CNCF and supported by major vendors:

  • Flagsmith
  • LaunchDarkly
  • Split
  • CloudBees
  • Dynatrace
  • And many more...

layout: section

OpenTelemetry Integration

Semantic Conventions for Feature Flagging


OpenFeature + OpenTelemetry

Standardized observability for feature flag evaluations through Semantic Conventions.

import { OpenFeature } from '@openfeature/server-sdk'
import { TracingHook } from '@openfeature/open-telemetry-hooks'

// Register the tracing hook globally
OpenFeature.addHooks(new TracingHook())

// All flag evaluations now emit OpenTelemetry spans
const client = OpenFeature.getClient()
const value = await client.getBooleanValue('my-flag', false)

Getting Started

Learn

Visit openfeature.dev for documentation and guides

Contribute

Join us on GitHub and help build the standard

Connect

Chat with us on #openfeature in CNCF Slack


layout: end

Thank You

Learn more at openfeature.dev