|
| 1 | +# Contributing |
| 2 | + |
| 3 | +Welcome to the Kubernetes SIG Cloud Provider contributing guide. We are excited |
| 4 | +about the prospect of you joining our community! |
| 5 | + |
| 6 | +## Before You Begin |
| 7 | + |
| 8 | +We strongly recommend you to understand the main [Kubernetes Contributor |
| 9 | +Guide](http://git.k8s.io/community/contributors/guide) and adhere to the |
| 10 | +contribution rules (specially signing the CLA). |
| 11 | + |
| 12 | +You can also check the [Contributor Cheat |
| 13 | +Sheet](/contributors/guide/contributor-cheatsheet/), with common resources for |
| 14 | +existing developers. |
| 15 | + |
| 16 | +Read the [developer guide]. |
| 17 | + |
| 18 | +Please be aware that all contributions to Kubernetes require time and |
| 19 | +commitment from project maintainers to direct and review work. This is done in |
| 20 | +additional to many other maintainer responsibilities, and direct engagement |
| 21 | +from maintainers is a finite resource. |
| 22 | + |
| 23 | +### Learn about our work |
| 24 | + |
| 25 | +* [The Future of Cloud Providers in Kubernetes](https://kubernetes.io/blog/2019/04/17/the-future-of-cloud-providers-in-kubernetes/) |
| 26 | +* [Cloud Controller Manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) |
| 27 | + |
| 28 | +## Your first contribution |
| 29 | + |
| 30 | +### Adopt an issue |
| 31 | + |
| 32 | +Pick up an [issue] from the backlog by commenting on the issue that you would |
| 33 | +like to work on it. Be sure to mention the author of the issue as well as the |
| 34 | +SIG Cloud Provider members. |
| 35 | + |
| 36 | +**Note:** Don't do this unless you will start work on the issue within a few |
| 37 | +days of being assigned. |
| 38 | + |
| 39 | +**Note:** GitHub only allows issues to be assigned to GitHub accounts that are |
| 40 | +part of the organization. |
| 41 | + |
| 42 | +**Picking your first issue** |
| 43 | + |
| 44 | +For your first issue, we recommend picking an issue labeled with "good first |
| 45 | +issue" from the [issue] backlog. Work with active members of the SIG to find a |
| 46 | +suitable issue if you need help. |
| 47 | + |
| 48 | +**Picking the right size of issue** |
| 49 | + |
| 50 | +Be sure to pick up an issue that is appropriate to the time you are able to |
| 51 | +commit. We recommend first time contributors start with small or medium |
| 52 | +issues. |
| 53 | + |
| 54 | +Following are very rough estimates, but are best effort only. They assume you |
| 55 | +have a development environment already set up and are able to build a kubectl |
| 56 | +binary and use it against a cluster. These estimates assume some knowledge of |
| 57 | +Go. |
| 58 | + |
| 59 | +- `size/S` |
| 60 | + - simple complexity, good for novices to project (4-10 hours) |
| 61 | +- `size/M` |
| 62 | + - moderate complexity (10-20 hours) |
| 63 | +- `size/L` |
| 64 | + - high complexity (20+ hours) |
| 65 | +- `size/XL` |
| 66 | + - very high complexity, might require help from community members (40-80 hours) |
| 67 | + |
| 68 | +Meta/Umbrella issues may have multiple components. By signing up for a Meta/Umbrella issue, |
| 69 | +you are only committing to one piece of it. Let the issue author know when you have completed |
| 70 | +some piece of it, and if you would like to continue working on it, or have it unassigned. |
| 71 | + |
| 72 | +**Picking the right kind of issue** |
| 73 | + |
| 74 | +Guided issues have a *type* defining the type of work to be done. Pick up an |
| 75 | +issue that fits your experience level and interest. Documentation and |
| 76 | +test-coverage issues typically are smaller in scope and easier to complete than |
| 77 | +features and cleanup issues. |
| 78 | + |
| 79 | +- `type/code-cleanup` |
| 80 | + - Usually some refactoring or small rewrites of code. |
| 81 | +- `type/code-documentation` |
| 82 | + - Write `doc.go` with package overview and examples or add code comments to document |
| 83 | + existing types and functions. |
| 84 | +- `type/code-feature` |
| 85 | + - Usually a new go package / library for some functionality that is requested. |
| 86 | + Should be encapsulated in its own interfaces with thorough unit tests for the new library. |
| 87 | +- `type/code-test-coverage` |
| 88 | + - Audit tests for a package. Run coverage tools and also manually look at what functions |
| 89 | + are missing unit or integration tests. Write tests for these functions. |
| 90 | + |
| 91 | +**Provide periodic status updates** |
| 92 | + |
| 93 | +Once you have requested an issue and it has been accepted, you will be expected |
| 94 | +to provide periodic updates to it. Do update the issue with your status at least every |
| 95 | +week, and publish your work to a fork so the community can see your progress and |
| 96 | +provide early feedback. |
| 97 | + |
| 98 | +If you find the issue is too challenging, time consuming, or you are no longer able to work on it, |
| 99 | +this is perfectly acceptable and please let the issue author know. |
| 100 | +If you like, you may pick up a different issue immediately or sometime in the future. |
| 101 | + |
| 102 | +**Testing** |
| 103 | + |
| 104 | +Look at [tests] for more information about testing. |
| 105 | + |
| 106 | +**Summary**: |
| 107 | + |
| 108 | +- Don't pick up an issue until you are ready to start working on it |
| 109 | +- When you want to pick up an issue, be sure to comment to the [leads] that you |
| 110 | + are taking the issue. |
| 111 | +- Update the issue every week with your progress so we know it is being |
| 112 | + actively worked on. |
| 113 | +- There is an expectation that some time will be committed to working on the |
| 114 | + issue each week until it is completed, or you are blocked on a maintainer. |
| 115 | + |
| 116 | +### Meet the community |
| 117 | + |
| 118 | +Engage with the SIG cloud provider community! Let us know who you are and how |
| 119 | +things are going! |
| 120 | + |
| 121 | +- In [slack][slack-messages] (signup [here][slack-signup]), @mention a |
| 122 | + [lead][leads] and ask if there are any issues you could pick up, or let them |
| 123 | + know what you are working on. |
| 124 | + |
| 125 | +- Attend a sig-cloud-provider [meeting] and introduce yourself and what you are |
| 126 | + working on. |
| 127 | + |
| 128 | +- The sig-cloud-provider [community page] lists sig-cloud-provider [leads], |
| 129 | + channels of [communication], and group [meeting] times. |
| 130 | + |
| 131 | +## Information about how Features are developed |
| 132 | + |
| 133 | +Kubernetes uses a process called a KEP (Kubernetes enhancement proposal) to |
| 134 | +drive feature development. See [enhancements] for the most up to date |
| 135 | +information about how enhancements are planned and developed in the Kubernetes |
| 136 | +community. |
| 137 | + |
| 138 | +## Escalation |
| 139 | + |
| 140 | +### If your bug issue is stuck |
| 141 | + |
| 142 | +If an issue isn't getting any attention and is unresolved, mention |
| 143 | +`@kubernetes/sig-cloud-provider-bugs`. |
| 144 | + |
| 145 | +Highlight the severity and urgency of the issue. For severe issues |
| 146 | +escalate by contacting sig [leads] and attending the [meeting]. |
| 147 | + |
| 148 | +### If your feature request issue is stuck |
| 149 | + |
| 150 | +If an issue isn't getting any attention and is unresolved, mention |
| 151 | +`@kubernetes/sig-cloud-provider-feature-requests`. |
| 152 | + |
| 153 | +If a particular issue has a high impact for you or your business, |
| 154 | +make sure this is clear on the bug, and reach out to the sig leads |
| 155 | +directly. Consider attending the sig meeting to discuss over video |
| 156 | +conference. |
| 157 | + |
| 158 | +### If your PR is stuck |
| 159 | + |
| 160 | +It may happen that your PR seems to be stuck without clear actionable |
| 161 | +feedback for a week or longer. A PR _associated with a bug or design |
| 162 | +proposal_ is much less likely to be stuck than a dangling PR. |
| 163 | + |
| 164 | +However, if it happens do the following: |
| 165 | + |
| 166 | +- If your PR is stuck for a week or more because it has never gotten any |
| 167 | + comments, mention `@kubernetes/sig-cloud-provider-pr-reviews` and ask for attention. |
| 168 | +- If your PR is stuck for a week or more _after_ it got comments, but |
| 169 | + the attention has died down. Mention the reviewer and comment with |
| 170 | + [`PTAL`]. |
| 171 | + |
| 172 | +If you are still not able to get any attention after a couple days, |
| 173 | +escalate to sig [leads] by mentioning them. |
| 174 | + |
| 175 | +### If your KEP is stuck |
| 176 | + |
| 177 | +It may happen that your KEP gets stuck without getting merged or additional |
| 178 | +feedback. If you believe that your design is important and has been dropped, or |
| 179 | +it is not moving forward, please add it to the sig-cloud-provider bi-weekly |
| 180 | +meeting [agenda] and mail the [group] saying you'd like to discuss it. |
| 181 | + |
| 182 | +### General escalation instructions |
| 183 | + |
| 184 | +See the sig-cloud-provider [community page] for points of contact and meeting times: |
| 185 | + |
| 186 | +- Attend the sig-cloud-provider [meeting] |
| 187 | +- Message one of the sig leads on [slack][slack-messages] (signup [here][slack-signup]) |
| 188 | +- Send an email to the _[email protected]_ [group ]. |
| 189 | + |
| 190 | +## Use of [@mentions] |
| 191 | + |
| 192 | +- `@{any lead}` solicit opinion or advice from [leads]. |
| 193 | +- `@kubernetes/sig-cloud-provider-bugs` sig-cloud-provider centric bugs. |
| 194 | +- `@kubernetes/sig-cloud-provider-pr-reviews` triggers review of code fix PR. |
| 195 | +- `@kubernetes/sig-cloud-provider-feature-requests` flags a feature request. |
| 196 | +- `@kubernetes/sig-cloud-provider-proposals` flags a design proposal. |
| 197 | + |
| 198 | +[@mentions]: https://help.github.com/articles/basic-writing-and-formatting-syntax/#mentioning-users-and-teams |
| 199 | +[Kubernetes Basics Tutorial]: https://kubernetes.io/docs/tutorials/kubernetes-basics |
| 200 | +[PR]: https://help.github.com/articles/creating-a-pull-request |
| 201 | +[`PTAL`]: https://en.wiktionary.org/wiki/PTAL |
| 202 | +[agenda]: https://docs.google.com/document/d/1OZE-ub-v6B8y-GuaWejL-vU_f9jsjBbrim4LtTfxssw/edit# |
| 203 | +[communication]: /sig-cloud-provider/README.md#contact |
| 204 | +[community page]: /sig-cloud-provider |
| 205 | +[developer guide]: /contributors/devel/development.md |
| 206 | +[enhancements]: https://github.com/kubernetes/enhancements |
| 207 | +[group]: https://groups.google.com/forum/#!forum/kubernetes-sig-cloud-provider |
| 208 | +[issue]: https://github.com/kubernetes/cloud-provider/issues |
| 209 | +[leads]: /sig-cloud-provider/README.md#leadership |
| 210 | +[meeting]: /sig-cloud-provider/README.md#meetings |
| 211 | +[slack-messages]: https://kubernetes.slack.com/messages/sig-cloud-provider |
| 212 | +[slack-signup]: http://slack.k8s.io/ |
| 213 | +[tests]: /contributors/devel/sig-testing/testing.md |
0 commit comments