From the perspective of people outside the core project, I think this is the situation we’re already in. Our beta is simply GA by a different name.
Currently, kube features (other than new API types) are enabled by default in production when they reach beta. This property has a few notable repercussions:
Testing must be completed prior to promotion to beta.
The ecosystem starts relying on them in beta, not GA.
Because the ecosystem starts relying on them, kube maintainers are very hesitant to change behavior.
Because the ecosystem starts relying on them in beta, the kube maintainers almost never remove them.
Because features are available in production clusters at beta, even well meaning contributors find it harder to justify efforts to complete capabilities not critical to their own use-cases.
Features that have complete testing, are enabled in production, are not subject to change, and are not removed are indistinguishable from GA. We may continue to extend these features with new capabilities, but there isn’t a reason to expect the ecosystem or cluster-admins to treat our beta features differently from our GA features.
Let’s go directly from alpha to GA
We could go directly from alpha to GA with a requirement that for the first release a new feature is enabled by default in production clusters, it must be disable-able via a feature gate. The feature gate can be locked to true (finished) in the first release that has zero changes.
Benefits
For API types, when the feature is eligible for default enablement in production clusters, the API serialization will be stable at the same time.
Features can be delivered faster since there isn’t an additional release for beta.
The stage will match what we’re actually willing to do with it (enablement, breaking changes, removal).
Features need to be complete before being enabled by default in production.
I suspect our ecosystem and cluster-admins expect this to be the case today. They expect testing to be complete and the capabilities of the feature to be present.
Downsides
For API types, if we mess up things like defaulting or nesting or something else, we cannot fix it.
This is not a real downside because we’re already in this state since we don’t notice we’ve messed up defaulting until the API is enabled in production by default.
Features need to be complete before being enabled by default in production. This makes it “harder” to add capability to a beta feature.
We can introduce features that build on top of existing features. This is what we do today, but today the additional capabilities added under a beta feature are enabled in production immediately, without any alpha stage. If the new capabilities extending a beta feature break, a cluster-admin has no choice but to disabled the entire feature, even the pieces that are stable and critical to the ecosystem. That option is still available if we eliminate beta (immediate addition to a GA feature), but this also forces consideration of adding a new feature gate for the capability to selectively enable/disable new capabilities for users.
Do the benefits outweigh the downsides?
--
You received this message because you are subscribed to the Google Groups "kubernetes-sig-architecture" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-arch...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/989b6df4-1ff9-4d7d-b4b3-407590c4d401n%40googlegroups.com.
--
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAHEVDqO7B2fwLyJSfMoWMwnCbe2hbXfTQGy7Bov-u5AHpTH6Ow%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAHEVDqO7B2fwLyJSfMoWMwnCbe2hbXfTQGy7Bov-u5AHpTH6Ow%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAHNrm7JuEfqyGpo8mVpTSFnvnDSStEps3jQDU91aqyb9uPbdUA%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "kubernetes-sig-architecture" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-arch...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/38b92fea-4320-4025-8889-402cbb4cdf56n%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "kubernetes-sig-architecture" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-arch...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/bac8ef25-1acd-4e0d-b473-888102847603n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAO_Rewai47a-%3D-kwDUdRns%2BSiDaWT1ccDpR7845H%2B6svCEaXgQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAO_RewYp77hg2C0o8Gg7ypsfeEysdkQ5_x9OoQVgtO3SeGC17A%40mail.gmail.com.
I think the trouble is (for example) "why did my Github Actions suddenly stop working?" "oh, just add this new --beta-is-ok flag" is going to cause a lot of pain for people.
Additionally, for tools like centralized GitOps where the tool necessarily spans a bunch of different users (who may want/need different flag settings) it's going to be even more painful.
--
You received this message because you are subscribed to the Google Groups "kubernetes-sig-architecture" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-arch...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/f818fb12-14b0-48ca-9054-18510065915an%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAC%3DMKY8mPcBqV-GgzTtktZ4QF0TdW-Mfc0-ETgpP6VpcFFVaig%40mail.gmail.com.