backstage / community-plugins

Community plugins for Backstage
Apache License 2.0
113 stars 84 forks source link

[Plugin] managing feature flags / experimentation for entities #277

Open caioquirino opened 3 years ago

caioquirino commented 3 years ago

Summary

Implement a Feature Flags management interface per service.

The motivation of this plugin is to either:

Project website (if applicable)

Context

The focus of this plugin is not to implement Feature flags for Backstage itself, but for the projects/services/repos that are managed by Backstage

adamdmharvey commented 3 years ago

Great idea! Maybe add in support for Split.io also ! I'd think a feature like this would also require enhanced role based permissioning, as we wouldn't want an entire population of Backstage users to be able to flip feature flags across ecosystem. So maybe just VIEWING the flags as a start?

goober commented 3 years ago

Unleash is another vendor that could leverage this interface.

caioquirino commented 3 years ago

Unleash is really looking good and it's Free and Open Source! Nice suggestion @goober :)

caioquirino commented 3 years ago

Is there any standard protocol or RFC for managing Feature Flags? Is it something we should look at before implementing it?

freben commented 3 years ago

Hi! I am feeling hesitant against the idea of a general interface for this. We try to invent as few general wrappers as possible, and instead try to prioritize making it easy to make + install distinct plugins. Additionally, my gut tells me that the interfaces to these various systems probably have significant, hard-to-bridge-over differences.

That being said, individual plugins for the systems mentioned in here definitely sound like great things!

caioquirino commented 3 years ago

Shall we focus in a single one then? Like Unleash or any other vendor? I am thinking in Unleash as it is Open Source and could be installed in a private infrastructure.

freben commented 3 years ago

I'll let the community choose what it feels brings the most value.

As we do this, I reckon that we'll learn things as we go. Maybe we'll discover some commonalities and implement some "least common denominator" pluggable interface in the end. But usually it's best to start specific and only then go generic.

setchy commented 2 years ago

👍 for LaunchDarkly plugin

janquijano commented 2 years ago

Any traction on this feature request? +1 for Launchdarkly plugin

dackroyd commented 2 years ago

Is there any standard protocol or RFC for managing Feature Flags? Is it something we should look at before implementing it?

https://openfeature.dev/ might be of interest, however to be clear this is in early stages, and no implementation exists to date

toddbaert commented 1 year ago

:wave: Hello, I'm one of the maintainers at OpenFeature. When @dackroyd made the above comment, we were indeed in the very early stages!

Since then we've been accepted as a CNCF sandbox project, and we've released stable SDKs (including TypeScript) along with providers for a few solutions, including those mentioned above. If you'd like more info, please reach out to us on our CNCF slack channel.

ivarconr commented 1 year ago

Hi all, I am the author of Unleash.

I think it make sense to view the current status of the feature toggles relevant for the project/team, and maybe simple operations (turn on/off), but for mode advanced use cases it might be easier to enter the tool itself, to avoid re-implementing everything,

Let me know if we can help out in any way with the integration of Unleash, which does have Open API Specifications.

freben commented 1 year ago

I reworded the title a bit to ensure that it's clear that the main goal, is to write Backstage plugins that interface with third party experimentation products, to manage (typically) non-Backstage systems that are being experimented on.

Of course we're happy to accept contributions of plugins that give quick and easy access to basic functionality of Unleash, OpenFeature or others!

justinabrahms commented 1 year ago

Open feature is the common abstraction layer for feature flag vendors. This would allow your plugin authors to speak open feature, and then the people who set up backstage can pick a flags backend that they like (many mentioned on the thread above).