@@ -65,18 +65,54 @@ against them. At this stage, the GEP should be targeting the "Implementable"
6565stage.
6666
6767### 4. Implement the GEP as "Experimental"
68+
6869With the GEP marked as "Implementable", it is time to actually make those
6970proposed changes in our API. In some cases, these changes will be documentation
7071only, but in most cases, some API changes will also be required. It is important
7172that every new feature of the API is marked as "Experimental" when it is
7273introduced. Within the API, we use ` <gateway:experimental> ` tags to denote
7374experimental fields.
7475
75- Before these changes are released, they will also need to be documented.
76- GEPs that have not been both implemented and documented before a release
77- cut off will be excluded from the release.
76+ Some other requirements must be met before marking a GEP ` Experimental ` :
77+
78+ - the graduation criteria to reach ` Standard ` MUST be filled out
79+ - a proposed probationary period (see next section) must be included in the GEP
80+ and approved by maintainers.
81+
82+ Before changes are released they MUST be documented. GEPs that have not been
83+ both implemented and documented before a release cut off will be excluded from
84+ the release.
85+
86+ #### Probationary Period
87+
88+ Any GEP in the ` Experimental ` phase is automatically under a "probationary
89+ period" where it will come up for re-assessment if its graduation criteria are
90+ not met within a given time period. GEPs that wish to move into ` Experimental `
91+ status MUST document a proposed period (6 months is the suggested default) that
92+ MUST be approved by maintainers. Maintainers MAY select an alternative time
93+ duration for a probationary period if deemed appropriate, and will document
94+ their reasoning.
95+
96+ > ** Rationale** : This probationary period exists to avoid GEPs getting "stale"
97+ > and to provide guidance to implementations about how relevant features should
98+ > be used, given that they are not guaranteed to become supported.
99+
100+ At the end of a probationary period if the GEP has not been able to resolve
101+ its graduation criteria it will move to "Rejected" status. In extenuating
102+ circumstances an extension of that period may be accepted by approval from
103+ maintainers. GEPs which are ` Rejected ` in this way are removed from the
104+ experimental CRDs and more or less put on hold. GEPs may be allowed to move back
105+ into ` Experimental ` status from ` Rejected ` for another probationary period if a
106+ new strategy for achieving their graduation criteria can be established. Any
107+ such plan to take a GEP "off the shelf" must be reviewed and accepted by the
108+ maintainers.
109+
110+ > ** Warning** : It is extremely important** that projects which implement
111+ > ` Experimental ` features clearly document that these features may be removed in
112+ > future releases.
78113
79114### 5. Graduate the GEP to "Standard"
115+
80116Once this feature has met the [ graduation criteria] ( /concepts/versioning/#graduation-criteria ) , it is
81117time to graduate it to the "Standard" channel of the API. Depending on the feature, this may include
82118any of the following:
@@ -111,7 +147,8 @@ meeting before merging. Most GEPS will proceed through the following states:
111147* ** Implementable:** The goals and implementation details described by this GEP
112148 have consensus but have not been fully implemented yet.
113149* ** Experimental:** This GEP has been implemented and is part of the
114- "Experimental" release channel. Breaking changes are still possible.
150+ "Experimental" release channel. Breaking changes are still possible, up to
151+ and including complete removal and moving to ` Rejected ` .
115152* ** Standard:** This GEP has been implemented and is part of the
116153 "Standard" release channel. It should be quite stable.
117154
@@ -162,6 +199,15 @@ What is out of scope: see [text from KEP][kep-when-to-use]. Examples:
162199 practical tests and experiments which are intended to help us learn and
163200 iterate on the GEP. These can include distributing content, but not under
164201 any release channel.
202+ * Q: Should I implement support for ` Experimental ` channel features?
203+ * A: Ultimately one of the main ways to get something into ` Standard ` is for
204+ it to mature through the ` Experimental ` phase, so we really _ need_ people
205+ to implement these features and provide feedback in order to have progress.
206+ That said, the graduation of a feature past ` Experimental ` is not a forgone
207+ conclusion. Before implementing an experimental feature, you should:
208+
209+ * Clearly document that support for the feature is experimental and may disappear in the future.
210+ * Have a plan in place for how you would handle the removal of this feature from the API.
165211
166212[ kep ] : https://github.com/kubernetes/enhancements
167213[ kep-when-to-use ] : https://github.com/kubernetes/enhancements/tree/master/keps#do-i-have-to-use-the-kep-process
0 commit comments