Replies: 9 comments 15 replies
-
I'm in support of this. I think it would ease adoption for mulit-language use-cases. Is there a type of feedback you're looking for in particular? |
Beta Was this translation helpful? Give feedback.
-
Go Feature Flag is using this format https://github.com/thomaspoignant/go-feature-flag/blob/3a2866c89e5c59b7a0852239c8694654e5705a2f/internal/flag/internal_flag.go#L20 As mention in slack, it has information about the flag, BUT also information on how to rollout it, and I am not sure we are willing to add these extra information in the definition of a standard flag. |
Beta Was this translation helpful? Give feedback.
-
Featurevisor is all about declarative definitions, which you can find here:
|
Beta Was this translation helpful? Give feedback.
-
A flag evaluation wire protocol opens the door for a centralized component to translate between the OpenFeature wire protocol and the proprietary protocol. I always thought this was the purpose of FlagD, but it seems not. We were investigating implementing the FlagD wire protocol to modernize our internal feature flag system, without writing our own SDK for each language we use internally. I always found that OpenFeature needed a central component like the Collector in OpenTelemetry. This collector probably contributes to the success of the project. Once the flag evaluation wire protocol is defined, someone can start building such a component and use it as a bridge to proprietary systems. |
Beta Was this translation helpful? Give feedback.
-
I believe that flag evaluation wire protocol is an easier thing to "standardize" compared to a flag definition language so I wonder if it would make sense to work on these initiatives independent of each other? I know that we in Confidence are interested to work with defining and to leverage a flag evaluation wire protocol but we believe that there are big challenges with unifying different vendors under the same flag definition protocols, most of them already defined in this original discussion post. |
Beta Was this translation helpful? Give feedback.
-
These comments make me wonder:
"we haven't had much interest for vendors in implementing a custom sync": It seems that this is the core problem to solve here. |
Beta Was this translation helpful? Give feedback.
-
We have setup a meeting to discuss this topic on October 19, 2023 from 10am - 11am ET (4pm - 5pm CET): https://community.cncf.io/events/details/cncf-openfeature-presents-openfeature-special-meeting/ We hope to see you there! 🙂 |
Beta Was this translation helpful? Give feedback.
-
We've raised it already during the project meeting, but we (Google) would like to support both efforts: flag definition language and flag evaluation wire protocol. We think they can contribute to ease of adoption (as pointed above, supporting multiple languages and frameworks can be much easier) and increase reliability and safety of using feature flags (e.g. with flags definition we could autogenerated client libraries built on top of SDKs). |
Beta Was this translation helpful? Give feedback.
-
I think that a wire protocol is a great idea, but I do have concerns about a flag definition language. Specifically a flag definition language which supports rules or rollouts, versus just the current states of flags for a context. The primary concern is that evaluating a flag for a specific vendor using either that vendors SDK, or an OpenFeature SDK would currently produce a deterministic result. For a context that is equivalent you would get an equivalent result, it would bucket the same (if the vendor has deterministic bucketing), rules would apply the same, etc. With a flag definition language, without 100% parity with the rules and rollout mechanism used by the vendor, this wouldn't necessarily be the case. I think it would likely result in a vendor having to make specific "OpenFeature" compatible flags. |
Beta Was this translation helpful? Give feedback.
-
As agreed on in our Aug 31 community meeting1, I'd like to use this thread to discuss the possibility of specifying a flag definition language and a flag evaluation wire protocol in OpenFeature.
The Present Situation
Currently, the OpenFeature specification describes a vendor-neutral API for flag evaluation. It does not describe a flag definition language, or a flag evaluation wire protocol. Consequently, the only means of integration with the OpenFeature SDK is to implement a provider in the relevant programming language(s), which serves as an adaptor between the OpenFeature evaluation API and the flag management system powering the provider.
Limitations
Proposal
I propose that in addition to the existing API, OpenFeature specifies a flag definition language and a flag evaluation wire protocol. Practically, this is a more straightforward proposal than describing an API, and I don't think anyone is better positioned to do it. Defining a flag definition language could amount to publishing a JSON schema which defines a structure for a set of flags (we already do something similar in the flagd project). Defining a flag evaluation wire protocol3 could involve publishing a protobuf schema or OpenAPI specification (another thing we already do in the flagd project). These would allow for the implementation of a unified, generic provider compatible with any conformant flag management system.
Note
Though flagd already does the above, I'm not necessarily proposing we use it's specifications as the OpenFeature standard.
It's only mentioned for reference.
Advantages
Challenges
Summary
I think this could constitute the next major phase in the OpenFeature project. Let's use this discussion as a place to brainstorm before taking any more concrete steps, such as OFEPs/issues. Please don't hesitate to comment and share!
I'd like to get a working-group together comprising some vendors and OSS projects who would be willing to work through a draft and then potentially do a PoC if there's a consensus this is a worthwhile effort.
Footnotes
Aug 31 meeting notes ↩
Relevant Slack discussion ↩
Flag Evaluation Wire Protocol OFEP ↩
Beta Was this translation helpful? Give feedback.
All reactions