Skip to content

Commit

Permalink
feat: tracking (#260)
Browse files Browse the repository at this point in the history
- Adds section 6: tracking
  - no normative sections
  - overview
  - goals/non-goals (temporary)
  
This is not final! Please review goals/non-goals especially, and add any
questions you might have.

---------

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Nicklas Lundin <nicklaslundin@gmail.com>
Co-authored-by: Weyert de Boer <weyert@gmail.com>
  • Loading branch information
4 people authored Jun 12, 2024
1 parent e368a5c commit d46e6dc
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions specification/sections/06-tracking.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: Tracking
description: Specification defining tracking API
toc_max_heading_level: 4
---

# 6. Tracking

[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)

## Overview

Experimentation is a primary use case for feature flags.
In practice, this often means flag variants are assigned to users at random or in accordance with a business rule, while the impact of the assigned variant on some business objective is measured.
Vendors and custom solutions often support a _tracking_ or _goal measuring_ API to facilitate the measurement of these business objectives.

### Goals

- Develop official terminology to support consistent implementation
- Specify a flexible API widely compatible with basic vendor functionality
- Define tracking event payload
- Define tracking event identifier
- Support A/B testing and experimentation use-cases
- Support client and server paradigms
- Provide recommendations around:
- Async vs sync
- Flushing mechanisms
- Event batching

### Non-goals

- Creating an experimentation platform
- Covering every user-tracking use case
- We will not define any data aggregation mechanisms
- We will not focus on "metrics", but instead, "facts"

### Design Principles

We value the following:

- Adherence to, and compatibility with OpenFeature semantics
- Maximum compatibility and ease-of-adoption for existing solutions
- Minimum traffic and payload size
- Ease-of-use for application authors, integrators, and provider authors (in that order)

0 comments on commit d46e6dc

Please sign in to comment.