Repository navigation
Initial contributors guide lines around features #48928
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,74 @@ | ||||||
| # Developing Features for Keycloak | ||||||
|
|
||||||
| Keycloak Features allow individual capabilities of Keycloak to have different support levels; additionally features | ||||||
| can be disabled when they are not needed. | ||||||
|
|
||||||
| In most cases all significant new capabilities added to Keycloak should be wrapped by a new experimental feature. The | ||||||
| feature is then graduated to preview when it is considered feature complete, and eventually graduates to supported | ||||||
| after feedback from the community. | ||||||
|
|
||||||
| When implementing a new feature in Keycloak, it is highly recommended to define requirements and a minimum viable feature | ||||||
| initially, with incremental value added to the feature in later stages. Keeping the scope of the feature small allows | ||||||
| implementing the feature quicker and increases the quality as better test coverage and security can be provided. | ||||||
|
|
||||||
| ## Feature level expectations | ||||||
|
|
||||||
| ### Experimental | ||||||
|
|
||||||
| * Is not supported for production use-cases, only for evaluation purposes | ||||||
| * Does not have to be feature complete | ||||||
| * Good test coverage is required | ||||||
| * Documentation is required, and should be updated as the feature evolves | ||||||
|
stianst marked this conversation as resolved.
Resolved
|
||||||
| * Does not have to provide backwards compatibility for APIs, nor migrating support | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Is it possible to add some more "strong" warning about never enable experimental features in production? Would be good to avoid the bugs similar to this (saw some reports like this in the past):
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Updated to |
||||||
|
|
||||||
| ### Preview | ||||||
|
stianst marked this conversation as resolved.
Resolved
|
||||||
|
|
||||||
| * Is supported for production use-cases, but does not guarantee seamless upgrades | ||||||
| * Must be feature complete (minimum viable feature) | ||||||
| * A review of test coverage is required prior to graduating a feature to preview | ||||||
| * A security review is required prior to graduating a feature to preview | ||||||
| * Review of any feedback or open issues must be resolved prior to graduating a feature to preview | ||||||
| * Should aim to provide backwards compatible APIs, and migration. However, this can be omitted if needed | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are basically just writing again what is in the first sentence
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you mean:
That does not read to me the same as "breaking changes can happen".
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I meant |
||||||
| * When a feature is graduated to preview it is expected the feature will graduate to supported in the next major or minor release | ||||||
|
stianst marked this conversation as resolved.
Resolved
|
||||||
|
|
||||||
| ### Supported | ||||||
|
|
||||||
| * Is supported for production use-cases | ||||||
| * Must provide backwards compatible APIs and migration support if needed | ||||||
|
ahus1 marked this conversation as resolved.
Resolved
|
||||||
| * Review of any feedback or open issues must be resolved prior to graduating a feature to supported | ||||||
|
|
||||||
| # Breaking changes and removal of features | ||||||
|
|
||||||
| Breaking changes to supported features must be introduced through a new version of the feature. During a major release | ||||||
| life-cycle the default version can not be changed. However, there may be multiple supported versions. Previous versions | ||||||
| may be deprecated, but should remain the default. Migration to a newer version should be as simple as possible, where the ideal is a fully automated migration provided. | ||||||
|
|
||||||
| New major releases can remove features completely or older feature versions. In general this should only be done after | ||||||
|
ryanemerson marked this conversation as resolved.
Resolved
|
||||||
| the feature or feature version having been deprecated for a minimum of one release (not including patch releases). | ||||||
|
|
||||||
| In the majority of cases preview features should follow the process for supported features. However, if breaking changes are required to preview features that can be made in the same version. Preview features can also be removed without deprecation, but ideally should be deprecated first. | ||||||
|
|
||||||
| Experimental features have no contract in terms of breaking changes. That means breaking changes can be introduced at any point, without new versions, deprecations, or any other warning. Additionally, no migration support is required. | ||||||
|
|
||||||
| # Documentation | ||||||
|
|
||||||
| ## Experimental | ||||||
|
|
||||||
| Relevant documentation and guides for the feature should be clearly marked as experimental, and as under active | ||||||
|
ahus1 marked this conversation as resolved.
Resolved
ryanemerson marked this conversation as resolved.
Resolved
|
||||||
| development. This should include a link to the nightly release for those that want to evaluate the latest changes to | ||||||
| the feature. | ||||||
|
|
||||||
| To encourage feedback there should be a link to a single GitHub Discussion (in the [Feedback category](https://github.com/keycloak/keycloak/discussions/categories/feedback)). The Discussion may optionally further link to GitHub Issues | ||||||
| relevant to the feature. | ||||||
|
|
||||||
| ## Preview | ||||||
|
|
||||||
| Relevant documentation and guides for the feature should be clearly marked as preview, with a notice that the feature | ||||||
| can be used in production, but seamless upgrades are not guaranteed. | ||||||
|
|
||||||
| The link to the GitHub Discussion should remain for preview features. | ||||||
|
|
||||||
| ## Supported | ||||||
|
|
||||||
| As a feature is graduated to supported, any experimental/preview notices should be removed, including the link to the GitHub | ||||||
| Discussions marked for feedback. The GitHub Discussion should be marked as closed. | ||||||
Uh oh!
There was an error while loading. Please reload this page.