{"id":13510679,"url":"https://github.com/open-feature/spec","last_synced_at":"2025-05-15T01:06:42.223Z","repository":{"id":37072906,"uuid":"458191677","full_name":"open-feature/spec","owner":"open-feature","description":"OpenFeature specification","archived":false,"fork":false,"pushed_at":"2025-05-13T23:05:10.000Z","size":59006,"stargazers_count":868,"open_issues_count":16,"forks_count":42,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-05-14T01:06:55.992Z","etag":null,"topics":["feature-flags","openfeature","specification"],"latest_commit_sha":null,"homepage":"https://openfeature.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-feature.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-11T13:11:06.000Z","updated_at":"2025-05-13T21:01:41.000Z","dependencies_parsed_at":"2024-03-17T01:32:46.529Z","dependency_job_id":"2f3a19c1-c137-4efe-9345-9141b7d9db9d","html_url":"https://github.com/open-feature/spec","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-feature%2Fspec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-feature%2Fspec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-feature%2Fspec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-feature%2Fspec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-feature","download_url":"https://codeload.github.com/open-feature/spec/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254041,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["feature-flags","openfeature","specification"],"created_at":"2024-08-01T02:01:49.506Z","updated_at":"2025-05-15T01:06:37.204Z","avatar_url":"https://github.com/open-feature.png","language":"Python","readme":"\u003c!-- markdownlint-disable MD033 --\u003e\n\u003c!-- x-hide-in-docs-start --\u003e\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/open-feature/community/0e23508c163a6a1ac8c0ced3e4bd78faafe627c7/assets/logo/horizontal/white/openfeature-horizontal-white.svg\" /\u003e\n    \u003cimg align=\"center\" alt=\"OpenFeature Logo\" src=\"https://raw.githubusercontent.com/open-feature/community/0e23508c163a6a1ac8c0ced3e4bd78faafe627c7/assets/logo/horizontal/black/openfeature-horizontal-black.svg\" /\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eOpenFeature Specification\u003c/h2\u003e\n\n\u003c!-- x-hide-in-docs-end --\u003e\n\u003c!-- The 'github-badges' class is used in the docs --\u003e\n\u003cp align=\"center\" class=\"github-badges\"\u003e\n  \u003ca href=\"https://github.com/orgs/open-feature/projects/1\"\u003e\n    \u003cimg alt=\"Roadmap\" src=\"https://img.shields.io/static/v1?label=Roadmap\u0026message=public\u0026color=green\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md\"\u003e\n    \u003cimg alt=\"Contributing\" src=\"https://img.shields.io/static/v1?label=Contributing\u0026message=guide\u0026color=blue\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://cloud-native.slack.com/archives/C0344AANLA1\"\u003e\n    \u003cimg alt=\"Slack\" src=\"https://img.shields.io/badge/slack-%40cncf%2Fopenfeature-brightgreen?style=flat\u0026logo=slack\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://bestpractices.coreinfrastructure.org/projects/6601\"\u003e\n    \u003cimg alt=\"CII Best Practices\" src=\"https://bestpractices.coreinfrastructure.org/projects/6601/badge\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003c!-- x-hide-in-docs-start --\u003e\n\n[OpenFeature](https://openfeature.dev) is an open specification that provides a vendor-agnostic, community-driven API for feature flagging that works with your favorite feature flag management tool or in-house solution.\n\nThis repository describes the requirements and expectations for OpenFeature.\n\n## Design Principles\n\nThe OpenFeature specification must be designed with:\n\n- compatibility with existing feature flag offerings.\n- simple, understandable APIs.\n- vendor agnosticism.\n- language agnosticism.\n- low/no dependency.\n- extensibility.\n\n### SDKs and Client Libraries\n\nThe project aims to provide a unified API and SDK feature flag evaluation across popular technology stacks.\nThe OpenFeature SDK provides a mechanism for interfacing\nwith an external evaluation engine in a vendor agnostic way;\nit does **not** itself handle the flag evaluation logic.\n\nAn up-to-date SDK compatibility overview can be found [here](https://openfeature.dev/docs/reference/technologies/sdk-compatibility).\n\n### Tooling\n\nThis specification complies with [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119) and seeks to conform to the [W3C QA Framework Guidelines](https://www.w3.org/TR/qaframe-spec/).\n\nIn accordance with this, some basic tooling (donated graciously by [Diego Hurtado](https://github.com/ocelotl)) has been employed to parse the specification and output a JSON structure of concise requirements, highlighting the particular `RFC 2119` verb in question.\n\nTo parse the specification, simply type `make`. Please review the generated JSON files, which will appear as siblings to any of the markdown files in the `/specification` folder.\n\n### Style Guide\n\n- Use code blocks for examples.\n  - Code blocks should be pseudocode, not any particular language, but should be vaguely \"Java-esque\".\n- Use conditional requirements for requirements that only apply in particular situations, such as particular languages or runtimes.\n- Use \"sentence case\" enclosed in ticks (\\`) when identifying entities outside of code blocks (ie: `evaluation details` instead of `EvaluationDetails`).\n- Do not place line breaks into sentences, keep sentences to a single line for easier review.\n- String literals appearing outside of code blocks should be enclosed in both ticks (\\`) and double-quotes (\") (ie: `\"PARSE_ERROR\"`).\n- Use \"Title Case\" for all titles.\n- Use the imperative mood and passive voice.\n","funding_links":[],"categories":["Python","Testing","others","Configuration \u0026 Policy Automation"],"sub_categories":["A/B testing"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-feature%2Fspec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-feature%2Fspec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-feature%2Fspec/lists"}