|
9 | 9 | </picture>
|
10 | 10 | </p>
|
11 | 11 |
|
12 |
| - |
13 |
| -:warning: __OpenFeature Remote Evaluation Protocol is a WIP initiative, expect breaking changes__ :warning: |
14 |
| - |
| 12 | + |
15 | 13 |
|
16 | 14 | ## What is OFREP?
|
17 |
| -OpenFeature Remote Flag Evaluation Protocol, is an API specification for feature flagging that allows the use of generic providers to connect to any feature flag management systems that supports the protocol. |
18 |
| - |
19 |
| - |
20 |
| -## Goals |
21 |
| -- develop a client/server feature flag evaluation protocol: |
22 |
| - - define payloads sent between client and server |
23 |
| - - define the resources and functions available on the server |
24 |
| - - define the supported transports and encoding methods |
25 |
| - - define mechanisms for metadata delivery and transport configuration (headers, etc) |
26 |
| -- develop production-ready reference implementation |
27 |
| - - compliant server |
28 |
| - - compliant client (provider) |
29 |
| - - highly configurable and modular |
30 |
| - - compatible with any server implementation |
31 |
| - |
32 |
| -## Non-Goals |
33 |
| - |
34 |
| -- defining a schema for the definition or storage of feature flags |
35 |
| -- defining an expression language for feature flag targeting rules |
36 |
| - |
37 |
| -## Design Principles |
38 |
| - |
39 |
| -We value the following: |
40 |
| - - adherence to OpenFeature semantics |
41 |
| - - maximum compatibility and ease-of-adoption for existing solutions |
42 |
| - - minimum traffic and payload size |
43 |
| - - low latency of flag evaluations |
44 |
| - - portability and interoperability between runtimes and languages (should be usable in web, mobile devices, and server) |
45 |
| - - minimum reliance on dependencies (leverage ubiquitous, native transports and encodings where possible) |
46 |
| - |
47 |
| -## Providers |
48 |
| -- [GO](https://github.com/open-feature/go-sdk-contrib/tree/main/providers/ofrep) |
49 |
| -- [JS Server](https://github.com/open-feature/js-sdk-contrib/tree/main/libs/providers/ofrep) |
50 |
| -- [JS Web](https://github.com/open-feature/js-sdk-contrib/tree/main/libs/providers/ofrep-web) |
51 |
| - |
| 15 | +**OpenFeature Remote Flag Evaluation Protocol**, is an API specification for feature flagging that allows the use of generic providers to connect to any feature flag management systems that supports the protocol. |
| 16 | + |
| 17 | +## Goal |
| 18 | +The primary goal of the OpenFeature Remote Evaluation Protocol (OFREP) is to establish a standardized, vendor-agnostic communication layer for feature flag evaluation. This protocol aims to decouple applications from specific feature flag vendors, fostering a more flexible and interoperable ecosystem. |
| 19 | + |
| 20 | +At its heart, OFREP defines a standard API layer between the provider and the flag management system, allowing OpenSource and commercial feature flag management systems to implement the protocol and to be compatible with the community maintained providers. It enables out-of-the-box compatibility with any OFREP compliant flag management system, regardless if they have a specific OpenFeature provider implementation or not. |
| 21 | + |
| 22 | +If you are building an application that uses feature flags and you don't want to be tied to a specific vendor, you can use the OpenFeature Remote Evaluation Protocol to connect to any flag management system that supports the protocol, without needing to implement a specific provider for it. |
| 23 | + |
| 24 | +## Things to know |
| 25 | +- OFREP is a protocol, not a provider. It defines how to communicate with feature flag management systems. |
| 26 | +- OFREP works on top of OpenFeature SDKs, by providing standardized providers that can be used to connect to any OFREP compliant flag management system. |
| 27 | +- OFREP works on the client side and the server side. It can be used in web, mobile, and server applications. |
| 28 | +- On the servers implementation, OFREP is designed to do evaluation by calling the OFREP API. There is no inprocess evaluation inside the OFREP providers. |
| 29 | +- OpenFeature community has built a set of providers that implement the OFREP protocol, allowing you to connect to any OFREP compliant flag management system. |
| 30 | + |
| 31 | +## OFREP Support |
| 32 | +The OpenFeature community is maintaining a set of providers implementing the OFREP protocol, you can find the list of available providers in the [ecosystem page](https://openfeature.dev/ecosystem/?instant_search%5BrefinementList%5D%5Bvendor%5D%5B0%5D=OFREP) of the OpenFeature website. |
| 33 | + |
| 34 | +You can also find the list of flag management systems that support the OFREP protocol in the [ecosystem page](https://openfeature.dev/ecosystem/?instant_search%5BrefinementList%5D%5Btype%5D%5B0%5D=OFREP%20API). |
| 35 | + |
| 36 | + |
| 37 | +## Create a provider for OFREP. |
| 38 | +If your language is not yet supported and you want to create a provider for OFREP, you can follow the OFREP provider guidelines, they will help you to implement a provider that is compatible with the OpenFeature Remote Evaluation Protocol. |
| 39 | + |
| 40 | +- [OFREP Server Provider Guideline](./guideline/dynamic-context-provider.md) |
| 41 | +- [OFREP Client Provider Guideline](./guideline/static-context-provider.md) |
| 42 | +- [OpenAPI Specification](./service/openapi.yaml) |
| 43 | + |
| 44 | +> [!NOTE] |
| 45 | +> After implementing the provider, you can register it in the OpenFeature ecosystem page by [creating an issue](https://github.com/open-feature/openfeature.dev/issues). |
| 46 | +
|
| 47 | +## Implement OFREP in your flag management system. |
| 48 | + |
| 49 | +If you want to implement the OpenFeature Remote Evaluation Protocol in your flag management system, you must support the OpenAPI specification and implement the different endpoints defined. |
| 50 | + |
| 51 | +- [OpenAPI Specification](./service/openapi.yaml) |
| 52 | + |
| 53 | +> [!NOTE] |
| 54 | +> After implementing the OpenAPI specification, you can register your flag management system in the OpenFeature ecosystem page by [creating an issue](https://github.com/open-feature/openfeature.dev/issues), so users can find it and use it with the OFREP providers. |
| 55 | +
|
52 | 56 | ## Contribution
|
53 | 57 | If you are interested about the OpenFeature Remote Evaluation Protocol you can join the [`#openfeature-remote-evaluation-protocol`](https://cloud-native.slack.com/archives/C066A48LK35) slack channel on the [CNCF Slack](https://communityinviter.com/apps/cloud-native/cncf).
|
54 |
| - |
|
0 commit comments