diff --git a/enhancements/README.md b/enhancements/README.md new file mode 100644 index 00000000..948897d9 --- /dev/null +++ b/enhancements/README.md @@ -0,0 +1,23 @@ +# Enhancement Proposal + +## Why do we need it? + +Enhancement Proposal (EP) is a design document providing information to the community, or describing a new feature for Dex. + +We intend EPs to be the primary mechanisms for proposing major new features. +This will make it easier for community to describe, track, and look through the history of changes that a going to affect the future development of a product. + +## Process + +### Before starting +1. Search GitHub for [previous issues](https://github.com/dexidp/dex/issues) and [EPs](https://github.com/dexidp/dex/tree/master/enhancements). +2. If an issue does not exist, [open it](https://github.com/dexidp/dex/issues/new?assignees=&labels=&template=feature_request.yaml). +3. Ensure that writing enhancement proposal is necessary for you change by discussing it with a community. + +### Writing an enhancement proposal + +1. Fork the repo. +2. Copy the [`enhancements/_title-YYYY-MM-DD-#issue.md`](enhancements/_title-YYYY-MM-DD-#issue.md) template with the appropriate + name. +3. Fill all sections according to hints in them. Provide as much information as you can. +4. Submit your PR and discuss it with the Dex team. diff --git a/enhancements/_title-YYYY-MM-DD-#issue.md b/enhancements/_title-YYYY-MM-DD-#issue.md new file mode 100644 index 00000000..88b94513 --- /dev/null +++ b/enhancements/_title-YYYY-MM-DD-#issue.md @@ -0,0 +1,62 @@ +# Enhancement Proposal (EP) - - + +## Table of Contents + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals/Pain](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) + - [User Experience](#user-experience) + - [Implementation Details/Notes/Constraints](#implementation-detailsnotesconstraints) + - [Risks and Mitigations](#risks-and-mitigations) + - [Alternatives](#alternatives) +- [Future Improvements](#future-improvements) + +## Summary + +- Provide a one-paragraph description of the expected change here. + +## Context + +- Link to any previous issues, RFCs, discussions, or briefs. +- Link to any ongoing or future work relevant to this change. + +## Motivation + +### Goals/Pain + +- List work that is assumed to be done in the scope of this enhancement. +- Mention problems solve by this enhancement. + +### Non-goals + +- List work that is entirely out of the scope of this enhancement. Use this to define EP borders to keep work focused. +- All planned future enhancements should be listed in one of the following blocks - Future Improvements. + +## Proposal + +### User Experience + +- Explain your change as if you were describing it to end-users. +- Explain the way users are supposed to use Dex with the proposed enhancement. + +### Implementation Details/Notes/Constraints + +- Explain your change as if you were at a development team meeting (give more technical and implementation details). +- When possible, demonstrate with pseudo-code, not text. +- Be specific. Be opinionated. Avoid ambiguity. + +### Risks and Mitigations + +- Mention all expected risks and migrations in detail here. +- Do not forget to mention if the proposed enhancement is a breaking change. + +### Alternatives + +- What other approaches have been considered, and why did you not choose them? +- What happens if this enhancement will never be accepted and implemented? + +## Future Improvements + +- List any future improvements.