---
# System prepended metadata

title: sig-cli gclc* reviewers

---

# sig-cli gclc* reviewers
*\*group contributor ladder cohort*

## Communication
Slack: #sig-cli (http://slack.k8s.io/ for invite)
Mailing list: https://groups.google.com/forum/#!forum/kubernetes-sig-cli

SIG's landing page: https://github.com/kubernetes/community/blob/master/sig-cli/README.md

meeting recordings: https://www.youtube.com/playlist?list=PL69nYSiGNLP28HaTzSlFe6RJVxpFmbUvF

Developer guide: https://github.com/kubernetes/community/tree/master/contributors/devel#sig-cli

## Prerequisites
**Code**
 - perfect examples of commands: [wait](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/cmd/wait/wait.go), [events](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/cmd/events/events.go)
 - https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/kubectl/pkg/cmd

**Youtube Videos**
 - kubectl tour: https://www.youtube.com/watch?v=eZeCFRh2uGg&t=540s



**Issues**
* [Umbrella issue for commands refactoring](https://github.com/kubernetes/kubectl/issues/1046) 

**Interesting PRs**
* [Refactoring for config subcommands](https://github.com/kubernetes/kubernetes/pull/109456)

## Recommended Books
1. [Learning Go](https://www.amazon.com/Learning-Go-Idiomatic-Real-World-Programming/dp/1492077216/ref=sr_1_4?crid=37LOA1YIC4ZIQ)
2. [Programming Kubernetes](https://www.amazon.com/Programming-Kubernetes-Developing-Cloud-Native-Applications/dp/1492047104/ref=sr_1_1?crid=28SZA7Y4ZH5QR)

## Subprojects:
1. kubectl: https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/kubectl 
2. kustomize: https://github.com/kubernetes-sigs/kustomize/

## Helpful Links
For reviewership: https://github.com/kubernetes/community/blob/master/community-membership.md

All `kubectl` commands can be found in here: https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/kubectl/pkg/cmd

Library for helping to write `kubectl` commands is here: https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/cli-runtime

All clients used in `kubectl` are here: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/client-go/

Recordings of cohort sessions: https://drive.google.com/drive/folders/1jjKU_NROpRucNOQie097EZHJ9SU35WeN


## Helpful Tools

* Golang Debugging: https://github.com/go-delve/delve
* Pattern matching search: https://github.com/monochromegane/the_platinum_searcher
* GitHub CLI: https://cli.github.com
* tig: https://jonas.github.io/tig/

## Testing Session(Antonio)
**Testing guidelines**
 - de-flaking tests: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-testing/flaky-tests.md
 - Antonio Ojea Presentation
 https://docs.google.com/presentation/d/1gjZMMr_sjLkPlF4a4p5qrvFpCPlU2NWATMGA27tXxxo/edit#slide=id.g152b9778757_0_91

## Release Session (Rey)
https://github.com/kubernetes/sig-release/tree/master/release-team
https://github.com/kubernetes/enhancements/tree/master/keps
 
## Reviewing Session (Tim)
https://speakerdeck.com/thockin/code-review-in-kubernetes

## PR Live Reviewing Session (Maciej)
https://youtu.be/wTezaqqyzlk?t=310

## Reviewing Session (Bob)
https://www.youtube.com/watch?v=OZVv7-o8i40
https://www.kubernetes.dev/docs/comms/notifications/
https://gubernator.k8s.io/pr

## Tasks

### Task 1
1. Pick 3 or more [kubectl commands](https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/kubectl/pkg/cmd) and try to get to know 
   it as best as you can. Understand the flow (`*Options` stucts, `Complete`, `Validate`, `Run` methods, its mechanics and testing - especially using 
   the fake client). If you spot problems feel free to open a fix, and ask another member of the group for a peer review. 
2. Look through both [cli-runtime](https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/cli-runtime/) and 
   [client-go](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/client-go/) and understand how they are being used in `kubectl`.

### Task 2
From the commands you were looking into previous task, go through [issues k/k](https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Aissue+label%3Asig%2Fcli), [issues kubectl](https://github.com/kubernetes/kubectl/issues) and open [pull requests](https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Apr+label%3Asig%2Fcli).

## FAQ
