pingcap / pingcap/tiup

Method to enable new features in experimental mode

Open
#1,278 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

difficulty/hard help wanted status/discuss type/feature-request
Dominant language
Go
Stars
466
Forks
338
Avg merge
3d 7h
Merged PRs (30d)
8

Description

Feature Request

Is your feature request related to a problem? Please describe:

Just thinking of how best to work on issues like #390 and #1255 and I think that a method/process by which we can introduce and use new or behavior changing features is required.

Describe the feature you'd like:

I think we can first have an optional section in the config file say [experimental_features] and under that we can have an entry which say that the feature as represented by the issue number, e.g. 390 or 1125 is enabled. then in the code we conditionally enable/use the new feature. Using the Issue number ties things back to an issue and it discussion, though not necessarily required but helps with tracking...

[experimental_features]
enable_390
enable_SomethingNew

Then in the code we check

if (feature_flag[enable_390]) {

  • new changed code
    } else {
    original
    }

Describe alternatives you've considered:

Alternative are special builds

Teachability, Documentation, Adoption, Migration Strategy:

This should help us when we have behavior breaking changes, and also when enabled we can grab telemetry and user feedback. When such a change is deemed to be approved we can then reverse the condition so that should there be any missed issues it can be revered and once proved the conditional code be made default and old code removed in a sub-sequent version.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue does not identify files, tests, or an entry point. Start by locating tiup's configuration parsing and feature-selection code, then define the configuration format, naming rules, conditional behavior, telemetry needs, and criteria for enabling, making default, and removing a feature.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.