|
1 |
| -# Kustomize roadmap 2022 |
| 1 | +# Kustomize roadmap 2023-2024 |
2 | 2 |
|
3 |
| -Presented at the [January 26, 2022, SIG-CLI meeting](https://youtu.be/l2plzJ9MRlk?t=1321) |
| 3 | +This document describes the items that we hope to make progress on over the next |
| 4 | +1 year (H2 2023 and H1 2024). Take this roadmap as more of what we hope to achieve |
| 5 | +rather than what we promise to achieve, as some items in this doc are highly dependent |
| 6 | +on the success that we have on-ramping new contributors to the project, and other |
| 7 | +items will depend on external contributions, which can vary. |
4 | 8 |
|
5 |
| -kustomize maintainers: @knverey, @natasha41575 |
| 9 | +If you are interested in contributing to a particular area, you can look through |
| 10 | +the project board for that area and assign yourself to one of the issues. It is |
| 11 | +recommended to start with smaller issues to ramp up on the project before starting |
| 12 | +to tackle larger issues. |
6 | 13 |
|
7 |
| -[Objective: Improve contributor community](#objective-improve-contributor-community) |
| 14 | +## Kustomize contributors (at time of writing): |
8 | 15 |
|
9 |
| -[Objective: Improve end-user experience](#objective-improve-end-user-experience) |
| 16 | +kustomize owner: @natasha41575 |
10 | 17 |
|
11 |
| -[Objective: Improve extension experience](#objective-improve-extension-experience) |
| 18 | +kustomize maintainers: @annasong20, @koba1t |
12 | 19 |
|
13 |
| -## Objective: Improve contributor community |
| 20 | +kustomize contributors: @varshaprasad96 |
14 | 21 |
|
15 |
| -**_WHO: End user who also contributes source code._** |
16 | 22 |
|
17 |
| -Top priority: |
| 23 | +# H2 2023 |
18 | 24 |
|
19 |
| -- Kustomization v1 (also end-user impact) ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/12)) |
20 |
| - - Remove the following fields: |
21 |
| - - [vars](https://github.com/kubernetes-sigs/kustomize/issues/2052) |
22 |
| - - [patchesJson6902, patchesStrategicMerge (consolidate on \`patches)](https://github.com/kubernetes-sigs/kustomize/issues/4376) |
23 |
| - - [helmChartInflationGenerator, helmCharts, helmGlobals](https://github.com/kubernetes-sigs/kustomize/issues/4401) |
24 |
| - - all long-deprecated fields in Kustomization v1 such as \`bases\` and those being accommodate by kustomize edit \[[see code snippet](https://github.com/kubernetes-sigs/kustomize/blob/ee4b7847f0beb6c0d2070673b10f23f7b3e92e82/api/types/fix.go#L15)\] |
25 |
| - - Ensure that \`kustomize edit fix\` handles migrations for all those, and that anything it changes is not still present in v1. |
26 |
| - - [Add reorder field](https://github.com/kubernetes-sigs/kustomize/issues/3913). Default should be FIFO and legacy should also be supported (could add alphabetic and custom sort support eventually). Replaces -reorder flag. |
27 |
| - - [Reconcile openapi and crds field](https://github.com/kubernetes-sigs/kustomize/issues/3944) |
28 |
| - - [Consider deprecating configurations field](https://github.com/kubernetes-sigs/kustomize/issues/3945) (old, pre-plugin, pre-openapi global configuration) |
29 |
| - - [Add a field to enable the managedby label](https://github.com/kubernetes-sigs/kustomize/issues/4047) |
| 25 | +## Goal: Create kustomize leadership and contributor playbooks |
30 | 26 |
|
31 |
| -Second priority: |
| 27 | +Contributors: natasha41575, annasong20 |
32 | 28 |
|
33 |
| -- Improve contributor documentation |
34 |
| - - [Instructions to upgrade kustomize-in-kubectl](https://github.com/kubernetes-sigs/kustomize/issues/3951) |
| 29 | +Priority: High |
35 | 30 |
|
36 |
| -Also very valuable to the project: |
| 31 | +Effort: Medium |
37 | 32 |
|
38 |
| -- [Improve the release process](https://github.com/kubernetes-sigs/kustomize/issues/3952) to support regular biweekly releases [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/7) |
39 |
| -- Release sigs.k8s.io/kustomize/api v1.0.0 [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/5) |
40 |
| - - [Reduce the public surface of the API module](https://github.com/kubernetes-sigs/kustomize/issues/3942) |
41 |
| - - [Vendor all transitive deps](https://github.com/kubernetes-sigs/kustomize/issues/3706). Since kustomize is in kubectl, we must do as kubectl does to manage deps, exposing new transitive deps in code review. |
42 |
| -- Project administration |
43 |
| - - [Rename master branch to main](https://github.com/kubernetes-sigs/kustomize/issues/3954) |
| 33 | +In the past, when the leads have left in various kubernetes projects, it |
| 34 | +left a wide hole that few could easily fill, leaving the remaining leads in a |
| 35 | +bad position and the project understaffed. We should assume that we will need |
| 36 | +to onboard new maintainers in the future, and should have playbooks for doing so. |
| 37 | +As we grow the contributor base in kustomize, we will build these playbooks for |
| 38 | +those who are contributing and those who are looking to grow into kustomize leaders. |
| 39 | +To ensure the long term health and stability of the project, we should have: |
44 | 40 |
|
| 41 | +- On-boarding guides for new contributors |
| 42 | +- Clear guidelines for how to climb the kustomize ladder from contributor to approver to owner |
| 43 | +- A plan (maybe a schedule) for future kustomize cohorts |
| 44 | +- A succession plan, in case the current kustomize leads ever decide to step down |
45 | 45 |
|
| 46 | +## Goal: Onboard 2-5 new contributors to kustomize |
46 | 47 |
|
47 |
| -## Objective: Improve end-user experience |
| 48 | +Contributors: natasha41575, annasong20, koba1t |
48 | 49 |
|
49 |
| -**_WHO: End user that wants kustomize build artifacts (binaries, containers)._** |
| 50 | +Priority: High |
50 | 51 |
|
51 |
| -Top priorities: |
| 52 | +Effort: High |
52 | 53 |
|
53 |
| -- Bug fixes: |
54 |
| - - Fix bugs in basic anchor support: [issue query](https://github.com/kubernetes-sigs/kustomize/issues?q=is%3Aopen+is%3Aissue+label%3Aarea%2Fanchors) |
55 |
| - - integer keys support: [#3446](https://github.com/kubernetes-sigs/kustomize/issues/3446) |
56 |
| - - kyaml not respecting \`$patch replace|retainKeys\`: [#2037](https://github.com/kubernetes-sigs/kustomize/issues/2037) |
57 |
| - - kustomize removing quotes from namespace field values: [#4146](https://github.com/kubernetes-sigs/kustomize/issues/4146) |
58 |
| - - Kustomize doesn’t support metadata.generateName: [#641](https://github.com/kubernetes-sigs/kustomize/issues/641) |
59 |
| -- Send kustomize CLI version number into kubectl ([kubectl issue](https://github.com/kubernetes/kubectl/issues/797) / [kustomize issue](https://github.com/kubernetes-sigs/kustomize/issues/1424)) |
60 |
| -- Kustomize performance investigations/improvements [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/13) |
61 |
| -- [Support generic resource references in name reference tracking](https://github.com/kubernetes-sigs/kustomize/issues/3418) |
62 |
| -- [KEP 4267: retain the resource origin and transformer data in annotations](https://github.com/kubernetes-sigs/kustomize/pull/4267) |
| 54 | +In order to make progress on kustomize goals in the future, we need to increase the |
| 55 | +level of staffing on kustomize. We should leverage community contributions to keep kustomize |
| 56 | +healthy and making progress. |
63 | 57 |
|
64 |
| -Secondary priorities: |
| 58 | +The primary means in which we will try to find new kustomize contributors is through the new kustomize |
| 59 | +maintainer training cohort. We will lead a group of ~20 kubernetes community members through a 3-6 month |
| 60 | +training program, involving talk sessions, bug scrubs, issue triage, PR reviews, and coding projects for |
| 61 | +each member. The effort from existing kustomize maintainers here will be to: |
| 62 | +- Organize the cohort, so that each cohort member feels productive and understands what they should work on |
| 63 | +- Align motivation of the cohort members with the work that we assign to them. |
| 64 | +- Review PRs from cohort members in a timely manner. |
| 65 | +- Be the point(s) of contact for questions/escalations |
| 66 | +- Lead weekly stand-ups and monthly bug scrubs |
65 | 67 |
|
66 |
| -- kustomize cli v5 ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/14)) |
67 |
| - - [Drop the --reorder flag](https://github.com/kubernetes-sigs/kustomize/issues/3947) |
68 |
| - - [Graduate cfg read-only commands out of alpha](https://github.com/kubernetes-sigs/kustomize/issues/4090). |
69 |
| - - [Drop the –enable-managedby-label](https://github.com/kubernetes-sigs/kustomize/issues/4047) |
70 |
| - - Drop old plugin-related fields in favor of [the Catalog-style fields](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2906-kustomize-function-catalog). |
71 |
| - - [Drop the helm flags](https://github.com/kubernetes-sigs/kustomize/issues/4401) |
72 |
| -- [Confusion around namespace replacement](https://github.com/kubernetes-sigs/kustomize/issues/880). |
| 68 | +At the end of all this, if we have a small team of contributors to kustomize, who understand its founding |
| 69 | +philosophy and intentions, we should be able to keep the project up to date. |
73 | 70 |
|
74 |
| -Also very valuable to the project: |
| 71 | +## Goal: Improve kustomize extensibility through KRM functions and CRD support |
75 | 72 |
|
76 |
| -- [Overinclusion of root directory error in error messages](https://github.com/kubernetes-sigs/kustomize/issues/4348) |
77 |
| -- [Add kustomize localize command](https://github.com/kubernetes-sigs/kustomize/issues/3980) |
78 |
| -- [Fix Windows support in test suite](https://github.com/kubernetes-sigs/kustomize/issues/4001) |
79 |
| -- Improve end-user documentation [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/9) |
| 73 | +Contributors: koba1t, varshaprasad96, external contributors |
80 | 74 |
|
| 75 | +Priority: High |
81 | 76 |
|
82 |
| -## Objective: Improve extension experience |
| 77 | +Effort: High |
83 | 78 |
|
84 |
| -**_WHO: Plugin developers: end users who extend kustomize, but don’t think about internals._** |
| 79 | +Project board: https://github.com/orgs/kubernetes-sigs/projects/53/views/1 |
85 | 80 |
|
86 |
| -This objective is described in detail in the [Kustomize Plugin Graduation KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2953-kustomize-plugin-graduation) / [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/15) . |
| 81 | +For a long time, we have supported KRM functions as the proper way to implement custom generators and transformers. |
| 82 | +However, due to limited staffing, we have been unable to drive this feature out of alpha in kustomize. The two |
| 83 | +main features which we hope to make progress on are Composition and Catalog, two long-standing proposals for which |
| 84 | +numerous users have been waiting for a long time. There are several open issues |
| 85 | +regarding KRM functions where our long-term answer has been these two features, but users have been hearing about them |
| 86 | +for over a year without seeing any progress. If we can implement them, they will vastly improve usability and security |
| 87 | +of KRM functions. |
87 | 88 |
|
88 |
| -Top priorities: |
| 89 | +One item that falls under this category that does not currently have a contributor is improving CRD support. |
| 90 | +Currently, it is difficult to use CRDs properly, as there are three different fields (configurations, openapi, and crds) |
| 91 | +where users have to input their CRD configuration. We need to consolidate these fields into one easy to use feature to |
| 92 | +support CRDs. If you are interested in putting together a design proposal for how to tackle this task, please reach |
| 93 | +out to the kustomize maintainers. |
89 | 94 |
|
90 |
| -- Fix core usability issues with KRM Function extensions: |
91 |
| - - [Better errors for function config failures](https://github.com/kubernetes-sigs/kustomize/issues/4398) |
92 |
| - - [Container KRM Mounts are not mounting via function parameters](https://github.com/kubernetes-sigs/kustomize/issues/4290) |
93 |
| - - [Resolution of local file references in extensions transformer configuration](https://github.com/kubernetes-sigs/kustomize/issues/4154) |
94 |
| - - [Do not silently ignore plugins when config has typo](https://github.com/kubernetes-sigs/kustomize/issues/4399) |
95 |
| - - [KRM Exec Function can't locate executable when referencing a base](https://github.com/kubernetes-sigs/kustomize/issues/4347) |
96 |
| -- Once core usability issues are fixed, [deprecate legacy exec and Go plugin support](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2953-kustomize-plugin-graduation) |
97 |
| -- [Catalog KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2906-kustomize-function-catalog) |
| 95 | +# H1 2024 |
98 | 96 |
|
99 |
| -Secondary priorities: |
| 97 | +## Goal: Improve the kustomize documentation |
100 | 98 |
|
101 |
| -- [Remove Starlark support](https://github.com/kubernetes-sigs/kustomize/issues/4349) |
102 |
| -- [Composition KEP](https://github.com/kubernetes/enhancements/pull/2300). The implementation is complete in [#4223](https://github.com/kubernetes-sigs/kustomize/pull/4323), but depends on: |
103 |
| - - [Convert resources and components to be backed by a reusable generator](https://github.com/kubernetes-sigs/kustomize/issues/4402) |
104 |
| - - [Enable explicitly invoked transformers to use default fieldSpecs](https://github.com/kubernetes-sigs/kustomize/issues/4404) |
105 |
| - - [Enable built-in generators to be used in the transformers field ](https://github.com/kubernetes-sigs/kustomize/issues/4403) |
| 99 | +Contributors: annasong20, external contributions |
106 | 100 |
|
| 101 | +Priority: High |
107 | 102 |
|
108 |
| -Also very valuable to the project: |
| 103 | +Effort: High |
109 | 104 |
|
110 |
| -- [Improve docs for kyaml libraries](https://github.com/kubernetes-sigs/kustomize/issues/3950), especially by adding examples. |
111 |
| -- [Create a reserved field for plugin runtime information](https://github.com/kubernetes-sigs/kustomize/issues/4405) |
112 |
| -- [Develop new standard process for implementing builtin transformers](https://github.com/kubernetes-sigs/kustomize/issues/4400) |
| 105 | +Project board: https://github.com/orgs/kubernetes-sigs/projects/50 |
| 106 | + |
| 107 | +The kustomize documentation is currently fragmented, out of date, and lacks examples to fully understand its value. |
| 108 | +We have had a "docs project" for a long time; we need to prioritize implementing it so that the documentation is in |
| 109 | +one place, easy to find, and helps new users get started more easily. Some outcomes from this project should be: |
| 110 | + |
| 111 | +- A single, unified website hosted on kustomize.io |
| 112 | +- Updated information architecture, and a plan to keep it up to date |
| 113 | +- End to end examples of using kustomize, including complex use cases |
| 114 | + |
| 115 | +## Goal: Fix core usability bugs in kustomize |
| 116 | + |
| 117 | +Contributors: external contributions |
| 118 | + |
| 119 | +Priority: High |
| 120 | + |
| 121 | +Effort: High |
| 122 | + |
| 123 | +Project board: https://github.com/orgs/kubernetes-sigs/projects/51 |
| 124 | + |
| 125 | +There are several core usability issues that block some users from adopting kustomize features or in |
| 126 | +some base block users from using kustomize entirely. These issues range from small bugs with workable but |
| 127 | +inconvenient workarounds, to enormous feature gaps. |
| 128 | + |
| 129 | +As part of this goal, we should work toward reducing the number of such issues that we have, making |
| 130 | +kustomize work more smoothly and predictably, and be usable for a larger range of users. |
| 131 | + |
| 132 | +There are a lot of important issues in this project, but the biggest and highest priority one is that |
| 133 | +kustomize doesn't currently support metadata.GenerateName. Unfortunately, we don't currently have anyone |
| 134 | +actively working on this issue, we would need an external contributor to reach out to the kustomize |
| 135 | +maintainers to pick it up. |
| 136 | + |
| 137 | +## Goal: Improve kustomize CI, release, & security patch processes |
| 138 | + |
| 139 | +Contributors: external contributions |
| 140 | + |
| 141 | +Priority: Medium |
| 142 | + |
| 143 | +Effort: High |
| 144 | + |
| 145 | +Project board: https://github.com/orgs/kubernetes-sigs/projects/54 |
| 146 | + |
| 147 | +The kustomize release process is currently done on-demand and is strictly linear. This means that if we find a CVE, |
| 148 | +we are forced to release the next version of kustomize ASAP, and we are required to release every PR that has merged |
| 149 | +since the last release. This can put us in a sticky situation if we have a breaking change that we are |
| 150 | +not ready to release yet, but we need a patch quickly. |
| 151 | + |
| 152 | +We should try to improve the kustomize release process so that we can release frequently, reliably, and with some |
| 153 | +flexibility. The outcome of this effort should be: |
| 154 | + |
| 155 | +- kustomize is released on a regular cadence (biweekly or monthly) |
| 156 | +- kustomize is able to separate patch and feature releases, so that we can fix CVEs without needing to release |
| 157 | +everything that we have in flight |
| 158 | +- We can detect and fix CVEs early |
| 159 | + |
| 160 | +## Goal: Take long-standing alpha commands out of alpha |
| 161 | + |
| 162 | +Contributors: external contributions |
| 163 | + |
| 164 | +Priority: Medium |
| 165 | + |
| 166 | +Effort: Medium |
| 167 | + |
| 168 | +Project board: https://github.com/orgs/kubernetes-sigs/projects/52 |
| 169 | + |
| 170 | +There are several commands in kustomize that have been alpha for a long time, including the cfg command group and |
| 171 | +localize. Moving them forward can indicate good health of a project and these commands are useful to many users. |
| 172 | +Some of these projects can be good starter issues for new contributors to have an easier onramp while others will |
| 173 | +require more effort and thought. |
0 commit comments