diff options
| author | Jeremy Wood <36464809+JeremyWx@users.noreply.github.com> | 2019-10-28 11:44:42 -0400 |
|---|---|---|
| committer | Jeremy Wood <36464809+JeremyWx@users.noreply.github.com> | 2019-10-28 11:44:42 -0400 |
| commit | 2639fa60168267cc746b6249dd792b08c721674b (patch) | |
| tree | eb077564afcc3c9e823c6753bb87c2274c86a42b | |
| parent | 8ee01f9f491343a7d8b9b9030ff0752e2b01b196 (diff) | |
| parent | ecea14c0af705635a47d6dbc99dc050ed2373065 (diff) | |
Merge remote-tracking branch 'upstream/master'
36 files changed, 1301 insertions, 248 deletions
diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index 94653315..d6fe0939 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -143,16 +143,17 @@ aliases: - cantbewong - mylesagray committee-code-of-conduct: + - AevaOnline - Bradamant3 - carolynvs - - eparis - jdumars - - parispittman + - tashimi committee-product-security: - cjcullen - joelsmith - jonpulsifer - liggitt + - lukehinds - philips - tallclair committee-steering: diff --git a/committee-code-of-conduct/README.md b/committee-code-of-conduct/README.md index a7af9770..9a68912a 100644 --- a/committee-code-of-conduct/README.md +++ b/committee-code-of-conduct/README.md @@ -14,11 +14,11 @@ The [charter](charter.md) defines the scope and governance of the Code of Conduc ## Members +* Aeva van der Veen (**[@AevaOnline](https://github.com/AevaOnline)**), Microsoft * Jennifer Rondeau (**[@Bradamant3](https://github.com/Bradamant3)**), Stripe * Carolyn Van Slyck (**[@carolynvs](https://github.com/carolynvs)**), Microsoft -* Eric Paris (**[@eparis](https://github.com/eparis)**), Red Hat * Jaice Singer DuMars (**[@jdumars](https://github.com/jdumars)**), Google -* Paris Pittman (**[@parispittman](https://github.com/parispittman)**), Google +* Tasha Drew (**[@tashimi](https://github.com/tashimi)**), VMware ## Contact - Private Mailing List: conduct@kubernetes.io @@ -32,14 +32,14 @@ The [charter](charter.md) defines the scope and governance of the Code of Conduc The members and their terms are as follows: -### Term ends on August 7, 2019 -- Eric Paris (Red Hat) - 1 year -- Jennifer Rondeau (Heptio) - 1 year - ### Term ends on August 7, 2020 -- Jaice Singer Dumars (Google) - 2 years -- Paris Pittman (Google) - 2 years -- Carolyn Van Slyck (Microsoft) - 2 year +- Jaice Singer Dumars (Google) +- Jennifer Rondeau (Stripe) +- Carolyn Van Slyck (Microsoft) + +### Term ends on August 7, 2021 +- Aeva van der Veen (Microsoft) +- Tasha Drew (VMWare) Please see the [bootstrapping document](./bootstrapping-process.md) for more information on how members are picked, their responsibilities, and how the committee will initially function. diff --git a/committee-product-security/README.md b/committee-product-security/README.md index c7610300..d4429cb7 100644 --- a/committee-product-security/README.md +++ b/committee-product-security/README.md @@ -17,6 +17,7 @@ The Kubernetes Product Security Committee is the body that is responsible for re * Joel Smith (**[@joelsmith](https://github.com/joelsmith)**), Red Hat * Jonathan Pulsifer (**[@jonpulsifer](https://github.com/jonpulsifer)**), Shopify * Jordan Liggitt (**[@liggitt](https://github.com/liggitt)**), Google +* Luke Hinds (**[@lukehinds](https://github.com/lukehinds)**), Red Hat * Brandon Philips (**[@philips](https://github.com/philips)**), Red Hat * Tim Allclair (**[@tallclair](https://github.com/tallclair)**), Google diff --git a/committee-steering/README.md b/committee-steering/README.md index b853cff3..47e90dbb 100644 --- a/committee-steering/README.md +++ b/committee-steering/README.md @@ -13,7 +13,7 @@ The Kubernetes Steering Committee is the governing body of the Kubernetes projec The [charter](https://git.k8s.io/steering/charter.md) defines the scope and governance of the Steering Committee. ## Meetings -* Public Steering Committee Meeting: [Wednesdays at 13:00 PT (Pacific Time)](https://bit.ly/k8s-steering-wd) (biweekly). [Convert to your timezone](http://www.thetimezoneconverter.com/?t=13:00&tz=PT%20%28Pacific%20Time%29). +* Public Steering Committee Meeting: [Mondays at 11:00 PT (Pacific Time)](https://bit.ly/k8s-steering-wd) (biweekly). [Convert to your timezone](http://www.thetimezoneconverter.com/?t=11:00&tz=PT%20%28Pacific%20Time%29). * [Meeting recordings](https://www.youtube.com/watch?v=YAzgJRQxsdc&list=PL69nYSiGNLP1yP1B_nd9-drjoxp0Q14qM). ## Members @@ -27,6 +27,7 @@ The [charter](https://git.k8s.io/steering/charter.md) defines the scope and gove * Timothy St. Clair (**[@timothysc](https://github.com/timothysc)**), VMware ## Contact +- Slack: [#steering-committee](https://kubernetes.slack.com/messages/steering-committee) - [Mailing list](https://groups.google.com/a/kubernetes.io/forum/#!forum/steering) - Private Mailing List: steering-private@kubernetes.io - [Open Community Issues/PRs](https://github.com/kubernetes/community/labels/committee%2Fsteering) diff --git a/communication/slack-config/channels.yaml b/communication/slack-config/channels.yaml index 414b243c..51a2c7ab 100644 --- a/communication/slack-config/channels.yaml +++ b/communication/slack-config/channels.yaml @@ -26,18 +26,6 @@ channels: - name: cka-exam-prep - name: ckad-exam-prep - name: client-go-docs - - name: provider-aws - id: C0LRMHZ1T - - name: provider-azure - id: C5HJXTT9Q - - name: provider-gcp - id: C6WB33KNJ - - name: provider-ibmcloud - id: C90BWDWCE - - name: provider-openstack - id: C0LSA3T7C - - name: provider-vsphere - id: C9PGCDKV5 - name: cluster-addons - name: cluster-api - name: cluster-api-aws @@ -188,6 +176,7 @@ channels: - name: meetup-boston - name: meetup-dfw - name: meetup-edinburgh + - name: meetup-egypt - name: meetup-guatemala - name: meetup-hannover - name: meetup-hongkong @@ -237,7 +226,6 @@ channels: - name: pr-reviews - name: prometheus - name: prometheus-operator - - name: provider-centurylink - name: prow - name: pt_br-users - name: rancher @@ -259,7 +247,6 @@ channels: - name: sig-auth - name: sig-autoscaling - name: sig-cli - - name: sig-cloud-provider - name: sig-clstr-life-leads - name: sig-cluster-lifecycle - name: sig-cluster-ops @@ -297,6 +284,7 @@ channels: - name: spark-operator - name: spinnaker - name: sre + - name: steering-committee - name: summit-staff - name: suse-caasp - name: talk-proposals diff --git a/communication/slack-config/restrictions.yaml b/communication/slack-config/restrictions.yaml index b5948281..ff62c99e 100644 --- a/communication/slack-config/restrictions.yaml +++ b/communication/slack-config/restrictions.yaml @@ -22,4 +22,10 @@ restrictions: - "^sig-storage$" - "^csi$" - "^csi-" + - path: "sig-cloud-provider/*.yaml" + channels: + - "^sig-cloud-provider$" + - "^cloud-provider-extraction$" + - "^provider-" + - "^apiserver-network-proxy$" - path: "**/*" # prevent any other file from containing anything diff --git a/communication/slack-config/sig-cloud-provider/OWNERS b/communication/slack-config/sig-cloud-provider/OWNERS new file mode 100644 index 00000000..5c714da0 --- /dev/null +++ b/communication/slack-config/sig-cloud-provider/OWNERS @@ -0,0 +1,8 @@ +# See the OWNERS docs at https://go.k8s.io/owners + +reviewers: + - sig-cloud-provider-leads +approvers: + - sig-cloud-provider-leads +labels: + - sig/cloud-provider diff --git a/communication/slack-config/sig-cloud-provider/config.yaml b/communication/slack-config/sig-cloud-provider/config.yaml new file mode 100644 index 00000000..e4881e6d --- /dev/null +++ b/communication/slack-config/sig-cloud-provider/config.yaml @@ -0,0 +1,19 @@ +channels: + - name: apiserver-network-proxy + - name: cloud-provider-extraction + - name: provider-aws + id: C0LRMHZ1T + - name: provider-azure + id: C5HJXTT9Q + - name: provider-centurylink + id: C0P8MQUM9 + - name: provider-gcp + id: C6WB33KNJ + - name: provider-ibmcloud + id: C90BWDWCE + - name: provider-openstack + id: C0LSA3T7C + - name: provider-vsphere + id: C9PGCDKV5 + - name: sig-cloud-provider + id: C718BPBQ8 diff --git a/communication/slack-config/sig-docs/docs-channels.yaml b/communication/slack-config/sig-docs/docs-channels.yaml index 2ba906a8..b7b81f51 100644 --- a/communication/slack-config/sig-docs/docs-channels.yaml +++ b/communication/slack-config/sig-docs/docs-channels.yaml @@ -1,4 +1,5 @@ channels: + - name: kubernetes-docs-ar - name: kubernetes-docs-de - name: kubernetes-docs-es - name: kubernetes-docs-fr diff --git a/contributors/design-proposals/storage/csi-migration.md b/contributors/design-proposals/storage/csi-migration.md index 01024503..be43da84 100644 --- a/contributors/design-proposals/storage/csi-migration.md +++ b/contributors/design-proposals/storage/csi-migration.md @@ -35,12 +35,51 @@ lower cost of development as we only have to maintain one version of each plugin, as well as ease the transition to CSI when we are able to deprecate the internal APIs. +## Roadmap + +The migration from in-tree plugins to CSI plugins will involve the following phases: + +Phase 1: Typically, a CSI plugin (that an in-tree plugin has been migrated to) +will be invoked for operations on persistent volumes backed by a specific in-tree +plugin under the following conditions: +1. An overall feature flag: CSIMigration is enabled for the Kubernetes Controller +Manager and Kubelet. +2. A feature flag for the specific in-tree plugin around migration (e.g. CSIMigrationGCE, +CSIMigrationAWS) is enabled for the Kubernetes Controller Manager and Kubelet. +In case the Kubelet on a specific node does not have the above feature flags enabled +(or running an old version that does not support the above feature flags), the in-tree +plugin code will be executed for operations like attachment/detachment +and mount/dismount of volumes. To support this, ProbeVolumePlugins function for +in-tree plugin packages will continue to be invoked (as is the case today). This +will result in all in-tree plugins added to the list of plugins whose methods +can be invoked by the Kubelet and Kubernetes cluster-wide volume +controllers when necessary. + +Phase 2: ProbeVolumePlugins function for specific migrated in-tree plugin packages +will no longer be invoked by the Kubernetes Controller Manager and Kubelet under +the following conditions: +1. An overall feature flag: CSIMigration is enabled for the Kubernetes Controller +Manager and Kubelets on all nodes. +2. A feature flag for the specific in-tree plugin around migration (e.g. CSIMigrationGCE, +CSIMigrationAWS) is enabled for the Kubernetes Controller Manager and Kubelets on +all nodes. +3. An overall feature flag: CSIMigrationInTreeOff is enabled for the Kubernetes +Controller Manager and Kubelet. +All nodes in a cluster must satisfy at least [1] and [2] above in the Kubelet +configuration for [3] to take effect and function correctly. This requires that +all nodes in the cluster must have migrated CSI plugins installed and configured. + +Phase 3: Files containing in-tree plugin code are no longer compiled as part of +Kubernetes components using golang build tag: nolegacyproviders in preparation +for the final Phase 4 below. This may only be in effect in test environments. + +Phase 4: In-tree code for specific plugins is removed from Kubernetes. ## Goals * Compile all requirements for a successful transition of the in-tree plugins to CSI - * As little code as possible remains in the Kubernetes Repo + * In-tree plugin code for migrated plugins can be completely removed from Kubernetes * In-tree plugin API is untouched, user Pods and PVs continue working after upgrades * Minimize user visible changes @@ -63,31 +102,36 @@ internal APIs. ## Implementation Schedule -Alpha [1.14] -* Off by default +Alpha [1.16] +* Feature flag for Phase 1, CSIMigration, disabled by default * Proof of concept migration of at least 2 storage plugins [AWS, GCE] * Framework for plugin migration built for Dynamic provisioning, pre-provisioned volumes, and in-tree volumes -Beta [Target 1.15] -* On by default -* Migrate all of the cloud provider plugins* +Beta [Target 1.17] +* Feature flags for Phase 1, CSIMigration, disabled by default +* Feature flags for Phase 2, CSIMigrationInTreeOff disabled by default +* Feature flag for migrated in-tree plugins disabled by default +* Translations of a subset of the cloud provider plugins to CSI in progress GA [TBD] -* Feature on by default, per-plugin toggle on for relevant cloud provider by - default +* Feature flags for Phase 1 and 2 enabled by default, per-plugin toggle on for + relevant cloud provider by default * CSI Drivers for migrated plugins available on related cloud provider cluster by default ## Milestones * Translation Library implemented in Kubernetes staging -* Migration Shim for Provision, Attach, Detach, Mount, Unmount (including Inline Volumes) -* Migration Shim for Resize, Block +* Translation of volumes in volume controllers to support Provision, Attach, + Detach, Mount, Unmount (including Inline Volumes) using migrated CSI plugins. +* Translation of volumes in volume controllers to support Resize, Block using + migrated CSI plugins. * CSI Driver lifecycle manager * GCE PD feature parity in CSI with in-tree implementation * AWS EBS feature parity in CSI with in-tree implementation * Cloud Driver feature parity in CSI with in-tree implementation +* Skip ProbeVolumePlugins of migrated in-tree plugin code (Phase 2). ## Dependency Graph @@ -95,27 +139,53 @@ GA [TBD] ## Feature Gating -We will have an alpha feature gate for the whole feature that can turn the CSI -migration on or off, when off all code paths should revert/stay with the in-tree -plugins. We will also have individual flags for each driver so that admins can -toggle them on or off. +We will have two feature gates for the overall feature: CSIMigration and CSIMigrationInTreeOff +corresponding to Phase 1 and 2 respectively. Additionally, plugin-specific feature flags +(e.g. CSIMigrationGCE, CSIMigrationEBS) will determine whether a migration phase +is enabled for a specific in-tree plugin. This allows administrators to enable a specific +phase of migration functionality on the cluster as a whole as well as the flexibility +to toggle migration functionality for each legacy in-tree plugin individually. + +With CSIMigration feature flag enabled on Kubernetes Controller Manager and Kubelet, +several volume actions associated with in-tree plugins (that have plugin specific +migration feature flags enabled) will be handled by CSI plugins that the in-tree +plugins have migrated to. If the Kubelet on a cluster node does not have CSIMigration +and plugin-specific migration feature flags enabled or running an old version of Kubelet +before the CSI migration feature flags were introduced, the in-tree plugin code +will continue to handle actions like attach/detach and mount/unmount of volumes on that node. + +During initialization, with CSIMigrationInTreeOff feature flag enabled, Kubernetes +Controller Manager and Kubelet will skip invocation of ProbeVolumePlugins for migrated +in-tree plugins (that have plugin-specific migration feature flags enabled). +As a result, all nodes in the cluster must have: [1] CSI plugins (that in-tree +plugins have been migrated to) configured and installed and [2] CSIMigration and +plugin specific feature flags enabled for the Kubelet. If these requirements are +not fulfilled on each node, operations involving volumes backed by in-tree plugins +will fail with errors. -The feature gate can exist at the interception points in the OperationGenerator -for Attach and Mount, as well as in the PV Controller for Provisioning. - -We will also have one feature flag for each driver’s migration so that each -driver migration can be turned on and off individually. The new feature gates for alpha are: ``` // Enables the in-tree storage to CSI Plugin migration feature. CSIMigration utilfeature.Feature = "CSIMigration" +// Disables the in-tree storage plugin code +CSIMigrationInTreeOff utilfeature.Feature = "CSIMigrationInTreeOff" + // Enables the GCE PD in-tree driver to GCE CSI Driver migration feature. CSIMigrationGCE utilfeature.Feature = "CSIMigrationGCE" // Enables the AWS in-tree driver to AWS CSI Driver migration feature. CSIMigrationAWS utilfeature.Feature = "CSIMigrationAWS" + +// Enables the Azure Disk in-tree driver to Azure Disk Driver migration feature. +CSIMigrationAzureDisk featuregate.Feature = "CSIMigrationAzureDisk" + +// Enables the Azure File in-tree driver to Azure File Driver migration feature. +CSIMigrationAzureFile featuregate.Feature = "CSIMigrationAzureFile" + +// Enables the OpenStack Cinder in-tree driver to OpenStack Cinder CSI Driver migration feature. +CSIMigrationOpenStack featuregate.Feature = "CSIMigrationOpenStack" ``` ## Translation Layer @@ -661,6 +731,116 @@ with minimal disruption to users would be: And at this point users doing their own deployment and not installing the GCE PD CSI driver encounter an error. +## Disabling in-tree plugin code + +Before we can stop compiling and prepare to remove the code associated with migrated +in-tree plugins, we need to make sure all persistent volume operations involving +in-tree plugins continue to function in a backward compatible way when the +in-tree plugin code paths are disabled. When CSIMigrationInTreeOff feature flag +is enabled, we will not invoke ProbeVolumePlugins() for the in-tree plugins (that +have plugin-specific migration feature flag enabled) in appendAttachableLegacyProviderVolumes() +and appendLegacyProviderVolumes() in the Kubernetes Controller Manager and Kubelet. +All functions in Kubernetes code base that depend on probed in-tree plugins need to be +audited and refactored to handle errors returned (due to absence of a probed plugin). + +### Enhancements in Probing/Registration of in-tree plugins + +Functions appendLegacyProviderVolumes (in the Kubernetes Controller Manager and Kubelet) +and appendAttachableLegacyProviderVolumes (in the Kubernetes Controller Manager) +will be enhanced to [1] check plugin specific migration feature flags as well as +[2] the overall CSIMigrationInTreeOff feature flag to determine whether ProbeVolumePlugins +function of a legacy in-tree plugin will get invoked. + +Once CSIMigrationInTreeOff feature flag and the plugin specific migration +flags get enabled by default, the build tag `nolegacyproviders` can be enabled +for testing purposes. + +### Detection of migration status for a plugin + +Code paths that need to check migration status of a plugin, for example, +in provisionClaimOperationExternal, findDeletablePlugin, etc. will need to +depend on an instance of the CSIMigratedPluginManager that provides the following +utilities: +``` +func (pm CSIMigratedPluginManager) IsCSIMigrationEnabledForPluginByName(pluginName string) bool +func (pm CSIMigratedPluginManager) IsPluginMigratableToCSIBySpec(spec *Spec) (bool, error) +``` +The CSIMigratedPluginManager will be introduced in pkg/volume/csi_migration.go + +Note that a per-plugin member function of the form IsMigratedToCSI cannot be used +since [1] a plugin object for in-tree plugins will typically be nil and [2] the +code implementing IsMigratedToCSI will be removed as part of disabling plugin code. + +### Handling of errors returned by FindPluginBySpec/FindPluginByName for legacy plugins + +Once an in-tree plugin is no longer probed (through ProbeVolumePlugins), all the VolumePluginMgr +functions of the form Find*PluginBySpec/Find*PluginByName will return an error. +For example, invocation of: + +1. FindProvisionablePluginByName in the pv controller will return error for a migrated +plugin that is no longer probed in ProbeControllerVolumePlugins. +2. FindExpandablePluginBySpec in the expand controller will return error for a migrated +plugin that is no longer probed in ProbeExpandableVolumePlugins. +3. FindAttachablePluginBySpec in the attach/detach controller will return error for +a migrated plugin that is no longer probed in ProbeAttachableVolumePlugins. + +Code invoking the above functions will need to check for migration status of a plugin +based on Volume spec or Plugin name before invoking the above functions so that +an error is never encountered due to missing plugins. + +### Enhancements in Controllers handling Persistent Volumes + +#### AttachDetach Controller +The AttachDetach Controller will translate volume specs for an in-tree plugin to +a migrated CSI plugin at the points where Desired State of World cache gets +populated (through CreateVolumeSpec) when the following conditions are true: +[1] CSIMigration feature flag is enabled for Kubernetes Controller Manager and +the Kubelet where the pod with references to volumes got scheduled. +[2] A plugin-specific migration feature flag is enabled for Kubernetes Controller +Manager and the Kubelet where the pod with references to volumes got scheduled. +Translation during population of Desired State of World avoids down-stream functions +at the operation generator/executor stages from having to handle translation of +volume specs for migrated PVs whose in-tree plugins are not probed. + +Translation of volume specs for an in-tree plugin to a migrated CSI plugin as +described above will be skipped during Desired State of World population if: +[1] CSIMigration or plugin specific migration feature flags are disabled in Kubernetes +Controller Manager. +[2] CSIMigration or plugin specific migration flags are disabled for Kubelet +in a specific node where a pod with volumes got scheduled and CSIMigrationInTreeOff +is disabled in Kubernetes Controller Manager. + +Determination of whether migration feature flags are enabled in the Kubelet is +described earlier in the section: Kubelet CSI/In-tree Sync. + +#### Expansion Controller +The Expansion Controller will set the Storage Resizer annotation (volume.kubernetes.io/storage-resizer) +on a PVC (referring to a storage class associated with a legacy in-tree plugin) +with the name of a migrated CSI plugin when the following conditions are true: +[1] CSIMigration feature flag is enabled in Kubernetes Controller Manager. +[2] A plugin-specific migration feature flag is enabled in Kubernetes Controller +Manager. +This allows a migrated CSI plugin to process the resizing of the volume associated +with a PVC that refers to a migrated in-tree plugin. + +When the above conditions are not met, the Expansion Controller will use FindExpandablePluginBySpec +to determine the in-tree plugin that can be used for expanding a volume (as is +the case today). + +#### Persistent Volume Controller +The Persistent Volume Controller will set the Storage Provisioner annotation (volume.beta.kubernetes.io/storage-provisioner) +on a PVC (referring to a storage class associated with a legacy in-tree plugin) +with the name of a migrated CSI plugin when the following conditions are true: +[1] CSIMigration feature flag is enabled in Kubernetes Controller Manager. +[2] A plugin-specific migration feature flag is enabled in Kubernetes Controller +Manager. +This allows a migrated CSI plugin to process the provisioning as well as deleting +of a volume for a PVC that refers to a migrated in-tree plugin. + +When the above conditions are not met, the PV Controller will use FindProvisionablePluginByName +to determine the in-tree plugin that can be used for provisioning a volume (as is +the case today). + ## Testing ### Migration Shim Testing diff --git a/contributors/devel/sig-release/cherry-picks.md b/contributors/devel/sig-release/cherry-picks.md index aad88ac6..afa4c995 100644 --- a/contributors/devel/sig-release/cherry-picks.md +++ b/contributors/devel/sig-release/cherry-picks.md @@ -5,6 +5,15 @@ the kubernetes/kubernetes repository. A common use case for this task is backporting PRs from master to release branches. +- [Prerequisites](#prerequisites) +- [What Kind of PRs are Good for Cherry-picks](#what-kind-of-prs-are-good-for-cherry-picks) +- [Initiate a Cherry-pick](#initiate-a-cherry-pick) +- [Cherry-pick Review](#cherry-pick-review) +- [Searching for Cherry-picks](#searching-for-cherry-picks) +- [Troubleshooting Cherry-picks](#troubleshooting-cherry-picks) + +--- + ## Prerequisites * [Contributor License Agreement](http://git.k8s.io/community/CLA.md) is considered implicit for all code within cherry-pick pull requests, @@ -19,6 +28,47 @@ branches. github.com/github/hub` assuming you have a standard golang development environment. + +## What Kind of PRs are Good for Cherry-Picks + +Compared to the normal master branch's merge volume across time, +the release branches see one or two orders of magnitude less PRs. +This is because there is an order or two of magnitude higher scrutiny. +Again the emphasis is on critical bug fixes, eg: + * Loss of data + * Memory corruption + * Panic, crash, hang + * Security + +If you are proposing a cherry-pick and it is not a clear and obvious +critical bug fix, please reconsider. If upon reflection you wish to +continue, bolster your case by supplementing your PR with, eg: + + * A GitHub issue detailing the problem + + * Scope of the change + + * Risks of adding a change + + * Risks of associated regression + + * Testing performed, test cases added + + * Key stakeholder SIG reviewers/approvers attesting to their confidence in the + change being a required backport + + * If the change is in cloud-provider-specific platform code (which is in the + process of being moved out of core Kubernetes), describe the customer impact, + how the issue escaped initial testing, remediation taken to prevent similar + future escapes, and why the change cannot be carried in your downstream + fork of the Kubernetes project branches. It is critical that our full + community is actively engaged on enhancements in the project. If a + released feature was not enabled on a particular provider's platform, this + is a community miss that needs to be resolved in the master branch for + subsequent releases. Such enabling will not be backported to the patch + release branches. + + ## Initiate a Cherry-pick * Run the [cherry-pick script](https://git.k8s.io/kubernetes/hack/cherry_pick_pull.sh). @@ -91,43 +141,6 @@ pull requests on the master branch in that they: * For prior branches, check the [patch release schedule](https://git.k8s.io/sig-release/releases/patch-releases.md), which includes contact information for the patch release team. -Compared to the normal master branch's merge volume across time, -the release branches see one or two orders of magnitude less PRs. -This is because there is an order or two of magnitude higher scrutiny. -Again the emphasis is on critical bug fixes, eg: - * Loss of data - * Memory corruption - * Panic, crash, hang - * Security - -If you are proposing a cherry-pick and it is not a clear and obvious -critical bug fix, please reconsider. If upon reflection you wish to -continue, bolster your case by supplementing your PR with, eg: - - * A GitHub issue detailing the problem - - * Scope of the change - - * Risks of adding a change - - * Risks of associated regression - - * Testing performed, test cases added - - * Key stakeholder SIG reviewers/approvers attesting to their confidence in the - change being a required backport - - * If the change is in cloud-provider-specific platform code (which is in the - process of being moved out of core Kubernetes), describe the customer impact, - how the issue escaped initial testing, remediation taken to prevent similar - future escapes, and why the change cannot be carried in your downstream - fork of the Kubernetes project branches. It is critical that our full - community is actively engaged on enhancements in the project. If a - released feature was not enabled on a particular provider's platform, this - is a community miss that needs to be resolved in the master branch for - subsequent releases. Such enabling will not be backported to the patch - release branches. - ## Searching for Cherry-picks - [A sample search on kubernetes/kubernetes pull requests that are labeled as `cherry-pick-approved`](https://github.com/kubernetes/kubernetes/pulls?q=is%3Aopen+is%3Apr+label%3Acherry-pick-approved) diff --git a/contributors/devel/sig-testing/testing.md b/contributors/devel/sig-testing/testing.md index 20562495..99f7ba89 100644 --- a/contributors/devel/sig-testing/testing.md +++ b/contributors/devel/sig-testing/testing.md @@ -270,3 +270,19 @@ It is useful as a way to: - collection of jobs - each dashboard is represented as a button - some dashboards collect jobs/tests in the domain of a specific SIG (named after and owned by those SIGs), and dashboards to monitor project wide health (owned by SIG-release) + +## PR Process + +All new PRs for tests should attempt to follow these steps in order to help +enable a smooth review process: + +1. The problem statement should clearly describe the intended purpose of the +test and why it is needed. + +2. Get some agreement on how to design your test from the relevant SIG. + +3. Create the PR. + +4. Raise awareness of your PR to respective communities (eg. via mailing lists, +Slack channels, Github mentions). + diff --git a/contributors/guide/README.md b/contributors/guide/README.md index d6040224..e95d3704 100644 --- a/contributors/guide/README.md +++ b/contributors/guide/README.md @@ -4,7 +4,6 @@ weight: 1 slug: "guide" --- - <!-- Contributing to this document? Please use semantic line feeds for readability: http://rhodesmill.org/brandon/2012/one-sentence-per-line/ @@ -17,35 +16,38 @@ Feel free to browse the [open issues](https://github.com/kubernetes/community/is Welcome to Kubernetes! -- [Before you get started](#before-you-get-started) - - [Sign the CLA](#sign-the-cla) - - [Code of Conduct](#code-of-conduct) - - [Setting up your development - environment](#setting-up-your-development-environment) - - [Community Expectations and Roles](#community-expectations-and-roles) - - [Thanks](#thanks) -- [Your First Contribution](#your-first-contribution) - - [Find something to work on](#find-something-to-work-on) - - [Find a good first topic](#find-a-good-first-topic) - - [Learn about SIGs](#learn-about-sigs) - - [SIG-specific contributing guidelines](#sig-specific-contributing-guidelines) - - [File an Issue](#file-an-issue) -- [Contributing](#contributing) - - [Communication](#communication) - - [GitHub workflow](#github-workflow) - - [Open a Pull Request](#open-a-pull-request) - - [Code Review](#code-review) - - [Testing](#testing) - - [Security](#security) - - [Documentation](#documentation) - - [Issues Management or Triage](#issues-management-or-triage) -- [Kubernetes Contributor Playground](#kubernetes-contributor-playground) - - [Youtube playlist](#youtube-playlist) -- [Community](#community) - - [Communication](#communication-1) - - [Events](#events) - - [Meetups](#meetups) - - [Mentorship](#mentorship) +- [Welcome](#welcome) +- [Before you get started](#before-you-get-started) + - [Sign the CLA](#sign-the-cla) + - [Code of Conduct](#code-of-conduct) + - [Setting up your development environment](#setting-up-your-development-environment) + - [Community Expectations and Roles](#community-expectations-and-roles) +- [Your First Contribution](#your-first-contribution) + - [Find something to work on](#find-something-to-work-on) + - [Find a good first topic](#find-a-good-first-topic) + - [Issue Assignment in Github](#issue-assignment-in-github) + - [Learn about SIGs](#learn-about-sigs) + - [SIG structure](#sig-structure) + - [Find a SIG that is related to your contribution](#find-a-sig-that-is-related-to-your-contribution) + - [SIG-specific contributing guidelines](#sig-specific-contributing-guidelines) + - [File an Issue](#file-an-issue) +- [Contributing](#contributing) + - [Communication](#communication) + - [GitHub workflow](#github-workflow) + - [Open a Pull Request](#open-a-pull-request) + - [Code Review](#code-review) + - [Testing](#testing) + - [Security](#security) + - [Documentation](#documentation) + - [Issues Management or Triage](#issues-management-or-triage) +- [Kubernetes Contributor Playground](#kubernetes-contributor-playground) + - [Youtube playlist](#youtube-playlist) +- [Community](#community) + - [Communication](#communication-1) + - [Events](#events) + - [Meetups](#meetups) + - [Mentorship](#mentorship) +- [Advanced Topics](#advanced-topics) # Before you get started @@ -146,8 +148,8 @@ If you are not sure about the correct SIG for an issue, you can try SIG-contribu ### SIG-specific contributing guidelines Some SIGs have their own `CONTRIBUTING.md` files, which may contain extra information or guidelines in addition to these general ones. These are located in the SIG-specific community directories: + - [`/sig-apps/CONTRIBUTING.md`](/sig-apps/CONTRIBUTING.md) -- [`/sig-aws/CONTRIBUTING.md`](/sig-aws/CONTRIBUTING.md) - [`/sig-cli/CONTRIBUTING.md`](/sig-cli/CONTRIBUTING.md) - [`/sig-multicluster/CONTRIBUTING.md`](/sig-multicluster/CONTRIBUTING.md) - [`/sig-storage/CONTRIBUTING.md`](/sig-storage/CONTRIBUTING.md) diff --git a/contributors/guide/bug-bounty.md b/contributors/guide/bug-bounty.md index 32b72819..60f48b43 100644 --- a/contributors/guide/bug-bounty.md +++ b/contributors/guide/bug-bounty.md @@ -1,7 +1,7 @@ --- title: "Bug Bounty Programs" weight: 1 -slug: "bounties" +slug: "bug-bounty" --- This program is a **work in progress**. This tracks the currently proposed program, but the bug diff --git a/contributors/guide/contributor-cheatsheet/README-id.md b/contributors/guide/contributor-cheatsheet/README-id.md index 0f7f3481..2dcac41a 100644 --- a/contributors/guide/contributor-cheatsheet/README-id.md +++ b/contributors/guide/contributor-cheatsheet/README-id.md @@ -33,18 +33,17 @@ di GitHub menjadi lebih baik. - [Mekanisme _Branch_](#mekanisme-branch) - [Menambahkan _Upstream_](#menambahkan-upstream) - [Menjaga agar _Fork_ Kamu tetap Sinkron](#menjaga-agar-fork-kamu-tetap-sinkron) - - [Melakukan _Commit_ _Squashing_](#melakukan-commit-squashing) - + - [Melakukan _Commit Squashing_](#melakukan-commit-squashing) --- -## _Resources_ +## Sumber Penting ### Mulai Berkontribusi - [Panduan Kontributor] - Panduan bagaimana cara berkontribusi dalam proyek Kubernetes. - [Panduan Pengembang] - Panduan untuk berkontribusi dalam pengembangan kode pada proyek Kubernetes. -- [_Security_ dan _Disclosure_ Informasi] - Panduan pelaporan celah keamanan +- [Informasi _Security_ dan _Disclosure_] - Panduan pelaporan celah keamanan dan proses rilis keamanan. ### _SIG_ dan Grup Lainnya @@ -69,13 +68,13 @@ di GitHub menjadi lebih baik. - [Tide] - _Plugin_ Prow yang melakukan manajemen _merge_ dan _test_. [Dasbor Tide] - [Perintah Bot] - Perintah yang dapat kamu gunakan untuk berinteraksi dengan Bot Kubernetes (contoh: `/cc`, `/lgtm`, dan `/retest`) -- [Label GitHub] - _List_ _label_ yang digunakan pada proyek Kubernetes +- [Label GitHub] - _List label_ yang digunakan pada proyek Kubernetes - [Pencarian Kode Kubernetes], di-_maintain_ oleh [@dims] ### _Testing_ - [Prow] - Mekanisme CI/CD Kubernetes. -- [Test Grid] - Melihat data _historical_ _testing_ beserta informasi terkait. +- [Test Grid] - Melihat data _historical testing_ beserta informasi terkait. - [Dasbor Triase] - Melakukan agregasi _failure_ untuk mekanisme _troubleshoot_ yang lebih baik. - [Velodrome] - Dasbor untuk melacak _job_ dan _testing_ kesehatan. @@ -84,10 +83,10 @@ di GitHub menjadi lebih baik. - community@kubernetes.io - Mengirim surat pada seseorang yang berada dalam tim komunitas (Kontributor SIG _Experience_) mengenai isu komunitas. -- conduct@kubernetes.io - Mengirim surat pada komite _Code of Conduct_, _mailing_ _list_ _private_. +- conduct@kubernetes.io - Mengirim surat pada komite _Code of Conduct_, _mailing list private_. - github@kubernetes.io - Mengirim Surat pada Tim Administrasi GitHub secara pribadi, untuk item sensitif. -- steering@kubernetes.io - Mengirim surat pada _steering_ _committee_. Alamat publik dengan _archieve_. -- steering-private@kubernetes.io - Mengirim surat pada _steering_ _committee_ secara _private_, untuk +- steering@kubernetes.io - Mengirim surat pada _steering committee_. Alamat publik dengan _archieve_. +- steering-private@kubernetes.io - Mengirim surat pada _steering committee_ secara _private_, untuk informasi yang sensitif. - social@cncf.io - Mengirim surat pada tim CNCF; blog, akun twitter, and properti sosial lainnya. @@ -132,9 +131,7 @@ tersebut tidak memenuhi standar untuk di-_merge_. ### Menandatangani CLA -Sebelum kamu mengumpulkan kontribusi kamu, kamu harus terlebih dahulu [menyetujui _Contributor License -Agreement(CLA)_][cla]. Proyek Kubernetes _hanya_ menerima kontribusi yang kamu kerjakan apabila -kamu sudah menyetujui CLA. +Sebelum kamu mengumpulkan kontribusi kamu, kamu harus terlebih dahulu [menyetujui _Contributor License Agreement(CLA)_][cla]. Proyek Kubernetes _hanya_ menerima kontribusi yang kamu kerjakan apabila kamu sudah menyetujui CLA. Apabila kamu kesulitan ketika menyetujui CLA, ikuti [petunjuk _troubleshooting_ CLA]. @@ -162,7 +159,7 @@ atau ikuti [forum Kubernetes]. ([Kubernetes CI bot][prow]) akan membalas isu yang kamu buat dengan respons `needed labels`. - Selektiflah ketika meng-_assign_ suatu isu menggunakan [`/assign @<username>`][assign] atau - [`/cc @<username>`][cc]. Isu yang kamu buat dakan ditriase secara lebih efektif + [`/cc @<username>`][cc]. Isu yang kamu buat akan ditriase secara lebih efektif apabila kamu menambahkan label yang tepat. @@ -206,13 +203,13 @@ dokumentasi, atau segala bentuk hal yang disimpan dalam repositori git. - Berikan komentar pada PR yang kamu buat, apabila kamu merasa ada hal yang membutuhkan penjelasan lebih lanjut. - Selektiflah ketika meng-_assign_ suatu isu menggunakan [`/assign @<username>`][assign]. - Meng-_assign_ _reviewer_ secara berlebihan tidak mempercepat proses _review_ yang dilakukan + Meng-_assign reviewer_ secara berlebihan tidak mempercepat proses _review_ yang dilakukan untuk PR kamu. - Jika PR kamu masih dalam tahap _"Work in progress"_ berikan prefiks `[WIP]` atau gunakan perintah [`/hold`][hold]. Hal ini mencegah agar PR tidak di-_merge_ hingga _WIP_ dihilangkan. - Jika PR kamu tidak di-_review_, jangan tutup PR tersebut dan membukan PR lain - dengan perubahan yang sama. _Ping_ _reviewer_ PR kamu dengan komentar `@<github username>`. + dengan perubahan yang sama. _Ping reviewer_ PR kamu dengan komentar `@<github username>`. #### Contoh Deskripsi PR @@ -241,7 +238,7 @@ Apa saja yang dimasukkan dalam deskripsi: yang terkait dengan petunjuk pengembang. - **Baris 8** - Perintah [`/assign`][assign] meng-_assign_ seorang _approver_ untuk PR. Seorang _approver_ akan disarankan oleh [k8s-ci-robot][prow] dan dipilih dari _list_ - _owner_ pada _file_ [_owner_]. Merekalah yang akan menambahkan _label_ + _owner_ pada _file_ [OWNERS]. Merekalah yang akan menambahkan _label_ [`/approve`][approve] pada PR yang sudah di-_review_. @@ -251,7 +248,7 @@ Setelah PR kamu diajukan, serangkaian _testing_ akan dijalankan oleh platform CI Jika terdapat salah satu _test_ yang gagal, maka [k8s-ci-robot][prow] akan memberikan balasan pada PR kamu beserta tautan yang memberikan _log_ dari _testing_ yang gagal dijalankan. -Apabila kamu mem-_push_ _commit_ baru, _test_ pada PR kamu akan secara otomatis di-_trigger_. +Apabila kamu mem-_push commit_ baru, _test_ pada PR kamu akan secara otomatis di-_trigger_. Terkadang, bisa jadi terdapat masalah pada platform CI Kubernetes. Hal ini dapat terjadi karena berbagai alasan bahkan ketika _test_ yang kamu jalankan di @@ -298,7 +295,7 @@ pembelajaran yang baik. Sebagai alternatif lain, juga terdapat tutorial Stanford Proyek Kubernetes menggunakan mekanisme _"Fork and Pull"_ yang merupakan standar GitHub. Dalam terminologi git, _fork_ yang kamu buat disebut sebagai _"`origin`"_ dan git proyek yang sebenarnya disebut sebagai _"`upstream`"_. Untuk menjaga _branch_ -(`origin`) tetap _up to date_ dengan proyek (`upstream`), _branch_ tersebut harus dikonfigurasi +(`origin`) tetap _up to date_ dengan proyek (`upstream`), _branch_ tersebut harus dikonfigurasikan pada _copy_ lokal. @@ -332,19 +329,19 @@ git checkout master git rebase upstream/master ``` -Kamu setidaknya harus melakukan hal ini sewbelum membuat sebuah _branch_ baru +Kamu setidaknya harus melakukan hal ini sebelum membuat sebuah _branch_ baru yang akan kamu gunakan untuk mengerjakan fitur baru atau melakukan _fix_. ``` git checkout -b myfeature ``` -#### Melakukan _Commit_ _Squashing_ +#### Melakukan _Commit Squashing_ -Tujuan utama dari [_commit_ _squashing_] adalah untuk membuat +Tujuan utama dari [_commit squashing_] adalah untuk membuat histori atau _log_ git yang mudah dibaca dan bersih. Biasanya hal ini -dilakukan pada fase akhir dari revisi yang akmu buat. Jika kamu masih belum yakin apakah kamu -harus melakukan _commit_ _squashing_ atau tidak, biarkan revisi kamu apa adanya sampai +dilakukan pada fase akhir dari revisi yang kamu buat. Jika kamu masih belum yakin apakah kamu +harus melakukan _commit squashing_ atau tidak, biarkan revisi kamu apa adanya sampai ada saran khusus dari kontributor yang di-_assign_ untuk me-_review_ atau meng-_approve_ revisi kamu apakah _commit_ _squashing_ perlu dilakukan atau tidak. @@ -386,12 +383,12 @@ _squashing_ perlu dilakukan atau tidak. [label]: https://git.k8s.io/test-infra/label_sync/labels.md [_trivial fix_]: /contributors/guide/pull-requests.md#10-trivial-edits [GitHub workflow]: /contributors/guide/github-workflow.md#3-branch -[_commit_ _squashing_]: /contributors/guide/pull-requests.md#6-squashing-and-commit-titles +[_commit squashing_]: /contributors/guide/pull-requests.md#6-squashing-and-commit-titles [_owner_]: /contributors/guide/owners.md [testing locally]: /contributors/guide/README.md#testing [Tutorial git Atlassian]: https://www.atlassian.com/git/tutorials [git magic]: http://www-cs-students.stanford.edu/~blynn/gitmagic/ [Panduan _Testing_]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-testing/testing.md -[_Security_ dan _Disclosure_ Informasi]: https://kubernetes.io/docs/reference/issues-security/security/ +[Informasi _Security_ dan _Disclosure_]: https://kubernetes.io/docs/reference/issues-security/security/ [approve]: https://prow.k8s.io/command-help#approve [Rilis Patch Kubernetes]: https://github.com/kubernetes/sig-release/blob/master/releases/patch-releases.md
\ No newline at end of file diff --git a/contributors/guide/contributor-cheatsheet/README.md b/contributors/guide/contributor-cheatsheet/README.md index d5e2f460..b44e7a9b 100644 --- a/contributors/guide/contributor-cheatsheet/README.md +++ b/contributors/guide/contributor-cheatsheet/README.md @@ -218,6 +218,8 @@ other forms of work that would be stored within a git repository. till the `[WIP]` or hold is lifted. - If you have not had your PR reviewed, do not close and open a new PR with the same changes. Ping your reviewers in a comment with `@<github username>`. +- If your PR isn't getting enough attention, post a link to the PR in the + `#pr-reviews` channel on Slack to find additional reviewers. #### Example PR Description diff --git a/contributors/guide/github-workflow.md b/contributors/guide/github-workflow.md index 8174aaf8..1963b206 100644 --- a/contributors/guide/github-workflow.md +++ b/contributors/guide/github-workflow.md @@ -1,7 +1,7 @@ --- title: "GitHub Workflow" weight: 1 -slug: "github" +slug: "github-workflow" ---  @@ -173,38 +173,35 @@ _If you have upstream write access_, please refrain from using the `Revert` button in the GitHub UI for creating the PR, because GitHub will create the PR branch inside the main repository rather than inside your fork. -1. Create a branch and sync it with upstream. +- Create a branch and sync it with upstream. -```sh -# create a branch -git checkout -b myrevert - -# sync the branch with upstream -git fetch upstream -git rebase upstream/master -``` + ```sh + # create a branch + git checkout -b myrevert -2. If the commit you wish to revert is a: + # sync the branch with upstream + git fetch upstream + git rebase upstream/master + ``` +- If the commit you wish to revert is a:<br> + - **merge commit:** -- merge commit: + ```sh + # SHA is the hash of the merge commit you wish to revert + git revert -m 1 SHA + ``` -```sh -# SHA is the hash of the merge commit you wish to revert -git revert -m 1 SHA -``` - -- single commit: + - **single commit:** -```sh -# SHA is the hash of the single commit you wish to revert -git revert SHA -``` + ```sh + # SHA is the hash of the single commit you wish to revert + git revert SHA + ``` -3. This will create a new commit reverting the changes. -Push this new commit to your remote. +- This will create a new commit reverting the changes. Push this new commit to your remote. ```sh git push ${your_remote_name} myrevert ``` -4. [Create a Pull Request](#7-create-a-pull-request) using this branch. +- [Create a Pull Request](#7-create-a-pull-request) using this branch.
\ No newline at end of file diff --git a/contributors/guide/non-code-contributions.md b/contributors/guide/non-code-contributions.md index 43fd10e2..4ec2838c 100644 --- a/contributors/guide/non-code-contributions.md +++ b/contributors/guide/non-code-contributions.md @@ -1,7 +1,7 @@ --- title: "Non-code Contributions" weight: 1 -slug: "non-code" +slug: "non-code-contributions" --- *This section is new and in progress. Expect this document to change often.* diff --git a/contributors/guide/pull-requests.md b/contributors/guide/pull-requests.md index d2e252c8..f676c1e3 100644 --- a/contributors/guide/pull-requests.md +++ b/contributors/guide/pull-requests.md @@ -7,27 +7,28 @@ slug: "pull-requests" This doc explains the process and best practices for submitting a pull request to the [Kubernetes project](https://github.com/kubernetes/kubernetes) and its associated sub-repositories. It should serve as a reference for all contributors, and be useful especially to new and infrequent submitters. - [Before You Submit a Pull Request](#before-you-submit-a-pull-request) - * [Run Local Verifications](#run-local-verifications) + - [Run Local Verifications](#run-local-verifications) - [The Pull Request Submit Process](#the-pull-request-submit-process) - * [The Testing and Merge Workflow](#the-testing-and-merge-workflow) - * [Marking Unfinished Pull Requests](#marking-unfinished-pull-requests) - * [Comment Commands Reference](#comment-commands-reference) - * [Automation](#automation) - * [How the e2e Tests Work](#how-the-e2e-tests-work) -- [Why was my Pull Request closed?](#why-was-my-pull-request-closed) -- [Why is my Pull Request not getting reviewed?](#why-is-my-pull-request-not-getting-reviewed) + - [The Testing and Merge Workflow](#the-testing-and-merge-workflow) + - [Marking Unfinished Pull Requests](#marking-unfinished-pull-requests) + - [Pull Requests and the Release Cycle](#pull-requests-and-the-release-cycle) + - [Comment Commands Reference](#comment-commands-reference) + - [Automation](#automation) + - [How the e2e Tests Work](#how-the-e2e-tests-work) +- [Why was my pull request closed?](#why-was-my-pull-request-closed) +- [Why is my pull request not getting reviewed?](#why-is-my-pull-request-not-getting-reviewed) - [Best Practices for Faster Reviews](#best-practices-for-faster-reviews) - * [0. Familiarize yourself with project conventions](#0-familiarize-yourself-with-project-conventions) - * [1. Is the feature wanted? File a Kubernetes Enhancement Proposal](#1-is-the-feature-wanted-file-a-kubernetes-enhancement-proposal) - * [2. Smaller Is Better: Small Commits, Small Pull Requests](#2-smaller-is-better-small-commits-small-pull-requests) - * [3. Open a Different Pull Request for Fixes and Generic Features](#3-open-a-different-pull-request-for-fixes-and-generic-features) - * [4. Comments Matter](#4-comments-matter) - * [5. Test](#5-test) - * [6. Squashing and Commit Titles](#6-squashing-and-commit-titles) - * [7. KISS, YAGNI, MVP, etc.](#7-kiss-yagni-mvp-etc) - * [8. It's OK to Push Back](#8-its-ok-to-push-back) - * [9. Common Sense and Courtesy](#9-common-sense-and-courtesy) - * [10. Trivial Edits](#10-trivial-edits) + - [0. Familiarize yourself with project conventions](#0-familiarize-yourself-with-project-conventions) + - [1. Is the feature wanted? File a Kubernetes Enhancement Proposal](#1-is-the-feature-wanted-file-a-kubernetes-enhancement-proposal) + - [2. Smaller Is Better: Small Commits, Small Pull Requests](#2-smaller-is-better-small-commits-small-pull-requests) + - [3. Open a Different Pull Request for Fixes and Generic Features](#3-open-a-different-pull-request-for-fixes-and-generic-features) + - [4. Comments Matter](#4-comments-matter) + - [5. Test](#5-test) + - [6. Squashing and Commit Titles](#6-squashing-and-commit-titles) + - [7. KISS, YAGNI, MVP, etc.](#7-kiss-yagni-mvp-etc) + - [8. It's OK to Push Back](#8-its-ok-to-push-back) + - [9. Common Sense and Courtesy](#9-common-sense-and-courtesy) + - [10. Trivial Edits](#10-trivial-edits) # Before You Submit a Pull Request @@ -62,7 +63,7 @@ The Kubernetes merge workflow uses labels, applied by [commands](https://prow.k8 _Example:_ To apply a SIG label, you would type in a comment: ``` -/sig aws +/sig apps ``` *NOTE: For pull requests that are in progress but not ready for review, @@ -171,6 +172,8 @@ things you can do to move the process along: * If you have fixed all the issues from a review, and you haven't heard back, you should ping the assignee on the comment stream with a "please take another look" (`PTAL`) or similar comment indicating that you are ready for another review. + * If you still don't hear back, post a link to the pull request in the `#pr-reviews` channel on Slack to find additional reviewers. + Read on to learn more about how to get faster reviews by following best practices. # Best Practices for Faster Reviews @@ -228,7 +231,7 @@ We want every pull request to be useful on its own, so use your best judgment on As a rule of thumb, if your pull request is directly related to Feature-X and nothing else, it should probably be part of the Feature-X pull request. If you can explain why you are doing seemingly no-op work ("it makes the Feature-X change easier, I promise") we'll probably be OK with it. If you can imagine someone finding value independently of Feature-X, try it as a pull request. (Do not link pull requests by `#` in a commit description, because GitHub creates lots of spam. Instead, reference other pull requests via the pull request your commit is in.) -## 3. Open a Different pull request for Fixes and Generic Features +## 3. Open a Different Pull Request for Fixes and Generic Features **Put changes that are unrelated to your feature into a different pull request.** diff --git a/contributors/guide/release-notes.md b/contributors/guide/release-notes.md index 0b3223c4..1c217cd6 100644 --- a/contributors/guide/release-notes.md +++ b/contributors/guide/release-notes.md @@ -1,7 +1,7 @@ --- title: "Adding Release Notes" weight: 1 -slug: "adding-release-notes" +slug: "release-notes" --- On the kubernetes/kubernetes repository, release notes are required for any pull request with user-visible changes, such as bug-fixes, feature additions, and output format changes. diff --git a/contributors/guide/style-guide.md b/contributors/guide/style-guide.md index 38acb36c..3b81ef5b 100644 --- a/contributors/guide/style-guide.md +++ b/contributors/guide/style-guide.md @@ -1,7 +1,7 @@ --- title: "Documentation Style Guide" weight: 1 -slug: "documentation-style-guide" +slug: "style-guide" --- This style guide is for content in the Kubernetes github [community repository]. @@ -10,21 +10,23 @@ It is an extension of the [Kubernetes documentation style-guide]. These are **guidelines**, not rules. Use your best judgement. - [Cheatsheet](#cheatsheet) -- [Content design, formatting, and language](#content-formatting-and-language) - - [Contact information](#contact-information) - - [Dates and times](#dates-and-times) - - [Diagrams, images and other assets](#diagrams-images-and-other-assets) + - [Cheatsheet: Content Design, Formatting, and Language](#cheatsheet-content-design-formatting-and-language) + - [Cheatsheet: Markdown](#cheatsheet-markdown) +- [Content Design, Formatting, and Language](#content-design-formatting-and-language) + - [Contact Information](#contact-information) + - [Dates and Times](#dates-and-times) + - [Diagrams, Images and Other Assets](#diagrams-images-and-other-assets) - [Document Layout](#document-layout) - - [Formatting text](#formatting-text) - - [Language, grammar, and tone](#language-grammar-and-tone) - - [Moving a document](#moving-a-document) + - [Formatting Text](#formatting-text) + - [Language, Grammar and Tone](#language-grammar-and-tone) + - [Moving a Document](#moving-a-document) - [Punctuation](#punctuation) - [Quotation](#quotation) -- [Markdown formatting](#markdown-and-formatting) +- [Markdown Formatting](#markdown-formatting) - [Code Blocks](#code-blocks) - [Emphasis](#emphasis) - [Headings](#headings) - - [Horizontal Lines](#horizontal-lines) + - [Horizontal Rules](#horizontal-rules) - [Line Length](#line-length) - [Links](#links) - [Lists](#lists) @@ -38,9 +40,11 @@ These are **guidelines**, not rules. Use your best judgement. ### Cheatsheet: Content Design, Formatting, and Language **[Contact Information:](#contact-information)** + - Use official Kubernetes contact information. **[Dates and Times:](#dates-and-times)** + - Format dates as `month day, year`. (December 13, 2018) - When conveying a date in numerical form, use [ISO 8601] Format: `yyyy-mm-dd`. - Use the 24 hour clock when referencing time. @@ -53,6 +57,7 @@ These are **guidelines**, not rules. Use your best judgement. - `http://www.thetimezoneconverter.com/?t=<TIME REFERENCE>&tz=<TZ REFERENCE>` **[Diagrams, Images and Other Assets:](#diagrams-images-and-other-assets)** + - Images and other assets should be stored in the same directory as the document that is referencing it. - Filenames should be lowercase and descriptive of what they are referencing. @@ -61,6 +66,7 @@ These are **guidelines**, not rules. Use your best judgement. - Use the [Kubernetes icon set] for architectural diagrams. **[Document Layout:](#document-layout)** + - Documents should follow the general template of: - Document metadata (if appropriate). - Title in `H1` (a single `#`). @@ -71,6 +77,7 @@ These are **guidelines**, not rules. Use your best judgement. - Large content or topic shifts should be separated with a horizontal rule. **[Formatting Text:](#formatting-text)** + - API objects: - Follow the established [API naming convention] when referring to API Objects. - Do not split API object names into their components. @@ -84,6 +91,7 @@ These are **guidelines**, not rules. Use your best judgement. - Object field names. **[Language, Grammar and Tone:](#language)** + - Documentation should be written in English. - Prefer an active voice and present tense when possible. - Use simple and direct language. @@ -97,12 +105,14 @@ These are **guidelines**, not rules. Use your best judgement. document unless it is commonly known. (example: TCP/IP) **[Moving a Document:](#moving-a-document)** + - Use `[git-mv]` to move documents. - Commit moved documents separately from any other changes. - When a document has moved, leave a tombstone file with a removal date in its place. **[Punctuation:](#punctuation)** + - Do not use punctuation in headings. - End full sentences with a period. - **Exception:** When a sentence ends with a URL or if the text would be @@ -123,6 +133,7 @@ These are **guidelines**, not rules. Use your best judgement. ### Cheatsheet: Markdown **[Code Blocks:](#code-blocks)** + - When possible, reference the language at the beginning of a Code Block. - When a code block is used to reference a shell, do not include the command prompt (`$`). @@ -130,11 +141,13 @@ These are **guidelines**, not rules. Use your best judgement. - Separate commands from output. **[Emphasis:](#emphasis)** + - Use two asterisks (`**`) for **Bold** text. - Use an underscore (`_`) for _Italics_. - Use two tildes (`~~`) for ~~Strikethrough~~. **[Headings:](#headings)** + - Use a single `H1` (`#`) Heading per document. - **Exception:** `H1` may be used multiple times in the same document when there is a large content shift or "chapter" change. @@ -149,13 +162,16 @@ These are **guidelines**, not rules. Use your best judgement. - Avoid using links in headings. **[Horizontal Rules:](#horizontal-lines)** + - Use three dashes (`---`) to denote a horizontal rule. - Use a horizontal rule (`---`) to logically separate large sections. **[Line Length:](#line-length)** + - Prefer an 80 character line limit. **[Links:](#links)** + - Prefer using reference style links over inline style links. - When linking within the same directory, use a relative link. - When linking to a document outside of the current directory, use the absolute @@ -166,6 +182,7 @@ These are **guidelines**, not rules. Use your best judgement. - sigs.k8s.io -> github.com/kubernetes-sigs **[Lists:](#lists)** + - Capitalize the first character of each entry unless the item is explicitly case sensitive. - End each entry with a period if it is a sentence or phrase. @@ -177,11 +194,13 @@ These are **guidelines**, not rules. Use your best judgement. two times. **[Metadata:](#metadata)** + - If the document is intended to be surfaced on the Contributor Site; include a yaml metadata header at the beginning of the document. - Metadata must include the `title` attribute. **[Tables:](#tables)** + - Use tables for structured information. - Tables do not need to adhere to the suggested line length. - Avoid long inline links. @@ -387,6 +406,7 @@ external appearance. - Tombstones function as a pointer and give users a time to update their own documentation and bookmarks. Their usefulness is time-bounded and should be removed when they would logically no longer serve their purpose. + ```markdown This file has moved to https://git.k8s.io/community/contributors/guide/README.md. @@ -430,6 +450,7 @@ external appearance. highlighting. This can be enabled by supplying the name of the language after the three back-ticks (`` ``` ``) at the start of a code block. - **Good example:** + ````` ```go import ( @@ -439,6 +460,7 @@ external appearance. ``` ````` - **Bad example:** + ````` ``` import ( @@ -453,10 +475,12 @@ external appearance. command prompt. The exception to this is when a code block is being used for raw shell output such as debug logs. - **Good example:** + ``` kubectl get pods -o wide ``` - **Bad example:** + ``` $ kubectl get pods -o wide ``` @@ -464,6 +488,7 @@ external appearance. - Separating the command from the output makes both the command and output more generally readable. - **Good example:** + ``` kubectl get pods ``` @@ -472,6 +497,7 @@ external appearance. nginx 1/1 Running 0 13s 10.200.0.4 worker0 ``` - **Bad example:** + ``` kubectl get pods NAME READY STATUS RESTARTS AGE IP NODE @@ -544,12 +570,14 @@ relative links. However, how and what they're being linked to can vary widely. large or covers many topics, place the link at the end of the logical chapter or section. - **Example:** + ``` See the [Code of Conduct] for more information. [code of conduct]: https://git.k8s.io/community/code-of-conduct.md ``` - **Example:** + ``` See the [Code of Conduct][coc] for more information. @@ -561,10 +589,12 @@ relative links. However, how and what they're being linked to can vary widely. - When the file is referenced multiple times within the same document, consider using a reference link for a quicker shorthand reference. - **Example:** + ``` See the [Code of Conduct](code-of-conduct.md) for more information ``` - **Example:** + ``` See the [Code of Conduct][coc] for more information @@ -576,6 +606,7 @@ relative links. However, how and what they're being linked to can vary widely. the link to the target or destination document will remain intact and not have to be updated. - **Example:** + ``` See the [Coding Convention] doc for more information. @@ -592,6 +623,7 @@ relative links. However, how and what they're being linked to can vary widely. | https://sigs.k8s.io | https://github.com/kubernetes-sigs | - **Example:** + ``` The super cool [prow tool] resides in the test-infra repo under the kubernetes organization @@ -626,6 +658,7 @@ relative links. However, how and what they're being linked to can vary widely. site generators such as [Jekyll] and [Hugo]. - The metadata header is a yaml block between two sets of `---`. - **Example:** + ``` --- title: Super Awesome Doc @@ -640,6 +673,7 @@ relative links. However, how and what they're being linked to can vary widely. - Use tables for structured information. - **Example:** + ``` | Column 1 | Column 2 | Column 3 | |:--------------:|:--------------:|:--------------:| diff --git a/events/elections/2019/BALLOTS.csv b/events/elections/2019/BALLOTS.csv new file mode 100644 index 00000000..4ab9124c --- /dev/null +++ b/events/elections/2019/BALLOTS.csv @@ -0,0 +1,378 @@ +Brendan Burns (@brendandburns),Christoph Blecker (@cblecker),Derek Carr (@derekwaynecarr),Pengfei Ni (@feiskyer),Stephen Augustus (@justaugustus),Kris Nova (@kris-nova),Klaus Ma (@k82cn),Lachlan Evenson (@lachie83),Nikhita Raghunath (@nikhita),Paris Pittman (@parispittman),Vallery Lancey (@vllry) +11,11,11,11,3,1,11,4,2,5,11 +4,3,9,10,5,11,7,2,6,1,8 +3,9,8,7,11,2,4,10,5,1,6 +1,3,2,10,4,8,11,7,6,9,5 +4,11,11,11,6,5,11,2,1,3,11 +11,3,5,11,11,11,11,6,2,1,4 +2,11,11,1,11,11,11,11,11,11,11 +10,2,No opinion,No opinion,9,11,No opinion,3,4,5,1 +2,6,8,3,7,9,10,1,5,4,11 +3,2,1,No opinion,5,No opinion,No opinion,No opinion,4,6,No opinion +3,7,5,1,2,8,4,9,11,6,10 +1,No opinion,No opinion,4,No opinion,No opinion,2,No opinion,3,No opinion,No opinion +11,5,10,10,4,3,10,10,1,2,10 +8,6,11,9,1,2,10,4,5,7,3 +11,11,11,2,11,11,1,11,11,11,11 +6,10,11,9,5,4,7,8,1,2,3 +1,3,4,11,3,2,11,4,2,3,11 +4,2,8,7,10,9,1,3,6,5,11 +11,1,11,11,6,11,3,5,4,2,11 +9,3,2,8,6,10,11,5,4,1,7 +3,8,7,11,5,1,10,9,2,4,6 +1,3,2,11,8,5,11,6,7,4,11 +11,3,11,5,1,11,No opinion,2,3,3,4 +3,11,11,11,11,11,11,11,1,2,11 +11,2,8,11,11,11,11,11,2,1,11 +11,3,2,11,11,10,9,10,9,1,8 +11,4,1,5,10,8,6,7,3,9,2 +6,5,6,1,6,6,2,4,3,6,6 +11,4,9,6,3,10,9,9,2,1,5 +11,11,11,11,11,11,1,11,11,11,11 +3,11,3,1,11,11,2,11,11,11,11 +No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,1,No opinion +3,2,1,11,11,11,11,6,4,5,11 +4,8,1,6,5,11,9,2,10,3,7 +11,4,1,11,11,5,11,11,11,2,3 +3,8,1,9,4,2,11,10,7,5,6 +11,2,1,5,11,3,11,11,11,11,4 +3,2,1,5,4,11,11,5,11,4,11 +11,5,3,8,6,6,4,8,2,1,8 +11,11,11,11,11,11,1,11,11,11,11 +2,No opinion,No opinion,No opinion,1,No opinion,No opinion,No opinion,No opinion,4,3 +11,6,5,9,7,5,8,10,2,1,3 +6,8,7,9,4,2,10,5,1,11,3 +2,3,5,10,9,11,6,4,1,7,8 +4,2,1,8,7,10,5,9,3,6,11 +7,11,3,6,11,11,1,11,2,11,11 +11,7,10,8,2,6,9,5,3,1,4 +5,10,1,10,4,11,6,3,10,2,10 +4,11,3,11,11,11,5,11,2,1,11 +1,5,11,9,6,4,10,7,2,3,8 +11,4,6,3,10,7,9,8,2,1,5 +No opinion,No opinion,5,3,2,No opinion,4,1,No opinion,No opinion,No opinion +No opinion,No opinion,No opinion,No opinion,2,1,No opinion,No opinion,3,4,5 +No opinion,2,No opinion,No opinion,3,No opinion,No opinion,No opinion,4,1,No opinion +3,11,11,11,11,1,11,2,11,11,11 +3,2,1,9,11,9,9,6,5,4,10 +4,2,1,No opinion,9,7,10,11,3,6,8 +4,3,1,11,11,11,2,11,11,11,11 +4,11,1,11,11,11,11,3,2,11,11 +11,3,11,11,2,11,11,4,11,1,11 +2,No opinion,1,3,4,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion +11,5,2,3,7,8,4,9,6,1,10 +9,1,5,7,4,10,3,11,2,8,6 +11,2,1,11,11,4,11,11,11,3,11 +1,11,11,11,11,11,11,11,11,11,11 +2,11,11,11,11,6,11,5,3,1,4 +No opinion,No opinion,No opinion,No opinion,3,No opinion,No opinion,No opinion,2,1,No opinion +7,3,1,10,4,9,8,11,5,8,6 +11,5,4,10,3,8,7,9,2,1,6 +4,3,7,6,5,1,10,8,9,11,2 +11,5,10,9,7,2,4,8,1,6,3 +4,4,4,2,4,4,1,4,4,4,3 +11,2,4,10,7,9,10,5,3,1,6 +8,9,7,11,1,4,10,5,6,2,3 +5,6,No opinion,No opinion,3,7,No opinion,4,2,1,No opinion +2,10,5,11,4,3,9,6,8,1,7 +3,No opinion,No opinion,No opinion,6,5,No opinion,7,1,2,4 +No opinion,No opinion,1,No opinion,3,2,No opinion,No opinion,3,No opinion,No opinion +10,6,7,8,1,4,5,3,2,9,11 +4,1,5,10,7,11,2,9,3,8,6 +5,6,11,8,4,10,1,7,3,9,2 +4,2,1,11,11,11,11,11,11,3,11 +1,6,No opinion,11,4,7,No opinion,3,2,No opinion,5 +11,10,3,6,9,4,8,7,2,1,5 +11,1,11,11,3,11,11,4,11,2,11 +11,4,2,No opinion,No opinion,7,No opinion,5,3,1,6 +3,8,1,2,10,11,8,8,9,8,8 +6,4,2,10,11,8,9,7,5,1,3 +2,7,3,No opinion,4,9,No opinion,6,1,8,5 +3,2,1,11,4,No opinion,5,No opinion,11,No opinion,11 +5,4,No opinion,No opinion,6,7,No opinion,No opinion,3,2,1 +1,1,11,11,11,11,11,1,11,1,11 +10,5,1,8,7,2,6,3,9,4,11 +2,5,4,10,9,8,11,6,7,1,3 +7,8,10,1,2,6,11,9,3,4,5 +3,11,2,11,11,11,1,11,11,11,11 +7,2,1,11,5,11,11,4,3,11,6 +2,2,1,11,11,11,11,11,2,11,11 +4,1,1,No opinion,4,No opinion,No opinion,10,2,11,3 +11,1,5,8,9,10,4,6,3,2,7 +1,No opinion,7,No opinion,3,4,9,8,5,2,6 +4,1,3,5,6,2,11,11,11,11,11 +10,7,3,6,2,11,9,8,5,1,4 +2,4,1,9,11,10,8,5,6,3,7 +1,3,11,1,11,11,11,11,11,4,11 +11,1,2,11,3,11,11,11,11,11,11 +2,7,3,6,1,9,8,10,4,5,11 +11,4,3,9,2,6,8,10,5,1,7 +11,2,4,11,5,7,11,11,3,1,6 +1,No opinion,3,No opinion,No opinion,No opinion,No opinion,2,4,No opinion,No opinion +11,11,1,11,11,11,2,11,11,11,11 +2,8,1,7,4,9,6,3,5,11,10 +1,11,5,3,4,11,11,11,6,7,1 +9,5,7,6,11,8,2,10,3,1,4 +11,6,11,4,2,11,5,8,1,3,7 +11,5,8,6,10,2,7,4,1,9,3 +11,8,10,4,7,5,1,2,9,3,6 +1,6,5,4,7,9,11,8,2,10,3 +5,1,3,10,4,11,6,8,2,7,9 +11,4,6,3,5,1,11,11,2,11,11 +10,1,7,6,8,11,9,2,5,3,4 +7,11,8,10,3,1,9,4,5,2,6 +4,2,7,7,1,9,7,5,8,11,3 +11,11,11,2,11,11,1,11,3,11,11 +1,11,11,3,11,11,11,2,11,11,11 +11,4,5,8,3,9,7,6,2,1,10 +2,1,11,11,11,11,11,11,11,3,11 +10,3,2,9,4,9,11,8,5,1,9 +2,5,3,7,1,9,8,11,4,6,10 +10,1,6,9,5,11,7,8,2,3,4 +4,6,8,9,5,11,10,7,3,2,1 +8,11,6,9,2,4,10,5,7,1,3 +8,5,4,6,1,10,9,7,3,2,11 +1,No opinion,3,10,2,4,9,7,8,5,6 +6,4,No opinion,No opinion,2,1,No opinion,No opinion,5,3,No opinion +1,5,No opinion,No opinion,2,8,No opinion,3,6,4,7 +7,9,2,6,8,11,5,3,1,4,10 +No opinion,2,No opinion,No opinion,No opinion,3,No opinion,No opinion,1,No opinion,No opinion +1,3,9,8,10,6,7,4,2,11,5 +11,1,2,11,3,11,11,11,4,11,11 +No opinion,2,1,No opinion,No opinion,No opinion,No opinion,No opinion,5,3,4 +No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion +4,4,11,No opinion,2,11,No opinion,5,1,2,No opinion +11,11,2,4,11,11,1,11,3,11,11 +2,7,4,9,1,8,6,5,8,8,3 +11,4,2,11,5,10,7,11,1,6,10 +11,4,2,9,4,10,9,7,2,1,2 +1,9,11,8,3,6,10,5,2,7,4 +1,11,2,11,3,11,11,11,11,4,11 +2,4,3,10,5,9,11,7,6,1,8 +1,11,11,11,11,11,11,3,4,2,11 +11,1,7,8,3,6,10,10,2,4,5 +8,3,4,10,11,5,10,8,2,1,8 +4,11,11,11,2,5,11,3,1,11,11 +3,1,4,8,9,6,11,5,2,7,10 +1,11,11,11,11,2,11,11,11,11,11 +11,1,11,11,11,11,11,11,11,11,2 +No opinion,No opinion,No opinion,2,3,No opinion,No opinion,No opinion,No opinion,1,No opinion +2,6,7,5,1,4,8,3,No opinion,No opinion,9 +10,2,4,11,11,10,11,9,3,1,11 +No opinion,1,2,No opinion,No opinion,No opinion,No opinion,No opinion,3,No opinion,No opinion +3,No opinion,No opinion,No opinion,2,6,No opinion,1,No opinion,4,5 +2,3,1,11,11,11,11,5,11,11,4 +1,11,11,2,11,11,11,11,11,1,11 +4,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,3,2,1,5 +8,6,7,11,1,10,9,3,4,2,5 +5,No opinion,No opinion,No opinion,3,4,No opinion,No opinion,1,2,6 +9,7,8,9,5,11,10,1,3,2,6 +10,8,9,5,3,7,11,2,6,1,4 +11,6,5,10,7,4,8,9,2,1,3 +1,6,7,11,4,11,11,2,11,3,5 +2,6,10,7,5,9,10,1,4,3,8 +11,3,11,11,4,11,11,11,2,1,11 +4,2,1,5,11,7,6,9,3,8,10 +11,11,11,2,11,11,1,11,3,11,11 +11,3,2,11,5,6,11,11,4,1,11 +11,11,11,11,1,11,11,1,1,2,11 +11,11,11,2,3,11,11,11,4,1,11 +8,3,3,10,5,11,9,6,1,1,7 +11,1,8,5,4,10,No opinion,2,3,7,6 +11,2,1,3,6,10,5,8,4,7,9 +8,1,5,10,3,9,2,9,6,4,11 +4,9,2,11,3,5,10,8,1,6,7 +11,3,4,7,8,10,5,6,2,1,9 +6,7,5,No opinion,2,9,No opinion,3,4,1,8 +4,2,1,6,11,11,11,11,5,4,11 +2,7,5,10,11,3,4,1,1,8,6 +11,3,4,6,5,10,9,8,2,1,7 +2,11,11,3,4,11,11,1,11,11,11 +2,11,3,11,11,11,11,11,1,11,11 +4,3,1,5,No opinion,No opinion,2,No opinion,4,3,6 +11,4,2,9,6,10,8,7,3,1,5 +11,9,7,10,2,1,8,3,4,5,6 +No opinion,4,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,1,2,3 +11,3,2,9,7,5,9,7,3,1,5 +7,2,4,10,5,9,8,11,3,1,6 +11,1,1,11,11,11,11,11,11,11,11 +11,11,11,11,1,11,11,11,3,11,2 +11,11,11,11,11,11,1,11,11,11,11 +1,11,11,11,11,11,1,11,1,11,11 +2,5,6,7,8,11,10,3,9,1,4 +11,11,11,5,1,11,11,4,3,2,11 +5,No opinion,No opinion,No opinion,1,No opinion,No opinion,4,2,3,No opinion +9,3,5,10,9,11,9,4,2,1,7 +2,No opinion,No opinion,No opinion,No opinion,No opinion,3,No opinion,1,No opinion,No opinion +11,3,4,9,7,8,10,5,2,1,6 +1,2,No opinion,No opinion,1,2,No opinion,1,1,1,2 +No opinion,1,No opinion,3,5,6,No opinion,No opinion,4,2,No opinion +7,8,1,10,2,4,9,11,6,3,5 +11,3,10,10,2,4,10,10,2,1,10 +11,3,5,No opinion,No opinion,4,No opinion,No opinion,2,1,No opinion +2,3,11,1,11,11,11,11,11,11,4 +2,6,11,9,8,10,1,7,5,4,7 +11,6,5,9,8,4,10,7,2,1,3 +11,11,11,1,11,11,11,11,11,11,11 +11,11,1,11,2,11,11,11,11,11,11 +1,11,11,5,3,11,11,2,7,4,6 +11,4,3,11,2,11,11,11,5,1,6 +3,2,3,4,1,No opinion,No opinion,4,4,3,4 +6,3,11,4,8,5,9,1,2,7,10 +No opinion,No opinion,1,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion +2,7,10,1,5,11,6,4,9,3,8 +11,11,2,11,5,11,1,11,4,11,3 +3,5,1,10,7,2,6,8,11,9,4 +4,5,3,1,7,10,2,9,8,6,11 +1,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion +10,5,6,1,7,2,8,9,1,4,3 +6,8,9,7,11,3,4,5,2,10,1 +5,11,11,5,3,11,11,1,2,3,11 +11,3,4,11,11,6,11,7,2,1,11 +11,11,2,4,11,11,3,11,11,1,11 +11,4,3,5,6,8,7,9,2,1,10 +No opinion,4,No opinion,No opinion,2,4,No opinion,5,1,1,3 +2,3,4,11,5,8,9,6,10,1,7 +4,No opinion,11,7,No opinion,3,10,8,2,1,5 +1,3,4,No opinion,3,2,No opinion,No opinion,2,2,3 +4,11,11,11,3,11,11,2,1,11,11 +4,2,1,10,6,11,10,10,3,10,5 +11,11,2,11,11,11,1,11,11,11,11 +2,11,11,11,3,No opinion,11,11,1,11,4 +1,11,11,3,11,11,11,2,11,11,11 +11,1,10,10,3,10,10,10,10,1,10 +3,8,1,7,2,6,5,11,4,10,9 +7,6,3,2,3,4,1,11,4,11,5 +2,No opinion,1,3,4,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion +11,3,4,9,7,8,10,5,2,1,6 +11,2,No opinion,No opinion,2,3,No opinion,9,2,1,6 +11,11,11,11,11,11,11,11,11,1,11 +11,3,6,7,8,5,10,9,2,1,4 +11,11,3,11,11,5,11,11,2,1,4 +11,11,11,11,3,11,11,1,2,11,11 +5,2,No opinion,No opinion,4,No opinion,No opinion,No opinion,1,3,No opinion +11,3,4,10,6,8,9,5,2,1,7 +11,3,6,10,8,7,9,4,2,1,5 +7,2,10,9,4,6,11,3,5,1,8 +9,3,4,9,7,8,9,5,2,1,6 +2,No opinion,No opinion,3,7,8,No opinion,1,5,6,4 +11,2,5,8,7,3,6,10,4,1,9 +11,11,11,11,11,11,1,11,11,11,11 +11,9,7,7,3,8,10,5,5,2,1 +9,6,7,11,3,8,10,5,2,4,1 +3,11,4,2,11,11,11,11,11,1,11 +1,1,1,1,1,1,1,1,1,1,1 +11,5,2,9,4,11,6,7,3,1,8 +2,10,11,1,5,8,4,7,3,6,9 +1,6,3,10,2,4,8,9,7,5,11 +2,10,3,9,6,11,5,8,1,7,4 +No opinion,3,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,2,1,No opinion +9,11,10,6,2,7,8,5,1,3,4 +4,9,1,10,11,5,9,9,2,3,6 +11,11,11,11,11,1,11,11,11,1,11 +2,2,2,3,11,1,3,11,1,1,1 +11,4,2,9,5,6,10,8,3,1,7 +7,No opinion,No opinion,5,1,6,No opinion,4,No opinion,2,3 +11,4,11,11,11,11,11,11,2,1,3 +3,6,9,7,1,11,8,10,5,2,4 +2,4,11,11,11,11,11,11,1,3,11 +No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,1,No opinion +3,2,1,7,5,8,10,9,4,6,11 +3,No opinion,2,11,6,No opinion,1,No opinion,4,No opinion,5 +4,6,2,3,11,5,11,11,1,11,11 +6,3,1,8,5,11,8,4,2,10,9 +1,2,9,10,4,11,7,6,3,5,8 +1,4,8,9,10,3,7,11,6,5,2 +11,4,8,9,2,7,10,5,1,3,6 +3,2,No opinion,No opinion,4,No opinion,No opinion,No opinion,1,No opinion,No opinion +3,7,5,6,10,2,8,9,11,1,4 +11,3,4,9,9,9,9,10,2,1,9 +2,2,2,1,2,2,1,2,2,2,1 +11,3,11,11,11,11,11,11,2,1,11 +6,3,6,1,5,6,2,6,4,6,6 +2,1,5,10,4,7,8,6,9,3,11 +6,4,8,10,1,11,9,7,2,3,5 +4,1,4,2,1,4,2,2,2,1,4 +1,No opinion,No opinion,6,2,4,No opinion,3,5,8,7 +6,4,9,11,7,5,10,8,1,2,3 +11,3,8,10,4,7,5,9,2,1,6 +4,2,8,No opinion,1,7,No opinion,6,3,5,No opinion +10,10,10,1,10,10,11,10,10,2,10 +11,10,10,2,10,6,5,10,4,3,1 +11,4,6,11,5,2,11,11,3,1,7 +2,1,2,No opinion,2,11,No opinion,1,1,1,No opinion +11,11,1,11,11,11,11,11,11,11,11 +9,2,1,9,11,11,10,11,4,11,11 +3,11,11,11,2,11,11,4,1,11,11 +11,10,2,4,2,7,11,9,4,1,9 +3,4,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,1,No opinion,2 +No opinion,1,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,1,1,No opinion +11,3,2,10,5,7,8,9,4,1,6 +7,10,11,5,1,11,4,8,6,3,2 +2,3,1,10,10,11,9,10,5,4,11 +10,4,5,2,8,7,10,5,3,1,9 +8,6,11,10,4,7,9,5,1,2,3 +11,11,11,3,2,1,5,11,11,4,11 +11,4,2,11,11,3,11,11,1,11,11 +1,6,5,9,3,11,7,2,4,8,10 +3,No opinion,1,No opinion,No opinion,No opinion,2,No opinion,No opinion,No opinion,4 +11,3,2,11,4,11,5,11,11,1,11 +4,1,3,11,8,3,9,5,2,7,6 +1,2,3,11,11,11,11,11,11,11,4 +1,10,5,3,6,11,10,2,7,4,8 +4,6,No opinion,No opinion,No opinion,3,No opinion,2,5,1,No opinion +11,6,11,11,4,5,11,7,1,2,3 +11,11,11,2,11,11,1,11,11,11,11 +11,11,11,11,1,11,11,1,11,1,1 +No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion +2,No opinion,No opinion,No opinion,No opinion,1,No opinion,No opinion,4,3,No opinion +10,9,9,1,2,11,6,9,3,4,5 +5,7,11,10,1,10,9,2,3,4,6 +6,3,11,10,4,5,8,9,2,1,7 +No opinion,3,No opinion,2,4,No opinion,No opinion,No opinion,No opinion,1,No opinion +11,3,2,10,6,6,7,10,2,1,5 +7,2,8,11,2,6,5,11,3,1,11 +11,6,4,9,3,5,10,8,2,1,7 +2,1,3,10,9,11,11,4,11,11,11 +5,5,4,6,4,7,7,2,3,1,6 +8,7,11,10,2,6,9,1,4,5,3 +2,11,11,11,4,11,11,5,3,1,11 +1,5,2,6,10,11,4,3,9,7,8 +8,2,1,3,9,10,6,7,4,11,5 +7,1,6,8,4,8,8,2,5,3,8 +3,11,2,4,1,11,11,11,11,11,11 +9,3,6,11,4,7,10,8,5,1,2 +1,3,11,8,4,11,11,2,5,7,6 +5,7,11,3,2,9,10,1,6,8,4 +9,3,1,10,11,4,8,7,2,5,6 +10,3,9,6,7,11,5,8,2,1,4 +2,11,11,1,4,11,11,3,11,11,11 +11,1,5,No opinion,3,4,No opinion,8,2,6,No opinion +11,11,11,1,11,11,1,11,11,11,11 +6,2,6,No opinion,6,11,11,2,1,1,1 +1,5,No opinion,8,No opinion,2,No opinion,No opinion,No opinion,No opinion,No opinion +11,3,11,11,11,4,11,11,2,1,11 +11,2,11,3,11,11,1,11,11,11,11 +4,3,1,No opinion,2,No opinion,No opinion,No opinion,No opinion,No opinion,No opinion +4,1,6,8,3,5,11,2,7,9,10 +2,4,10,11,6,8,9,7,5,1,3 +11,3,4,11,6,11,11,11,2,1,5 +5,4,6,3,11,7,10,9,2,1,8 +10,10,4,3,10,10,10,10,2,1,10 +5,2,1,9,4,7,9,3,6,8,8 +1,No opinion,No opinion,No opinion,No opinion,11,No opinion,No opinion,11,No opinion,No opinion +1,5,7,6,4,10,9,8,2,3,11 +2,3,1,No opinion,No opinion,4,No opinion,No opinion,No opinion,5,5 +11,4,10,5,9,11,8,3,1,1,9 +No opinion,2,No opinion,No opinion,11,11,No opinion,4,1,11,3 +8,11,10,9,5,7,1,3,4,6,2 +10,11,11,11,3,11,2,9,1,1,9 +8,7,3,10,6,11,9,4,1,2,5 +3,No opinion,No opinion,No opinion,No opinion,2,No opinion,1,No opinion,No opinion,No opinion +2,4,1,4,1,11,3,3,3,1,4 +11,5,10,8,6,9,7,1,4,2,3 +2,4,8,11,1,6,11,3,5,7,9 +6,1,2,10,8,4,11,7,9,5,3 +4,2,1,10,7,3,8,6,11,9,5 +10,2,5,8,3,11,7,9,4,1,6 +2,7,8,6,4,11,10,3,5,1,9 diff --git a/events/elections/2019/RESULTS.md b/events/elections/2019/RESULTS.md new file mode 100644 index 00000000..67bedf4f --- /dev/null +++ b/events/elections/2019/RESULTS.md @@ -0,0 +1,35 @@ +# Results of the 2019 Steering Committee Election + +- Number of seats open: 4 (2 year term) +- Number of eligible voters: 859 +- Number of votes cast: 377 +- Turnout: 43% + +[Raw ballot data](BALLOTS.csv) + +## Results + +The final ranking, using the Condorcet-IRV method, is as follows: + +1. Paris Pittman +2. Nikhita Raghunath +3. Christoph Blecker +4. Derek Carr +5. Stephen Augustus +6. Lachlan Evenson +7. Brendan Burns +8. Vallery Lancey +9. Pengfei Ni +10. Kris Nova +11. Klaus Ma + +## Winners + +The winners of the open seats are as follows: + +Two year term: + +1. Paris Pittman +2. Nikhita Raghunath +3. Christoph Blecker +4. Derek Carr
\ No newline at end of file diff --git a/events/elections/2020/OWNERS b/events/elections/2020/OWNERS new file mode 100644 index 00000000..bbb97ad1 --- /dev/null +++ b/events/elections/2020/OWNERS @@ -0,0 +1,9 @@ +# See the OWNERS docs at https://go.k8s.io/owners + +reviewers: +approvers: +emeritus_approvers: + - castrojo + - idvoretskyi + - mrbobbytables + - bgrant0607
\ No newline at end of file diff --git a/events/elections/2020/README.md b/events/elections/2020/README.md new file mode 100644 index 00000000..3e809c93 --- /dev/null +++ b/events/elections/2020/README.md @@ -0,0 +1,167 @@ +# 2020 VOTERS GUIDE - KUBERNETES STEERING COMMITTEE ELECTION + +## Purpose + +The role of this election is to fill out the three (3) seats due for +reelection this year on the [Kubernetes Steering Committee]. Each elected +member will serve a two (2) year term. + +## Background + +This election will shape the future of Kubernetes as a community and project. +While SIGs and WGs help shape the technical direction of the project, the +[Steering Committee Charter] covers the health of the project and community +as a whole. Some direct responsibilities of steering members to consider as you are deciding +whether to run or who to vote for: + +* Through the chartering review process, delegate ownership of, responsibility + for and authority over areas of the project to specific entities +* Define, evolve, and defend the non-technical vision / mission and the values + of the project +* Charter and refine policy for defining new community groups and establish transparency and accountability policies for such groups +* Define and evolve project and group governance + structures and policies +* Act as a final non-technical escalation point for any Kubernetes repository +* Request funds and other support from the CNCF (e.g. marketing, press, etc.) +* Define and enforce requirements for community groups to be in good standing + such as having an approved charter + +For more context, please see the [current steering committee backlog] or a +previous [governance meeting video] which led to this whole process. + +## Eligibility + +Please refer to the [Steering Committee Election Charter] for: + +- [Eligibility for candidacy] +- [Eligibility for voting] and [Eligible voters] list (not in charter) + +Corporate affiliation is applied after the election. If an organization finds itself with too many representatives it is up to those individuals to come to a consensus on who should serve on the committee. + +### Schedule + +| Date | Event | +| ------------ | ------------------------ | +| August XX | Announcement of Election | +| August XX | Steering Committee Meeting with Q+A with the candidates and community | +| September XX | All candidate bios and voting exception forms due by 0000 UTC (5pm PST) | +| ~1 week | Election prep week (voters.md validation and CIVS setup and testing) +| September XX | Election Begins via email ballots | +| October XX | Election Closes by 0000 UTC (5pm PST) | +| October XX | Announcement of Results at Community Meeting | + +## Candidacy Process + +**Nomination** + +If you want to stand for election, send an email to kubernetes-dev@googlegroups.com +with the subject line "Steering Committee Nomination: Your Name (@yourgithub)". + +If you want to nominate someone else, you may do so, but PLEASE talk to them +first. + +If you wish to accept a nomination from someone else, reply to the nomination +email saying something like "I accept the nomination". + +**Endorsement** + +Once nominated, you must get the endorsement of three (3) different eligible +voters from three (3) different employers. If you are eligible to vote +yourself, you count as one of the three. Endorsements from non-voting members does not count towards the final count. + +[Eligible voters] may endorse candidates of their choosing by replying to the +candidate's nomination email saying something like "I endorse this nominee" +or "+1". Please specify your github ID and state that you are in voters.md. + +**Running** + +Eligible candidates can submit a pull request with a biography in this +directory with their platform and intent to run. This statement is +**limited to 300 words** and must follow the format of `firstnamelastname.md`. +Please refer to the [2018 candidate bios] for examples. Biography statements are optional. + +Missed deadlines by the candidates will be addressed by steering on a per case basis to determine eligibility. + +**Campaigning** + +Please refer to the [Steering Committee Election Charter] and understand +that we care deeply about [limiting corporate campaigning]. The election +officers and members of the steering committee [pledge to recuse] themselves +from any form of electioneering. + +You should be running as a "brand free" individual, based on your contribution +to the project as a member of this community, outside of whatever corporate +roles you may hold. + +## Voting Process + +Kubernetes members in [voters.md] will receive a ballot via email. If you are +not on that list and feel you have worked on Kubernetes in a way that is NOT +reflected in GitHub contributions, you can use the [voter exemption form] to ask +to participate in the election. + +Elections will be held using time-limited [Condorcet] ranking on [CIVS] +using the [IRV method]. The top vote getters will be elected to the open +seats. + +Employer diversity is encouraged, and thus maximal representation will be +enforced as spelled out in the [Steering Committee Election Charter]. + +You will be ranking your choices of the candidates with an option for +"no opinion". In the event of a tie, a coin will be flipped. + +The election will open for voting the morning September 28, 2019 via email and +end two weeks after on October 2, 2019 at 00:00am UTC. You will receive an email +to the address on file at the start of the election from "Kubernetes (CIVS Poll +Supervisor) `<civs@cs.cornell.edu>`, please whitelist if necessary. Detailed +voting instructions will be addressed in email and the CIVS polling page. Please +note that email ballots might be unreliable, so you are encouraged to contact +the election officials if you do not receive a ballot by September 29. + +### Officers + +The Steering Committee has selected the following people as [election officers]: +- Name, GitHub handle, affiliation. + +Please direct any questions via email to <election@k8s.io>. + +### Decision + +The newly elected body will be announced in the weekly [Kubernetes Community Meeting] +on October 3, 2019. + +Following the meeting, the raw voting results and winners will be published on the +[Kubernetes Blog]. + +For more information, definitions, and/or detailed election process, please refer to +the [Steering Committee Election Charter] + +## Nominees + + +| Name | Organization/Company | GitHub | +|:------------------------------------------:|:--------------------:|:----------------------------------------------------:| +| [Jane Containerface](./biotemplate.md) | ExampleCo | [@github](https://github.com) | + +[Kubernetes Steering Committee]: https://github.com/kubernetes/steering +[Steering Committee Charter]: https://github.com/kubernetes/steering/blob/master/charter.md +[current steering committee backlog]: https://github.com/kubernetes/steering/projects/1 +[governance meeting video]: https://www.youtube.com/watch?v=ltRKXLl0RaE&list=PL69nYSiGNLP1pkHsbPjzAewvMgGUpkCnJ&index=23 + +[Steering Committee Election Charter]: https://git.k8s.io/steering/elections.md +[Eligibility for voting]: https://github.com/kubernetes/steering/blob/master/elections.md#eligibility-for-voting +[Eligibility for candidacy]: https://github.com/kubernetes/steering/blob/master/elections.md#eligibility-for-candidacy +[limiting corporate campaigning]: https://github.com/kubernetes/steering/blob/master/elections.md#limiting-corporate-campaigning +[pledge to recuse]: https://github.com/kubernetes/steering/blob/master/elections.md#steering-committee-and-election-officer-recusal + +[Condorcet]: https://en.wikipedia.org/wiki/Condorcet_method +[CIVS]: http://civs.cs.cornell.edu/ +[IRV method]: https://www.daneckam.com/?p=374 + +[2018 candidate bios]: https://github.com/kubernetes/community/tree/master/events/elections/2018 +[election officers]: https://github.com/kubernetes/community/tree/master/events/elections#election-officers +[Kubernetes Community Meeting]: https://github.com/kubernetes/community/blob/master/events/community-meeting.md +[Kubernetes Blog]: https://kubernetes.io/blog/ +[eligible voters]: https://github.com/kubernetes/community/blob/master/events/elections/2019/voters.md +[voter exemption form]: https://www.surveymonkey.com/r/k8s-sc-election-2019 +[voters.md]: ./voters.md diff --git a/events/elections/2020/biotemplate.md b/events/elections/2020/biotemplate.md new file mode 100644 index 00000000..ac734856 --- /dev/null +++ b/events/elections/2020/biotemplate.md @@ -0,0 +1,18 @@ +# Your Name + +- GitHub: https://github.com/ +- Affiliation: Where you work or independent +- Slack: @you +- Twitter/Other: Add lines as appropriate + +## SIGS + +- SIGS/WG/UGs you're a member of + +## What I have done + +## What I'll do + +## Resources About Me + +- Links to KubeCon or other conference talks or other related material diff --git a/events/elections/2020/templates/election-templates.md b/events/elections/2020/templates/election-templates.md new file mode 100644 index 00000000..b27b4def --- /dev/null +++ b/events/elections/2020/templates/election-templates.md @@ -0,0 +1,105 @@ +Adjust this template as necessary: + +## Election Announcement + +It’s that time of year again! + +As is now customary, this fall is election season for Kubernetes. Four(4) elected members (cblecker, derekwaynecarr, nikhita, parispittman) will stay on for the remaining year of their terms, and there will be three(3) positions open for election. Every election term will be 2 years. We will be posting regular updates to kubernetes-dev with deadlines and instructions as well as providing quick updates during the regular Thursday community meetings until completion of the election. + +If you’d like to vote or run for a seat, all details and next steps are outlined in the election process doc[3] and voters guide.[4] The voters guide will be the single source of truth of information for this cycle. It will be updated live as new bios of candidates flow through over the next four weeks. Please pay attention to the scheduled dates: + +| schedule here | + +As mentioned in the process doc, eligibility for voting will be determined by 50 contributions to a Kubernetes project over the past year, which will result in you getting a ballot emailed to you when the election starts. For those of you doing work within the Kubernetes project / community that is NOT measured in GitHub, you can apply for participation via the voter exemption form. This is to ensure that non-code contributors can participate, so please don’t hesitate to use the form. + +Resources: + +[1] Steering Committee - who sits on the committee and terms, their projects and meeting info +[2] Steering Committee Charter - this is a great read if you’re interested in running (or assessing for the best candidates!) +[3] Election Process +[4] Voters Guide! - Updated on a rolling basis. This guide will always have the latest information throughout the election cycle. The complete schedule of events and candidate bios will be housed here. + +On behalf of the election officers, + +Name (github), Name (github), etc + +If you have questions, please feel free to ask on the list; otherwise, you can reach the Election Officials at election@kubernetes.io. + +## Election Status Updates + +Post these weekly to kubernetes-dev + +$greeting, + +The Kubernetes Steering Committee Election begins today/is underway! Here's what you need to know as we begin prep to send out the ballots. + + Ballots are going out today via email. Expect a mail from "Kubernetes Election Officers (CIVS poll supervisor) <ci...@cs.cornell.edu>" with a subject like "Poll: Kubernetes Steering Committee Election 2020" + Email can be unreliable, so generally expect them this morning, if you haven't received one by the end of the day let us know, sending you a new ballot is easy for us. + +The candidates and links to their bios are all available here: https://git.k8s.io/community/events/elections/2020 + +// Voting + +- You should check to see if you are in voters.md. Your github handle MUST BE IN THIS DOCUMENT to vote: https://github.com/kubernetes/community/blob/master/events/elections/2020/voters.md + +- If you feel you have made enough contributions to be able to vote but you are NOT in voters.md, you need to fill out this form by XXX: https://www.surveymonkey.com/r/k8s-sc-election-2019 + +- If you are planning on running for Steering Committee please see this section of the documentation, you need to PR your biography into the repo by XXX: https://github.com/kubernetes/community/tree/master/events/elections/2019#candidacy-process + + +// Schedule + +The next deadline is XXX , you have until then to complete your ballot. If you have any questions, let us know. + +| September 11 | All candidate bios and voting exception forms due by 0000 UTC (5pm PST) | +| September 18 | Election Begins via email ballots | +| October 2 | Election Closes by 0000 UTC (5pm PST) | +| October 3 | Announcement of Results at Community Meeting | + + +// Resources + +Voters Guide - https://git.k8s.io/community/events/elections/2020 +Steering Committee - https://git.k8s.io/steering +Steering Committee Charter - https://git.k8s.io/steering/charter.md +Election Process - https://git.k8s.io/steering/elections.md + +On behalf of the election officers, +Name (github), Name (github), etc + +If you have questions, please feel free to ask on the list; otherwise, you can reach the Election Officials at election@kubernetes.io + +## Election Results + +This mail only goes to the incumbent members of steering who are NOT running that year! + +$greeting, + +Please keep this information private! + +An incumbent steering member announces the results. At least one of you please come to the community meeting tomorrow to make the announcement. Let us know if you cannot. + +After the community meeting, we'll publish this blog post (feedback encouraged). + +A note on the results, as per previous elections we plan on announcing/celebrating the winners and only publishing their names, GitHub handles, and affiliations. We purposely don't mention rankings or the results of the rest of the field. + +We will quietly check in the full election results (with anonymized ballots) into the community repo in the next few weeks. This will satisfy transparency requirements while being respectful to the other candidates. + +Results and data from the 2019 Steering Committee election: + +- 879 eligible voters as determined by: +- 864 with 50+ DevStats recorded contributions between 2018-08-15 and 2019-08-15. +- Of the 864, no email address could be determined for 27 of them. +- 15 exception voters. + +Emails were obtained from the CNCF's gitdm along with some manual reconciliation and comparison with the kubernetes-dev mailing list. + +377 total votes cast as of the close on October 2rd at 5pm PT (43%) + +Last Year's data: 700 eligible voters with 307 votes cast (44%) + + +Final Results: + +(paste these from CIVS) +1. Jane Containerface (@github) (Condorcet winner: wins contests with all other choices) diff --git a/events/elections/README.md b/events/elections/README.md index dbae60af..3ba80070 100644 --- a/events/elections/README.md +++ b/events/elections/README.md @@ -9,7 +9,7 @@ eligibility for voting, eligibility for candidacy, maximal representation, etc. - Steering Committee selects the Election Officers - Dates should be in UTC time, use a [world clock service](https://www.timeanddate.com/worldclock/fixedtime.html?msg=Election+Test&iso=20181101T00&p1=%3A&ah=10) in documentation and email announcements so that end users see the correct time and date based on where they live. -- The steering committee was structured in a way so that it does not turn over all at once with staggered terms, therefore all new elections are for two(2) year terms. +- The steering committee was structured in a way so that it does not turn over all at once with staggered terms, therefore all new elections are for two(2) year terms ### Election Officers select the following dates @@ -21,24 +21,26 @@ eligibility for voting, eligibility for candidacy, maximal representation, etc. - Election period start - It takes time to create the poll in CIVS, so don’t give a specific hour, instead say “Morning of the 10th” or something vague. - Election period stop - - CIVS needs to be manually stopped, so an actual person needs to click for the poll to stop, so this needs to be a human friendly time. + - CIVS needs to be manually stopped, so an actual person needs to click for the poll to stop, so this needs to be a human friendly time - Results announcement date - Draft dates will then be passed to the Steering Committee for final approval +- Once Steering approves the dates election officers will work with SIG Contributor Experience to put the election dates on the community calendar +- Election officers coordinate with SIG Docs and appropriate subprojects to coordinate election results blog post ## Process 1. Election officers prepare the election repository - Make github.com/kubernetes/community/elections/$YEAR - - Make github.com/kubernetes/community/elections/$YEAR/README.md, this is the voter’s guide. - - Copy over the voter’s guide from the previous year. The voter’s guide is the single source of truth for the election that year! All announcements and notices should link to this document. - - Update with new dates, candidates, and procedures (if necessary). + - Make github.com/kubernetes/community/elections/$YEAR/README.md, this is the voter’s guide + - Copy over the voter’s guide from the previous year. The voter’s guide is the single source of truth for the election that year! All announcements and notices should link to this document + - Update with new dates, candidates, and procedures (if necessary) - Make github.com/kubernetes/community/elections/$YEAR/OWNERS with all the election officers for the election year. - Make github.com/kubernetes/community/elections/$YEAR/voters.md - Initial list is generated via the [eligibility for voting requirements][eligible to vote] - - Officers will update this list as voters submit the voting exemption form. - - Announce to the candidates to submit PRs with their platform statement (if they desire), 300 word limit. Each platform document lives in the elections/$YEAR directory, with the voter’s guide (README.md) acting as the index. - - Ensure officers are members of election@kubernetes.io Google Group and that prior officers are removed. - - Start a shared postmortem document to log the lessons learned so this process can be improved. + - Officers will update this list as voters submit the voting exemption form + - Announce to the candidates to submit PRs with their platform statement (if they desire), 300 word limit. Each platform document lives in the elections/$YEAR directory, with the voter’s guide (README.md) acting as the index + - Ensure officers are members of election@kubernetes.io Google Group and that prior officers are removed + - Start a shared postmortem document to log the lessons learned so this process can be improved 2. Announce voting schedule to community @@ -51,28 +53,31 @@ eligibility for voting, eligibility for candidacy, maximal representation, etc. - Name of the poll - “Kubernetes Steering Committee Election for $YEAR” - Name of supervisor - “Kubernetes Election Officers” - Email - election@kubernetes.io : Googlegroups doesn’t work here. This mail should resolve to the election officers. -- Date and Time: Write in the date and time the election will stop. This field is not programmatic, the election is stopped by hand, so you can write this in plain text. -- Description: Use the following text, modify it for either 3 or 4 positions, depending on the amount of open seats: This election is to nominate the steering committee for the Kubernetes project. Order the candidates by preference, the top $NUMBER candidates will be selected. Please see the voter's guide for more information. PLEASE NOTE: "No opinion" is also a voting option if you do not feel comfortable ranking every single candidate. +- Date and Time: Write in the date and time the election will stop. This field is not programmatic, the election is stopped by hand, so you can write this in plain text +- Description: Use the following text, modify it for either 3 or 4 positions, depending on the amount of open seats: This election is to nominate the steering committee for the Kubernetes project. Order the candidates by preference, the top $NUMBER candidates will be selected. Please see the voter's guide for more information. PLEASE NOTE: "No opinion" is also a voting option if you do not feel comfortable ranking every single candidate - Add the candidate list to the form - How many choices will win: This number needs to be set to the amount of open seats of a given election - More options, check the boxes for: - - Do not release results to all voters. - - Enable detailed ballot reporting. - - Allow voters to select “no opinion” for some choices. -- Click create poll, this will send election@kubernetes.io an email with instructions. -- It will send you a link to “Poll Control”, bookmark this generated page as this is where you will add voters and also resend ballots to people if their ballot gets lost or filtered. -- This page is where the “Start Poll” and “Stop Poll” buttons are, start the poll. + - Do not release results to all voters + - Enable detailed ballot reporting + - Allow voters to select “no opinion” for some choices +- Click create poll, this will send election@kubernetes.io an email with instructions +- It will send you a link to “Poll Control”, bookmark this generated page as this is where you will add voters and also resend ballots to people if their ballot gets lost or filtered +- This page is where the “Start Poll” and “Stop Poll” buttons are, start the poll - WARNING: This is the point of no return: - - Paste in the registered voters and click add voters. - - It will mail the ballots to the participants. - - It does duplicate detection so multiple entries are fine. - - This might take a while and the web page will not update, this has taken up to 10m in the past as it's sending each ballot. Don't panic or refresh the page. -- Leave the poll open for the duration of voting. - - Remember to send a 24 hour reminder before closing the poll. - - Click "Stop poll" at the end of the election, wait a minute then refresh the page for results. - - Select "Condorcet IRV" on the right hand side of the page to select the results method. - - Mail results of the election to the steering committee private list and await instructions. -- Push election results into the community repo under events/elections _after_ the Steering Commmittee has announced the results. + - Paste in the registered voters and click add voters + - It will mail the ballots to the participants + - It does duplicate detection so multiple entries are fine + - This might take a while and the web page will not update, this has taken up to 10m in the past as it's sending each ballot. Don't panic or refresh the page +- Leave the poll open for the duration of voting + - Remember to send a 24 hour reminder before closing the poll + - Click "Stop poll" at the end of the election, check the previously generated URL that CIVS mailed you when you started the poll + - Select "Condorcet IRV" on the right hand side of the page to select the results method +- Reporting + - Mail results of the election to the incumbent Steering Committee members who are NOT running in the election + - Steering Committee announces the results to the entire community at once at the end of the election, currently during the Community Meeting + - Submit election results blog to the official Kubernetes blog after the announcement +- Push election results into the community repo under events/elections _after_ the Steering Commmittee has announced the results, typically a week after the election ## Roles and Responsibilities: @@ -87,6 +92,8 @@ eligibility for voting, eligibility for candidacy, maximal representation, etc. ### Election Officers - Must be [eligible to vote] +- May be delegated election-related tasks from the Steering Committee as they see fit +- Post on behalf of the steering committee if necessary - Cannot be running for office in the current election - Cannot be a current member of the steering committee that is a candidate in the election or whose term extends beyond the election period - [Recuse themselves from public election activities][election-recusal] except those required to run the election @@ -109,10 +116,8 @@ eligibility for voting, eligibility for candidacy, maximal representation, etc. - Accept/Review pull requests for the candidate platforms - The community generally assists in helping with PRs to give the candidates a quick response time - Update the community regularly via the community meeting -- Post on behalf of the steering committee if necessary - Post deadlines and reminders to the kubernetes blog, kubernetes-dev, twitter, and slack. - Reissue ballots from CIVS to voters who might have not received their ballot. -- Miscellaneous election related tasks as decided by the steering committee. - Guard the privacy of the email addresses of voters - It is impossible for the election officers to see the results of the election until the election ends; for purposes of transparency with the community it is encouraged to release some statistics during the election (ie. “65% of the community has voted so far!”) - Ensure that the election results are handed over to the steering committee. diff --git a/mentoring/meet-our-contributors.md b/mentoring/meet-our-contributors.md index 060731a8..5fdd540c 100644 --- a/mentoring/meet-our-contributors.md +++ b/mentoring/meet-our-contributors.md @@ -9,7 +9,15 @@ Every first Wednesday of the month at the following times. Grab a copy of the ca * 02:30pm UTC [Convert to your timezone](https://www.thetimezoneconverter.com/?t=02%3A30%20pm&tz=UTC&). * 08:00pm UTC [Convert to your timezone](https://www.thetimezoneconverter.com/?t=08%3A00%20pm&tz=UTC&). -Tune into the [Kubernetes YouTube Channel](https://www.youtube.com/c/KubernetesCommunity/live) to follow along with video and [#meet-our-contributors](https://kubernetes.slack.com/messages/meet-our-contributors) on Slack for questions and discourse. +Tune into the [Kubernetes YouTube Channel](https://www.youtube.com/c/KubernetesCommunity/live) to follow along with video, check out our playlist of [previous Meet-Our-Contributors monthly meetings](https://www.youtube.com/playlist?list=PL69nYSiGNLP3QpQrhZq_sLYo77BVKv09F) and join [#meet-our-contributors](https://kubernetes.slack.com/messages/meet-our-contributors) on Slack for questions and discussion. + +## What You'll Gain By Participating: + +* An opportunity to learn more about how to get started contributing to K8s +* A chance to get your PRs reviewed by members of the community +* Peer code review that can help you get more eyes on your code, or learn more about a part of the Kubernetes code that may have you struggling +* A deeper understanding of the unique role that our contributors occupy in the Kubernetes ecosystem as a whole +* Practical advice and hands-on tips for how you can get started as a Kubernetes contributor, become a member, or otherwise contribute to the project ## What’s on-topic: * How our contributors got started with k8s diff --git a/sig-architecture/production-readiness.md b/sig-architecture/production-readiness.md new file mode 100644 index 00000000..17ed49dc --- /dev/null +++ b/sig-architecture/production-readiness.md @@ -0,0 +1,51 @@ +# Production Readiness Review Process + +Production readiness reviews are intended to ensure that features merging into +Kubernetes are observable, scalable and supportable, can be safely operated in +production environments, and can be disabled or rolled back in the event they +cause increased failures in production. + +## Status + +The process and questoinnaire are currently under development as part of the +[PRR KEP](https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/20190731-production-readiness-review-process.md), with a target that reviews will be needed for features +going into 1.18. + +During the 1.17 cycle, the PRR team will be piloting the questionnaire and other +aspects of the process. + +## Questionnaire + +* Feature enablement and rollback + - How can this feature be enabled / disabled in a live cluster? + - Can the feature be disabled once it has been enabled (i.e., can we roll + back the enablement)? + - Will enabling / disabling the feature require downtime for the control + plane? + - Will enabling / disabling the feature require downtime or reprovisioning + of a node? + - What happens if a cluster with this feature enabled is rolled back? What + happens if it is subsequently upgraded again? + - Are there tests for this? +* Scalability +* Rollout, Upgrade, and Rollback Planning +* Dependencies + - Does this feature depend on any specific services running in the cluster + (e.g., a metrics service)? + - How does this feature respond to complete failures of the services on + which it depends? + - How does this feature respond to degraded performance or high error rates + from services on which it depends? +* Monitoring requirements + - How can an operator determine if the feature is in use by workloads? + - How can an operator determine if the feature is functioning properly? + - What are the service level indicators an operator can use to determine the + health of the service? + - What are reasonable service level objectives for the feature? +* Troubleshooting + - What are the known failure modes? + - How can those be detected via metrics or logs? + - What are the mitigations for each of those failure modes? + - What are the most useful log messages and what logging levels do they require? + - What steps should be taken if SLOs are not being met to determine the + problem? diff --git a/sig-cluster-lifecycle/README.md b/sig-cluster-lifecycle/README.md index ca5fbec1..2356b7f2 100644 --- a/sig-cluster-lifecycle/README.md +++ b/sig-cluster-lifecycle/README.md @@ -102,6 +102,9 @@ The following [subprojects][subproject-definition] are owned by sig-cluster-life ### cluster-api-provider-gcp - **Owners:** - https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-provider-gcp/master/OWNERS +### cluster-api-provider-ibmcloud +- **Owners:** + - https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-provider-ibmcloud/master/OWNERS ### cluster-api-provider-openstack - **Owners:** - https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-provider-openstack/master/OWNERS diff --git a/sig-list.md b/sig-list.md index fe5d7c8a..11f9bded 100644 --- a/sig-list.md +++ b/sig-list.md @@ -73,9 +73,9 @@ When the need arises, a [new SIG can be created](sig-wg-lifecycle.md) | Name | Label | Members | Contact | |------|--------|---------|---------| -|[Code of Conduct](committee-code-of-conduct/README.md)|code-of-conduct|* [Jennifer Rondeau](https://github.com/Bradamant3), Stripe<br>* [Carolyn Van Slyck](https://github.com/carolynvs), Microsoft<br>* [Eric Paris](https://github.com/eparis), Red Hat<br>* [Jaice Singer DuMars](https://github.com/jdumars), Google<br>* [Paris Pittman](https://github.com/parispittman), Google<br>|* [Private Mailing List](conduct@kubernetes.io) -|[Product Security](committee-product-security/README.md)|product-security|* [CJ Cullen](https://github.com/cjcullen), Google<br>* [Joel Smith](https://github.com/joelsmith), Red Hat<br>* [Jonathan Pulsifer](https://github.com/jonpulsifer), Shopify<br>* [Jordan Liggitt](https://github.com/liggitt), Google<br>* [Brandon Philips](https://github.com/philips), Red Hat<br>* [Tim Allclair](https://github.com/tallclair), Google<br>|* [Private Mailing List](security@kubernetes.io) -|[Steering](committee-steering/README.md)|steering|* [Christoph Blecker](https://github.com/cblecker), Red Hat<br>* [Derek Carr](https://github.com/derekwaynecarr), Red Hat<br>* [Davanum Srinivas](https://github.com/dims), VMware<br>* [Nikhita Raghunath](https://github.com/nikhita), Loodse<br>* [Paris Pittman](https://github.com/parispittman), Google<br>* [Aaron Crickenberger](https://github.com/spiffxp), Google<br>* [Timothy St. Clair](https://github.com/timothysc), VMware<br>|* [Mailing List](https://groups.google.com/a/kubernetes.io/forum/#!forum/steering)<br>* [Private Mailing List](steering-private@kubernetes.io) +|[Code of Conduct](committee-code-of-conduct/README.md)|code-of-conduct|* [Aeva van der Veen](https://github.com/AevaOnline), Microsoft<br>* [Jennifer Rondeau](https://github.com/Bradamant3), Stripe<br>* [Carolyn Van Slyck](https://github.com/carolynvs), Microsoft<br>* [Jaice Singer DuMars](https://github.com/jdumars), Google<br>* [Tasha Drew](https://github.com/tashimi), VMware<br>|* [Private Mailing List](conduct@kubernetes.io) +|[Product Security](committee-product-security/README.md)|product-security|* [CJ Cullen](https://github.com/cjcullen), Google<br>* [Joel Smith](https://github.com/joelsmith), Red Hat<br>* [Jonathan Pulsifer](https://github.com/jonpulsifer), Shopify<br>* [Jordan Liggitt](https://github.com/liggitt), Google<br>* [Luke Hinds](https://github.com/lukehinds), Red Hat<br>* [Brandon Philips](https://github.com/philips), Red Hat<br>* [Tim Allclair](https://github.com/tallclair), Google<br>|* [Private Mailing List](security@kubernetes.io) +|[Steering](committee-steering/README.md)|steering|* [Christoph Blecker](https://github.com/cblecker), Red Hat<br>* [Derek Carr](https://github.com/derekwaynecarr), Red Hat<br>* [Davanum Srinivas](https://github.com/dims), VMware<br>* [Nikhita Raghunath](https://github.com/nikhita), Loodse<br>* [Paris Pittman](https://github.com/parispittman), Google<br>* [Aaron Crickenberger](https://github.com/spiffxp), Google<br>* [Timothy St. Clair](https://github.com/timothysc), VMware<br>|* [Slack](https://kubernetes.slack.com/messages/steering-committee)<br>* [Mailing List](https://groups.google.com/a/kubernetes.io/forum/#!forum/steering)<br>* [Private Mailing List](steering-private@kubernetes.io) <!-- BEGIN CUSTOM CONTENT --> <!-- END CUSTOM CONTENT --> diff --git a/sig-scalability/slos/api_call_latency.md b/sig-scalability/slos/api_call_latency.md index 7e6b0785..45764f9c 100644 --- a/sig-scalability/slos/api_call_latency.md +++ b/sig-scalability/slos/api_call_latency.md @@ -27,15 +27,15 @@ namespaces. - As a user of vanilla Kubernetes, I want some guarantee how quickly I get the response from an API call. - As an administrator of Kubernetes cluster, if I know characteristics of my -external dependencies of apiserver (e.g custom admission plugins, webhooks and -initializers) I want to be able to provide guarantees for API calls latency to -users of my cluster. +external dependencies of apiserver (e.g custom admission plugins and webhooks) +I want to be able to provide guarantees for API calls latency to users of my +cluster. ### Other notes - We obviously can’t give any guarantee in general, because cluster -administrators are allowed to register custom admission plugins, webhooks -and/or initializers, which we don’t have any control about and they obviously -impact API call latencies. +administrators are allowed to register custom admission plugins or webhooks, +which we don’t have any control about and they obviously impact API call +latencies. - As a result, we define the SLIs to be very generic (no matter how your cluster is set up), but we provide SLO only for default installations (where we have control over what apiserver is doing). This doesn’t provide a false diff --git a/sig-scalability/slos/api_extensions_latency.md b/sig-scalability/slos/api_extensions_latency.md index c5490ec1..5c801304 100644 --- a/sig-scalability/slos/api_extensions_latency.md +++ b/sig-scalability/slos/api_extensions_latency.md @@ -6,9 +6,8 @@ | --- | --- | | WIP | Admission latency for each admission plugin type, measured as 99th percentile over last 5 minutes | | WIP | Webhook call latency for each webhook type, measured as 99th percentile over last 5 minutes -| WIP | Initializer latency for each initializer, measured as 99th percentile over last 5 minutes | ### User stories - As an administrator, if API calls are slow, I would like to know if this is -because slow extension points (admission plugins, webhooks, initializers) and -if so which ones are responsible for it. +because slow extension points (admission plugins, webhooks) and if so which ones +are responsible for it. diff --git a/sig-scalability/slos/slos.md b/sig-scalability/slos/slos.md index fe3bda43..0cdb576b 100644 --- a/sig-scalability/slos/slos.md +++ b/sig-scalability/slos/slos.md @@ -135,5 +135,4 @@ sliding window. However, for the purpose of SLO itself, it basically means | WIP | Watch latency for every resource, (from the moment when object is stored in database to when it's ready to be sent to all watchers), measured as 99th percentile over last 5 minutes | [Details](./watch_latency.md) | | WIP | Admission latency for each admission plugin type, measured as 99th percentile over last 5 minutes | [Details](./api_extensions_latency.md) | | WIP | Webhook call latency for each webhook type, measured as 99th percentile over last 5 minutes | [Details](./api_extensions_latency.md) | -| WIP | Initializer latency for each initializer, measured as 99th percentile over last 5 minutes | [Details](./api_extensions_latency.md) | @@ -950,6 +950,9 @@ sigs: - name: cluster-api-provider-gcp owners: - https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-provider-gcp/master/OWNERS + - name: cluster-api-provider-ibmcloud + owners: + - https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-provider-ibmcloud/master/OWNERS - name: cluster-api-provider-openstack owners: - https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-provider-openstack/master/OWNERS @@ -2672,21 +2675,21 @@ committees: label: code-of-conduct leadership: chairs: + - github: AevaOnline + name: Aeva van der Veen + company: Microsoft - github: Bradamant3 name: Jennifer Rondeau company: Stripe - github: carolynvs name: Carolyn Van Slyck company: Microsoft - - github: eparis - name: Eric Paris - company: Red Hat - github: jdumars name: Jaice Singer DuMars company: Google - - github: parispittman - name: Paris Pittman - company: Google + - github: tashimi + name: Tasha Drew + company: VMware meetings: [] contact: private_mailing_list: conduct@kubernetes.io @@ -2714,6 +2717,9 @@ committees: - github: liggitt name: Jordan Liggitt company: Google + - github: lukehinds + name: Luke Hinds + company: Red Hat - github: philips name: Brandon Philips company: Red Hat @@ -2766,13 +2772,14 @@ committees: company: VMware meetings: - description: Public Steering Committee Meeting - day: Wednesday - time: "13:00" + day: Monday + time: "11:00" tz: PT (Pacific Time) frequency: biweekly url: https://bit.ly/k8s-steering-wd recordings_url: https://www.youtube.com/watch?v=YAzgJRQxsdc&list=PL69nYSiGNLP1yP1B_nd9-drjoxp0Q14qM contact: + slack: steering-committee mailing_list: https://groups.google.com/a/kubernetes.io/forum/#!forum/steering private_mailing_list: steering-private@kubernetes.io teams: |
