From 38ff1b39814c780f05d621aa4ddccb73d93038d9 Mon Sep 17 00:00:00 2001 From: Nicklas Lundin Date: Wed, 13 Sep 2023 10:41:14 +0200 Subject: [PATCH] docs: prepare for archiving (#41) * docs: prepare for archiving * Update README.md --- README.md | 171 +----------------------------------------------------- 1 file changed, 2 insertions(+), 169 deletions(-) diff --git a/README.md b/README.md index 7a4f33f..856c7af 100644 --- a/README.md +++ b/README.md @@ -7,174 +7,7 @@

-

OpenFeature Kotlin SDKs

+## 👋 Hey there! This repo is archived. -![Status](https://img.shields.io/badge/lifecycle-alpha-a0c3d2.svg) [![](https://jitpack.io/v/spotify/openfeature-kotlin-sdk.svg)](https://jitpack.io/#spotify/openfeature-kotlin-sdk) +### You can find the official SDK in the [OpenFeature Kotlin SDK repo](https://github.com/open-feature/kotlin-sdk) -## 👋 Hey there! Thanks for checking out the OpenFeature Kotlin SDK - -### What is OpenFeature? - -[OpenFeature][openfeature-website] is an open standard that provides a vendor-agnostic, community-driven API for feature flagging that works with your favorite feature flag management tool. - -### Why standardize feature flags? - -Standardizing feature flags unifies tools and vendors behind a common interface which avoids vendor lock-in at the code level. Additionally, it offers a framework for building extensions and integrations and allows providers to focus on their unique value proposition. - -## 🔍 Requirements - -- The Android minSdk version supported is: `21`. - -Note that this library is intended to be used in a mobile context, and has not been evaluated for use in other type of applications (e.g. server applications). - -## 📦 Installation - -### Jitpack - -The Android project must include `maven("https://jitpack.io")` in `settings.gradle`. - -You can now add the OpenFeature SDK dependency: -```kotlin -dependencies { - api("com.github.spotify:openfeature-kotlin-sdk:") -} -``` -Please note that the `` can be any `Commit SHA` or a version based off a branch as following: -``` -api("com.github.spotify:openfeature-kotlin-sdk:[ANY_BRANCH]-SNAPSHOT") -``` - -This will get a build from the head of the mentioned branch. - -### Maven - -Installation via Maven Central is currently WIP - -## 🌟 Features - -- support for various backend [providers](https://openfeature.dev/docs/reference/concepts/provider) -- easy integration and extension via [hooks](https://openfeature.dev/docs/reference/concepts/hooks) -- bool, string, numeric, and object flag types -- [context-aware](https://openfeature.dev/docs/reference/concepts/evaluation-context) evaluation - -## 🚀 Usage - -```kotlin - // configure a provider and get client - OpenFeatureAPI.setProvider(customProvider) - val client = OpenFeatureAPI.getClient() - - // get a bool flag value - client.getBooleanValue("boolFlag", default = false) - - // get a bool flag value async - coroutineScope.launch { - WithContext(Dispatchers.IO) { - client.awaitProviderReady() - } - client.getBooleanValue("boolFlag", default = false) - } -``` - -### Events - -Events allow you to react to state changes in the provider or underlying flag management system, such as flag definition changes, provider readiness, or error conditions. -Initialization events (`PROVIDER_READY` on success, `PROVIDER_ERROR` on failure) are dispatched for every provider. -Some providers support additional events, such as `PROVIDER_CONFIGURATION_CHANGED`. -Please refer to the documentation of the provider you're using to see what events are supported. - -```kotlin - OpenFeatureAPI.eventsObserver() - .observe() - .collect { - // do something once the provider is ready - } -``` - -### Providers - -To develop a provider, you need to create a new project and include the OpenFeature SDK as a dependency. -This can be a new repository or included in the existing contrib repository available under the OpenFeature organization. -Finally, you’ll then need to write the provider itself. -This can be accomplished by implementing the `Provider` interface exported by the OpenFeature SDK. - -```kotlin -class NewProvider(override val hooks: List>, override val metadata: Metadata) : FeatureProvider { - override fun getBooleanEvaluation( - key: String, - defaultValue: Boolean, - context: EvaluationContext? - ): ProviderEvaluation { - // resolve a boolean flag value - } - - override fun getDoubleEvaluation( - key: String, - defaultValue: Double, - context: EvaluationContext? - ): ProviderEvaluation { - // resolve a double flag value - } - - override fun getIntegerEvaluation( - key: String, - defaultValue: Int, - context: EvaluationContext? - ): ProviderEvaluation { - // resolve an integer flag value - } - - override fun getObjectEvaluation( - key: String, - defaultValue: Value, - context: EvaluationContext? - ): ProviderEvaluation { - // resolve an object flag value - } - - override fun getStringEvaluation( - key: String, - defaultValue: String, - context: EvaluationContext? - ): ProviderEvaluation { - // resolve a string flag value - } - - override fun initialize(initialContext: EvaluationContext?) { - // add context-aware provider initialisation - } - - override fun onContextSet(oldContext: EvaluationContext?, newContext: EvaluationContext) { - // add necessary changes on context change - } - -} -``` - - -## ⭐️ Support the project - -- Give this repo a ⭐️! -- Follow us on social media: - - Twitter: [@openfeature](https://twitter.com/openfeature) - - LinkedIn: [OpenFeature](https://www.linkedin.com/company/openfeature/) -- Join us on [Slack](https://cloud-native.slack.com/archives/C0344AANLA1) -- For more check out our [community page](https://openfeature.dev/community/) - -## 🤝 Contributing - -Interested in contributing? Great, we'd love your help! To get started, take a look at the [CONTRIBUTING](CONTRIBUTING.md) guide. - -### Thanks to everyone that has already contributed - - - Pictures of the folks who have contributed to the project - - -Made with [contrib.rocks](https://contrib.rocks). - -## 📜 License - -[Apache License 2.0](LICENSE) - -[openfeature-website]: https://openfeature.dev