New Contributor Workshop
Guinevere Saenger
Tim Pepper
Welcome on board!
Workshop Facilitators
101 Workshop
Tim Pepper
SIG-Release
VMware�
201 Workshop
Guinevere Saenger
SIG-Contributor-Experience
GitHub
Tutors
Arnaud Meukam
Jeffrey Sica
Bartlomiej Smykla
Rostislav Georgiev
Silvia Moura Pina
Kiran Mova
Rael Garcia
Order of operations - Combined session
Who can contribute to Kubernetes?
Credit Ashley McNamara and github.com/ashleymcnamara/gophers for this image. Credit Renee French for the original gopher concept and design.
Why contribute to Kubernetes?
Fitting Contributions Into Your Job
Choose Your Own Adventure
Figuring out where
to contribute
Find Your Topic Exercise
Let’s Talk
Communication in the�Kubernetes Community
DEF
Standards of Communication
aka: Why is everyone so nice?
We believe that mutual respect is a prerequisite for healthy collaboration.
git.k8s.io/community/code-of-conduct.md
Technical Questions
Slack
Discuss
Planning and Discussion
Mailing lists
GitHub
Issues
Features
Pull requests
Zoom Meetings
Zoom Meetings
Schedule is on the community calendar
Other Communications
Attend a Meetup
Collected links
The SIG System
Special Interest Group
Special Interest Group
SIG sounds like of like a meetup group, and it both isn't and also is.
Each SIG is its own sub-community in Kubernetes, because it's a huge project and we can't all be in one giant pool of 2000 contributors.
Types of SIGs
Feature Area SIGs
sig-auth
sig-apps
sig-autoscaling
sig-cli
sig-multicluster
sig-network
sig-node
sig-scalability
sig-scheduling
sig-service-catalog
sig-storage
sig-ui
“Plumbing” SIGs
sig-api-machinery
sig-cluster-lifecycle
sig-instrumentation
Meta
sig-architecture
sig-contributor-experience
sig-pm
sig-release
sig-testing
Documentation & Website
sig-docs
Cloud Provider
Working Groups and Subprojects
Working Groups: inter-SIG efforts
Subprojects: focus areas for SIGs
For specific:
Working Groups
wg-apply
wg-component-standard
wg-iot-edge
wg-k8s-infra
wg-lts
wg-machine-learning
wg-multitenancy
wg-policy
wg-resource-management
wg-security-audit
Subprojects
Usually found in kubernetes-sigs/ namespace
�Examples include...
cloud tools
kustomize
kind
kubebuilder
federation-v2
contributor-site
User Groups
No codebase ownership�
Topics of interest shared across large groups of users
Big Data
Committees
project governance oriented��there are currently three committees:
Steering��Product Security��Code of Conduct
Picking the right SIG
How Do I Join A SIG?
Really? That’s it?
User Groups
Example: Big Data User Group
Committees
Examples:
Quick reference
Tour of�Repositories
Core Repository
Most SIGs are stakeholders in the monolith.
Areas of SIG ownership can be found in https://git.k8s.io/community/sigs.yaml
My repository, my rules
Repos can have different:
However, most are pretty similar.
Ready to jump right in?
Split Session
BEGIN 101
Morning
Afternoon
NCW 101 Agenda
Basic Repo/Code Tour
Basic Repo/Code Tour
Dev Environment: Pre-Requisites
Dev Environment: Initialization
We’re using a local Harbor instance to serve up the majority of the container images you’ll need for this:
docker pull harbor.k8s.dev/contribsummit/debian-base-amd64:0.4.1
docker pull harbor.k8s.dev/contribsummit/debian-hyperkube-base-amd64:0.12.1
docker pull harbor.k8s.dev/contribsummit/debian-iptables-amd64:v11.0.1
docker pull harbor.k8s.dev/contribsummit/kindest/node:v1.14.2
docker pull harbor.k8s.dev/contribsummit/kube-cross:v1.12.1-2
docker pull harbor.k8s.dev/contribsummit/etcd:latest
Dev Environment: Container Images
SIGs, Labels, Issues: Overview
How to talk to the Kubernetes
community and automation
DEF
Required Labels for Issues
On creation:�
sig/
kind/��
Label
sig/auth
sig/testing
sig/api-machinery
sig/node
Bot command
/sig auth
/sig testing
/sig api-machinery
/sig node
The SIG Label
Adding a label
kind/bug kind/failing-test
kind/feature kind/flake
kind/documentation kind/cleanup
kind/design
Example bot command: /kind feature
The Kind Label
priority/critical-urgent
priority/important-soon
priority/important-longterm
priority/backlog
priority/awaiting-evidence
Example bot command:�/priority critical-urgent
The Priority Label
area/kubectl
area/api
area/dns
area/platform/gce
The Area Label
triage/duplicate
triage/needs-information
triage/support
triage/unreproduceable
triage/unresolved
The Triage Label
Open Source Interactions
me
implementation
centralized
implicit
assumptions
Open Source Interactions
we
collaboration
decentralized
explicit
shared theories
me
implementation
centralized
implicit
assumptions
Open Source Interactions
functionality
code
Open Source Interactions
docs
tests
integrations
releases
security
functionality
code
Open Source Interactions
functionality
code
docs
tests
integrations
releases
security
HUMAN / SOCIAL:
Open Source Interactions
Be good people!
Mutual respect is a prerequisite for healthy collaboration.
git.k8s.io/community/code-of-conduct.md
Open Source Interactions
Goal: Get a change into project
Open Source Interactions
Goal: Get a change into project
Path:
Open Source Interactions
Reviewable code:
Open Source Interactions
Reviewable code:
Make the reviewer’s job easy:
Open Source Interactions
Timing:
Open source is fast in aggregate, but:
Open Source Interactions
PRs and Bots: GitHub PR Flow
PRs and Bots: Kubernetes PR Flow
release-note cncf-cla: no needs-ok-to-test needs-kind needs-sig
Command
/assign @username
�/retest�
/close��/cc @username
Result
Assigns a Reviewer
�Reruns failed tests��Closes PR��Tags a user
PRs and Bots: Useful Commands
PRs and Bots: Reviewers/Approvers
PRs and Bots: Reviewers/Approvers
PRs and Bots: Test Results
PRs and Bots: Following Up
Answer questions
Resolve:
Bot messages
Code comments
Test failures
Contributor Ladder
Subproject Owner
Set priorities and approve proposals for subproject
Responsibility and leadership for entire repository/directory
Approver
Approve contributions for acceptance
Highly experienced reviewer and contributor in subproject
Reviewer
History of reviewing; reviews frequently
Authorship in subproject
Member
Active contributor to the project
Sponsored by two Reviewers
Non-member Contributors
Contributor Ladder: Membership
Contributor Ladder: Membership
Contributor Ladder
OWNERS
YAML files sprinkled all through the repos, eg:
http://git.k8s.io/community/contributors/guide/owners.md
Playground Exercise
Your turn!!!
https://sigs.k8s.io/contributor-playground
Playground Exercise
Have you downloaded the things?
Have you installed the things?
Do you have k/k forked and cloned?
Can you “make”?
Dev Environment: Status Check
LUNCH BREAK!
Let us know if you need any additional hands on help with your laptop configuration...
“make” should work now...
Dev Environment: Final Check
Build System(s)
Make Targets
Make Targets
make WHAT=cmd/kubectl’
Make Targets: Try it...build kubectl!
fmt.Println("!Hola Barcelona!")
./kubectl version
Testing
Testing: Unit Tests
ok k8s.io/kubernetes/pkg/kubectl 5.525s
? k8s.io/kubernetes/pkg/kubectl/apply [no test files]
ok k8s.io/kubernetes/pkg/kubectl/apply/parse 0.442s
ok k8s.io/kubernetes/pkg/kubectl/apply/strategy 2.916s
ok k8s.io/kubernetes/pkg/kubectl/apps 0.251s
.
.
Testing: Integration
Testing: End-to-End (e2e)
sudo PATH=$PATH hack/local-up-cluster.sh
export KUBECONFIG=/path/to/kubeconfig
kubetest --provider=local --test --test_args="--minStartupPods=1 --ginkgo.focus=Secrets"
Testing: Conformance
(see previous on local-cluster-up.sh)
make WHAT="test/e2e/e2e.test vendor/github.com/onsi/ginkgo/ginkgo cmd/kubectl"
kubetest --provider=skeleton --test --test_args="--ginkgo.focus=\[Conformance\]"
Testing: Minikube
Testing: KinD
SIGs, Areas, Issues: Engaging
What’s next for you?
SIGs, Areas, Issues: Engaging
Non-Code Contributions
SIGs, Areas, Issues: Engaging
Mentoring Opportunities
SIGs, Areas, Issues: Engaging
Kubernetes Tutorials
SIGs, Areas, Issues: Engaging
Mentoring Links
https://git.k8s.io/community/mentoring/meet-our-contributors.md
https://git.k8s.io/community/mentoring/google-summer-of-code.md
https://git.k8s.io/community/mentoring/outreachy.md
https://git.k8s.io/community/mentoring/
Technical Help and Tutorials
https://git.k8s.io/community/events/office-hours.md
https://kubernetes.io/docs/tutorials/
Contributor Guide
https://git.k8s.io/community/contributors/guide/README.md
Developer Guide
https://git.k8s.io/community/contributors/devel/README.md
SIGs, Areas, Issues: Engaging
Right here at KubeCon!
...carry this discussion into the SIG Meet & Greet
Help Wanted: First PR Ideas
END 101
BEGIN 201
201 Session
The Kubernetes Monolith
Core Repository
Most SIGs are stakeholders in the monolith.
Areas of SIG ownership can be found in https://git.k8s.io/community/sigs.yaml
Building Binaries
Let’s Break A Test!
$make test WHAT=./<your_package_here>
Labels and Bot Commands
The Contributor Playground
Bot Commands
Kubernetes GitHub Workflow
Membership
Owner
Set priorities and approve proposals for subproject
Responsibility and leadership for entire repository
Approver
Approve contributions for acceptance
Highly experienced reviewer and contributor in subproject
Reviewer
History of reviewing; reviews frequently
Authorship in subproject
Member
Active contributor to the project
Sponsored by two Reviewers
Non-member Contributors
Code Cleanup Demo
Finding A Reviewer
Releases
Software has to leave home eventually
The 3-month Release Cycle
Enhancements Discussion (per SIG): ongoing
Enhancements Freeze: week ~4
Release Branch Creation: week ~7
Code Slush / Freeze: week ~8
...bugs, testing, bugs, fixing, bugs, ...iterating
End Code Freeze: week ~12
Release: week ~13
Release Process
Enhancements
Definition
Feature
Work
Bug
Fixing
Release
3 Month Cycle
Release Lifecycle
1.14.x Patch Releases
3mo’s
~9mo’s
K8s Releases
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Feb
Jan
Dec
Definition
Enhancement Work
Fixes
1.14
Release Lifecycle
1.14.x Patch Releases
1.15.x Patch Releases
3mo’s
3mo’s
~9mo’s
~9mo’s
K8s Releases
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Feb
Jan
Dec
Definition
Enhancement Work
Fixes
1.15
Definition
Enhancement Work
Fixes
1.14
~9mo’s
3mo’s
Release Lifecycle
1.16.x Patch
1.14.x Patch Releases
1.15.x Patch Releases
3mo’s
3mo’s
~9mo’s
~9mo’s
~9mo’s
K8s Releases
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Feb
Jan
Dec
Definition
Enhancement Work
Fixes
1.16
3mo’s
Definition
Enhancement Work
Fixes
1.15
Definition
Enhancement Work
Fixes
1.14
Release Lifecycle
1.16.x Patch
1.14.x Patch Releases
1.15.x Patch Releases
3mo’s
3mo’s
~9mo’s
~9mo’s
~9mo’s
K8s Releases
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Feb
Jan
Dec
3mo’s
3mo’s
Definition
Enhancement Work
Fixes
1.17
Definition
Enhancement Work
Fixes
1.15
Definition
Enhancement Work
Fixes
1.14
Definition
Enhancement Work
Fixes
1.16
Branch Management
Thank you, and�welcome aboard!
END 201
SIG Meet-and-Greet
Post-Workshop Resources
Videos are available (on Google Drive)
Also please reach out to Guin or Tim anytime:�@gsaenger, @tpepper on k8s Slack�@guincodes on twitter