Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Give consumers a means to opt-out of minor breaking changes #2348

Open
gejohnston opened this issue Nov 4, 2024 · 1 comment
Open

Give consumers a means to opt-out of minor breaking changes #2348

gejohnston opened this issue Nov 4, 2024 · 1 comment
Labels
enhancement New feature or request new The issue wasn't triaged yet

Comments

@gejohnston
Copy link
Member

Is your feature or enhancement request related to a problem or limitation? Please describe

Add a means for consumers to opt-out of features that would be breaking changes in the current release, but also might be very desirable.

Describe your enhancement idea

As the team adds functionality that might be marginally breaking, provide a means to allow users to opt-out of each breaking change that adversely affects their existing programs or procedures.

Describe alternatives you've considered

In V2, a class named zowe-cli\packages\imperative\src\utilities\src\NextVerFeatures.ts provided a means to opt-in for different features using environment variables. Since the only such V2 feature was included in V3, the NextVerFeatures class is not currently used. That class could be used as the infrastructure for implementing a similar capability in V3.

Instead of environment variables, we could add a new object to zowe.config.json to allow users to opt-out of each new feature. The trouble with an opt-in approach is that consumers may not even be aware that the new feature is available, so they do not know to opt-in. With an opt-out approach, the consumer would automatically get the new feature. If it causes a consumer problems, they could then opt-out.

We could document the new feature name in the changelog entry for such a feature, so that the user can opt-out of the feature.

We could place a new object in zowe.config.json to hold any opt-out features - something like this:

// The following enhancements introduce a minor change in the behavior of earlier releases.
// If you encounter problems from a new feature, you can choose to disable any such feature by setting its value to false.
// If a feature name is not specified in the list below, we assume a value of true.

useFeature{
    removePromptInSshOutput: false,    // zowe no longer displays an extraneous '$' in the output of ssh commands
    removeFileDoesNotExistErrMsgOnDelete: true    // zowe no longer gives an error when deleting a non-existent file
}

We could consider adding a new zowe config features command. It would display all current feature names. A consumer could run the zowe config features command to get the most up-to-date list of feature names. With the --rfj flag maybe we display a fully populated useFeature object that a consumer could place into their zowe.config.json file.

Another possibility is for the zowe config init command to place a fully populated useFeature object into zowe.config.json.

Provide any additional context

We could update the sample object in this issue as a means to track all such breaking change candidates as we think of them.

@gejohnston gejohnston added enhancement New feature or request new The issue wasn't triaged yet labels Nov 4, 2024
Copy link

github-actions bot commented Nov 4, 2024

Thank you for raising this enhancement request.
The community has 90 days to vote on it.
If the enhancement receives at least 5 upvotes, it is added to our development backlog.
If it receives fewer votes, the issue is closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request new The issue wasn't triaged yet
Projects
Status: New Issues
Development

No branches or pull requests

1 participant