diff --git a/contributors/new-contributor-playground/new-contributor-nodes.md b/contributors/new-contributor-playground/new-contributor-nodes.md new file mode 100644 index 000000000..9585cff19 --- /dev/null +++ b/contributors/new-contributor-playground/new-contributor-nodes.md @@ -0,0 +1,346 @@ +# New kubernetes contributor workshop + +Joining in the beginning was onboarding on a yacht +Now is more onboarding a BIG --Paquebot + +Will be a Hard schedule, and let's hope we can achieve everything +Sig-contributor-experience -> from Non-member contributores to Owner + +## SIG presentation + +- SIG-docs & SIG-contributor-experience: **Docs and website** contribution +- SIG-testing: **Testing** contribution +- SIG-\* (*depends on the area to contribute on*): **Code** contribution + +**=> Find your first topics**: bug, feature, learning, community development and documentation + +Table exercise: Introduce yourself and give a tip on where you want to contribute in Kubernetes + + +## Communication in the community + +Kubernetes community is like a Capybara: community members are really cool with everyone and they are from a lot of diffrenet horizons. + +- Tech question on Slack and Stack Overflow, not on Github +- A lot of discussion will be involve when GH issues and PR are opened. Don't be frustrated +- Stay patient because there is a lot of contribution + +When in doubt, **ask on Slack** + +Other communication channels: + +- Community meetings +- Mailing lists +- @ on Github +- Office Hour +- Kubernetes meetups https://www.meetup.com/topics/kubernetes + +on https://kubernetes.io/community, there is the schedule for all the SIG/Working group meeting. +If you want to join or create a meetup. Go to **slack#sig-contribex** + +## SIG - Special Interest Group + +Semi-autonomous teams: +- Own leaders & charteers +- Code, Github repo, Slack, mailing, meeting responsibility + +### Types + +[SIG List](https://github.com/kubernetes/community/blob/master/sig-list.md) + +1. Features Area + - sig-auth + - sig-apps + - sig-autoscaling + - sig-big-data + - sig-cli + - sig-multicluster + - sig-network + - sig-node + - sig-scalability + - sig-scheduling + - sig-service-catalog + - sig-storage + - sig-ui +2. Plumbing + - sig-cluster-lifecycle + - sig-api-machinary + - sig-instrumentation +3. Cloud Providers *(currently working on moving cloudprovider code out of Core)* + - sig-aws + - sig-azure + - sig-gcp + - sig-ibmcloud + - sig-openstack +4. Meta + - sig-architecture: For all general architectural decision + - sig-contributor-experience: Helping contributor and community experience + - sig-product-management: Long-term decision + - sig-release + - sig-testing: In charge of all the test for Kubernetes +5. Docs + - sig-docs: for documentation and website + +## Working groups and Subproject + +From working group to subproject. + +for stuff really specific. Eg. `Helm` Belong to *SIG-apps* but dedicated subporject + +**=> Tools, Goals or Area** + +Move faster than SIG + +- wg-app-def +- wg-apply +- wg-cloud-provider +- wg-cluster-api +- wg-container-identity +- ... + +## Tour des repositories + +Everything will be refactored (cleaning, move, merged,...) + +### Core repository +- [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) + +### Project + +- [kubernetes/Community](https://github.com/kubernetes/Community): Kubecon, proposition, Code of conduct and Contribution guideline, SIG-list +- [kubernetes/Features](https://github.com/kubernetes/Features): Features proposal for future release +- [kubernetes/Steering](https://github.com/kubernetes/Steering) +- [kubernetes/Test-Infra](https://github.com/kubernetes/Test-Infra): All related to test except Perf +- [kubernetes/Perf-Tests](https://github.com/kubernetes/Perf-Tests): + +### Docs/Website + +- website +- kubernetes-cn +- kubernetes-ko + +### Developer Tools + +- sample-controller* +- sample- apiserver* +- code-generator* +- k8s.io +- kubernetes-template-project: For new github repo + +### Staging repositories + +Mirror of core part for easy vendoring + +### SIG repositories + +- release +- federation +- autoscaler + +### Cloud Providers + +No AWS + +### Tools & Products + +- kubeadm +- kubectl +- kops +- helm +- charts +- kompose +- ingress-nginx +- minikube +- dashboard +- heapster +- kubernetes-anywhere +- kube-openapi + +### 2nd Namespace: Kubernetes-sigs + +Too much places for Random/Incubation stuff. +No working path for **promotion/deprecation** + +In future: +1. start in Kubernetes-sigs +2. SIGs determine when and how the project will be **promoted/deprecated** + +Those repositories can have their own rules: +- Approval +- Ownership +- ... + +## Contribution + +### First Bug report + +``` +- Bug or Feature + +- What happened + +- How to reproduce + +``` + +### Issue for specification + +Most of k8s change start with an issue: + +- Feature proposal +- API changes proposal +- Specification + +### From Issue to Code/Docs + +1. Start with an issue +2. Apply all appropriate labels +3. cc SIG leads and concerned devs +4. Raise the issue at a SIG meeting or on mailing list +5. If *Lazy consensus*, submit a PR + +### Required labels https://github.com/kubernetes/test-infra/blob/master/label_sync/labels.md + +#### On creation +- `sig/\*`: the sig the issue belong too +- `kind/\*`: + - bug + - feature + - documentation + - design + - failing-test + +#### For issue closed as port of **triage** + +- `triage/duplicate` +- `triage/needs-information` +- `triage/support` +- `triage/unreproduceable` +- `triage/unresolved` + +#### Prority + +- `priority/critical-urgent` +- `priority/important-soon` +- `priority/important-longtem` +- `priority/backlog` +- `priority/awaiting-evidence` + +#### Area + +Free for dedicated issue area + +- `area/kubectl` +- `area/api` +- `area/dns` +- `area/platform/gcp` + +#### help-wanted + +Currently mostly complicated things + +#### SOON + +`good-first-issue` + +## Making a contribution by Pull Request + +We will go through the typical PR process on kubernetes repos. + +We will play there: [community/contributors/new-contributor-playground at master · kubernetes/community · GitHub](https://github.com/kubernetes/community/tree/master/contributors/new-contributor-playground) + +1. When we contribute to any kubernetes repository, **fork it** + +2. Do your modification in your fork +``` +$ git clone git@github.com:jgsqware/community.git $GOPATH/src/github.com/kubernetes/community +$ git remote add upstream https://github.com/kubernetes/community.git +$ git remote -v +origin git@github.com:jgsqware/community.git (fetch) +origin git@github.com:jgsqware/community.git (push) +upstream git@github.com:kubernetes/community.git (fetch) +upstream git@github.com:kubernetes/community.git (push) +$ git checkout -b kubecon +Switched to a new branch 'kubecon' + +## DO YOUR MODIFCATION IN THE CODE## + +$ git add contributors/new-contributor-playground/new-contibutor-playground-xyz.md +$ git commit + + +### IN YOUR COMMIT EDITOR ### + + Adding a new contributors file + + We are currently experimenting PR process in the kubernetes repository. + +$ git push -u origin kubecon +``` + +3. Create a Pull request via Github +4. If needed, sign the CLA to make valid your contribution +5. Read the `k8s-ci-robot` message and `/assign @reviewer` recommended by the `k8s-ci-robot` +6. wait for a `LTGM` label from one of the `OWNER/reviewers` +7. wait for approval from one of `OWNER/approvers` +8. `k8s-ci-robot` will automatically merge the PR + +`needs-ok-to-test` is used for non-member contributor to validate the pull request + +## Test infrastructure + +> How bot toll you when you mess up + +At the end of a PR there is a bunch of test. +2 types: + - required: Always run and needed to pass to validate the PR (eg. end-to-end test) + - not required: Needed in specific condition (eg. modifying on ly specific part of code) + +If something failed, click on `details` and check the test failure logs to see what happened. +There is `junit-XX.log` with the list of test excuted and `e2e-xxxxx` folder with all the component logs. +To check if the test failed because of your PR or another one, you can click on the **TOP** `pull-request-xxx` link and you will see the test-grid and check if your failing test is failing in other PR too. + +If you want to retrigger the test manually, you can comment the PR with `/retest` and `k8s-ci-robot` will retrigger the tests. + +## SIG-Docs contribution + +Anyone can contribute to docs. + +### Kubernetes docs + +- Websites URL +- Github Repository +- k8s slack: #sig-docs + +### Working with docs + +Docs use `k8s-ci-robot`. Approval process is the same as for any k8s repo +In docs, `master` branch is the current version of the docs. So always branch from `master`. It's continous deployment +For a specific release docs, branch from `release-1.X`. + +## Local build and Test + +The code: [kubernetes/kubernetes] +The process: [kubernetes/community] + +### Dev Env + +You need: +- Go +- Docker + + +- Lot of RAM and CPU and 10 GB of space +- best to use Linux +- place you k8s repo fork in: + - `$GOPATH/src/k8s.io/kubernetes` +- `cd $GOPATH/src/k8s.io/kubernetes` +- build: `./build/run.sh make` + - Build is incremental, keep running `./build/run.sh make` til it works +- To build variant: `make WHAT="kubectl"` +- Building kubectl on Mac for linux: `KUBE_*_PLATFORM="linux/amd64" make WHAT "kubectl"` + +there is `build` documentation there: https://git.k8s.io/kubernetes/build + +### Testing +there is `test` documentation there: https://git.k8s.io/community/contributor/guide