Project - MVP

This page is currently a draft and will being updated frequently due to our constantly changing requirements. Please star or follow this page to be notified of changes.

https://team.atlassian.com/project/FLAGB1-2

Overview

In this stage, we focus on initializing the different open-source components of Flagbase. The outcome of this project will determine whether we continue pursuing this endeavor or not. We will use this stage to validate the idea. During this stage we will focus on developing our OSS components. We will also lay the foundations for our development practices and build a strong engineering community.

Read our blog post for more details regarding the MVP (aka stage 0).

Success Metrics

We’ll use the following metrics to determine whether or not we’ll continue with this project. We expect to satisfy these conditions by: Feb 24, 2022

  • Stars >= 100

  • Forks >= 30

  • Discussion posts >= 100

Note: we will need to filter out internal stat boosters. We can’t count our own stars, forks, discussion posts etc, in order to ensure integrity.

MVP requirements

  • As a user, I’m able to manage feature flags via the core’s REST API.

  • As a user, I’m able to target users by a set of rules I specify, which can also be weighted.

  • As a developer, I’m able to use the Javascript SDK to get evaluated feature flags for a particular project.

Stories / Tasks Breakdown

Below we’ve scoped out the work required for each software component.

Persona

Description

Persona

Description

Developer

  • People who contribute Flagbase product(s). This includes members of the OSS & COM development teams.

  • People who integrate Flagbase into their own applications. Including

    • Users who self-hosting the core

    • SDK users

User

  • People who make use of Flagbase product(s). Some usage examples:

    • Using the Core’s REST API to programmatically manage resources

    • Using the UI to edit targeting rules

SDK consumer

  • Third-party entity that’s integrated with Flagbase.

Observer

  • Represents a indirect user of Flagbase product(s). These include

    • Users of applications that integrate with Flagbase.

  • AKA identities (core resource) ~ consists of an identifier with a set of traits.

core

Monolith service to manage & transport feature flags.

Stories

Relevant Tickets

Access

As a user,
I want to manage access programmatically,
which is attached to resources,
so that my resources can be protected.

Workspaces

As a user,
I want to manage workspace(s) programmatically,
which is used to group my team’s projects,
given that I’m authorized.

Projects

As a user,
I want to manage project(s) programmatically,
which is used to group flags,
given that I’m authorized.

Environments

As a user,
I want to manage environments(s) programmatically,
which represents a particular project context,
given that I’m authorized.

Flags

As a user,
I want to manage flags(s) programmatically,
which is used to group variations,
given that I’m authorized.

Flag Variations

As a user,
I want to manage variation(s) programmatically,
which represents a particular state of a flag,
given that I’m authorized.

Targeting

As a user,
I want to manage targeting programmatically,
so that I can specify what variation to show to users,
given that I’m authorized.

As a user,
I want to manage targeting rules programmatically,
so that I can target specific segments or identities.

As a user,
I want to set weights to targeting rules programmatically,
so that I can have randomized % rollouts.

Identities

As a user,
I want to manage identities programmatically,
which represents observers,
so that I can categorize via segments,
given that I’m authorized.

Segments

As a user,
I want to group users based on their characteristics programmatically,
so that I can reuse targeting rules for particular groups,
given that I’m authorized.

Evaluation

As a observer
I want to evaluate a flag programmatically,
so that I can get my desired variation,
given my relevant traits.

Local development

As a developer,
I want to easily run the core locally,
given that it can automatically reload,
so that I can contribute to the project.

Continuous integration

As a developer,
I want to verify my PR can be merged,
so that I don’t break the latest branch.

sdk-js

Client-side Javascript SDK that developers can use to get evaluated feature-flags

Stories

Relevant Tickets

Client API

As a developer,
I want to construct a client via a singleton,
given I can modify the instance configuration later in runtime,
so I only need one instance of the client in my application.

Interface Design / Implementation

As a user
I want to be able to interact with the flagset
in an intuitive way

As a observer,
I want to dynamically set my traits,
so I can see the most relevant flag variation.

Polling (transport)

As an SDK consumer,
I want to frequently get evaluated flagsets,
given that I provide the relevant observer context (i.e. traits),
so I can display the correct flag variation that observer.

Local development

As a developer,
I want to run a storybook,
so I can test out its features locally.

Packaging & deployment

As a developer,
I want to fetch the library through npm / yarn
so I can easily integrate SDK with my application.

Continuous integration

As a developer,
I want to verify my PR can be merged,
so that I don’t break the latest branch.

www

Pages that make up docs, dev & blog section in flagbase.com.

Stories

Relevant Tickets

Docs

Intro: As a potential customer,
I want to know more about Flagbase,
so I can get an higher-level overview,
before I decide to use the service
given that I visit flagbase.com/docs.

Guides: As a developer,
I want to know more about Flagbase concepts,
such as workspace, projects, flags, targeting …,
given that I visit flagbase.com/docs/guides/overview

SDKs: As a developer,
I want to learn more about how I can use the various SDKS,
given that I visit flagbase.com/docs/sdk/overview

Core: As a developer,
I want to know how I can set up the core,
so that I can deploy it in a trusted VPC
given that I visit flagbase.com/docs/core/overview

API Docs: As a developer.
I want to know how I can leverage the REST API,
so that I can manage resources programmatically
given that I visit flagbase.com/docs/api.

Dev

Overview: As a developer,
I want to get an overview of what I need to know,
so that I can start contribute to the project
given that I visit flagbase.com/dev.

Architecture: As a developer,
I want to know more about the core and how the SDKs interact with the core,
to gain more confidence about the system
given that I visit http://flagbase.com/dev/architecture/overview

Contributing: As a developer,
I want to know the contribution procedure,
so that I can raise a PR
given that I visit http://flagbase.com/dev/contributing/overview

Local development

As a developer,
I want to view rendered docs,
while I edit markdown files,
so I can see how it will look on the actual website.

Continuous integration

As a developer,
I want to view the latest docs on the website,
given that I visit flagbase.com.

Done

ui

Web interface to help easily manage feature flags.

Stories

Relevant Tickets

Initialise App

As a user,
I want to be able to navigate across pages

Instance

As a user,
I want to manage an instance,
which is attached to resources,
so that my resources can be protected.

  • Manage handling of the refresh token for instances

    OSS-109 - Getting issue details... STATUS

  • Check/display if instance is running

    OSS-110 - Getting issue details... STATUS

Workspaces

As a user,
I want to manage workspace(s),
which is used to group my team’s projects.

  • Implement tabs UI for managing workspace (editing/deleting)

    OSS-111 - Getting issue details... STATUS

Projects

As a user,
I want to manage project(s),
which is used to group flags.

  • Implement projects view

    OSS-112 - Getting issue details... STATUS

    • Create tab for flag

    • Create tab for segment

    • Create tab for environment

  • Implement tabs UI for managing project (editing/deleting)

    OSS-113 - Getting issue details... STATUS

Environments

As a user,
I want to manage environments(s),
which represents a particular project context.

  • Manage environments (inside the environment tab in project view)

    OSS-114 - Getting issue details... STATUS

Flags

As a user,
I want to manage flags(s),
which is used to group variations.

  • Implement flag view

    OSS-115 - Getting issue details... STATUS

  • Implement tabs UI for managing flag (editing/deleting)

    OSS-116 - Getting issue details... STATUS

Flag Variations

As a user,
I want to manage variation(s),
which represents a particular state of a flag.

  • Manage variations (inside the flag view)

Targeting

As a user,
I want to manage targeting,
so that I can specify what variation to show to users.

As a user,
I want to manage targeting rules,
so that I can target specific segments or identities.

As a user,
I want to set weights to targeting rules,
so that I can have randomized % rollouts.

  • Create targeting component inside flag view

  • Create dumb component for targeting rules

    •  

Segments

As a user,
I want to group users based on their characteristics,
so that I can reuse targeting rules for particular groups.

  • Add segments container to project segments tab

Packaging & deployment

As a user
I want to download & run the desktop app
given that I am on using mac, windows or linux.

Local development

As a developer,
I want to easily run the web app,
so that I can develop with ease,
given that I’ve installed docker.

  •