Skip to content

Commit 22263ce

Browse files
committedJan 23, 2025·
Create adr-feature-gating
Signed-off-by: Anastas Stoyanovsky <[email protected]>
1 parent c71e488 commit 22263ce

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
 

‎docs/adr-feature-gating.md

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# InstructLab Feature Gating Patterns
2+
3+
## Context
4+
5+
Motivated by the currently [in-progress RAG development](https://github.com/instructlab/dev-docs/pull/161) in [dev preview scope](https://access.redhat.com/support/offerings/devpreview), there is a use case for introducing feature gating (sometimes equivalently called "feature flags"). The specific use case desired is to have default settings for feature gating in the application that can be overridden using environment variables.
6+
7+
One common pattern is per-feature gating, i.e., configuration per-feature. This fine-grained control might be desirable in the future, especially to enable user segmentation for individual experimental features. We do not need that level of fine-grained control at this time.
8+
9+
There is precedent [in OpenShift](https://docs.openshift.com/container-platform/4.17/nodes/clusters/nodes-cluster-enabling-features.html) for enabling sets of features based on support scope. Following this pattern would be consistent with OpenShift terminology and meets our needs at this time.
10+
11+
## Decision
12+
13+
InstructLab will adopt feature gating based on feature sets using the OpenShift terminology of `DevPreviewNoUpgrade` and `TechPreviewNoUpgrade`, able to be overridden using an environment variable.
14+
15+
## Status
16+
17+
Proposed
18+
19+
## Consequences
20+
21+
* Feature gating concepts will be consistent with OpenShift, lowering the learning curve of one application's configuration when coming from the other.
22+
* We will not need to (*yet*) spend the time to develop our own taxonomy for feature gating.
23+
* Messaging to users about support commitments when using dev preview or tech preview will be clear - in particular, that no version upgrade commitments are made, nor the ability to disable those scopes in order to revert to a supported application state.
24+
* We have a decision to make about whether to introduce a new dependency for feature flagging or make our own simple one.
25+
* There is a migration path to finer-grained feature gating via the [`CustomNoUpgrade`](https://github.com/openshift/api/blob/master/config/v1/types_feature.go#L54) scope.
26+
* We will have to make sure to communicate what these feature gate scopes mean to users and what commitments they entail, in documentation and/or otherwise.

0 commit comments

Comments
 (0)
Please sign in to comment.