summaryrefslogtreecommitdiff
path: root/sig-cli
diff options
context:
space:
mode:
authorQiang Wu <qiang.q.wu@oracle.com>2018-01-09 13:04:08 +0800
committerGitHub <noreply@github.com>2018-01-09 13:04:08 +0800
commitca6d798a2171dad8283b437755a0184948a3ea03 (patch)
treee65b6f3dad7c4b51db848c793ca4568dcae41434 /sig-cli
parent121935fa24e31786816181d4bc0426dffd22ddb6 (diff)
parentab26472187fa8a0b02b80e67e71c6ffe7a6d9647 (diff)
Merge pull request #3 from wu-qiang/kms-plugin-grpc-api
gRPC-based KMS plugin service
Diffstat (limited to 'sig-cli')
-rw-r--r--sig-cli/CONTRIBUTING.md268
-rw-r--r--sig-cli/OWNERS10
-rw-r--r--sig-cli/README.md29
-rw-r--r--sig-cli/migrated-from-wiki/README.md1
-rw-r--r--sig-cli/migrated-from-wiki/contributor-guide-building-your-kubernetes-tool.md64
-rw-r--r--sig-cli/migrated-from-wiki/roadmap-kubectl.md112
-rw-r--r--sig-cli/outreachy.md63
7 files changed, 466 insertions, 81 deletions
diff --git a/sig-cli/CONTRIBUTING.md b/sig-cli/CONTRIBUTING.md
index 046e6cc7..d650665f 100644
--- a/sig-cli/CONTRIBUTING.md
+++ b/sig-cli/CONTRIBUTING.md
@@ -1,83 +1,213 @@
# Contributing
-The process for contributing code to Kubernetes via the sig-cli [community][community page].
+The process for contributing code to Kubernetes via SIG-cli [community][community page].
-## TL;DR
+**Note**: This page is focused on helping new contributors become active
+members of the community through sustained contributions.
-- The sig-cli [community page] lists sig-cli [leads],
- channels of [communication], and group [meeting] times.
-- New contributors: please start by adopting an [existing issue].
-- Request a feature by making an [issue] and mentioning
- `@kubernetes/sig-cli-feature-requests`.
-- Write a [design proposal] before starting work on a new feature.
-- Write [tests]!
-
-## Before You Begin
+## Introduction
Welcome to the Kubernetes sig-cli contributing guide. We are excited
about the prospect of you joining our [community][community page]!
+Mentoring and on-boarding new contributors is critical to the success
+of the project.
+
+Please be aware that all contributions to Kubernetes require time
+and commitment from project maintainers to direct and review work.
+This is done in additional to many other maintainer responsibilities, and
+direct engagement from maintainers is a finite resource.
+
+## Pick your track
+
+Determine in what capacity you are looking to contribute:
+
+### Guided
+
+**Who is this for?**
+
+Contributors looking to engage with the SIG cli community for
+a sustained period of time and looking to build working relationships
+with existing members. Route to becoming a SIG cli member as
+a reviewer or approver.
+
+**How does it work?**
+
+Work items come from a backlog of groomed items provided by SIG cli community members.
+Each items has a stake holder willing to provide limited direction to contributors
+working on it. Contributors typically need to put in 10x the time per-issue as the
+maintainers providing direction. Contributors are expected to learn and do research
+to complete the task independently with only periodic direction (~weekly).
+
+**What is expected of contributors?**
+
+Contributors are expected to make progress on items weekly and
+provide periodic updates to any issue they are working on.
+Contributors are expected exercise ownership of their code by fixing bugs
+that are discovered.
+
+### Self service
+
+**Who is this for?**
-Please understand that all contributions to Kubernetes require time
-and commitment from the project maintainers to review the ux, software
-design, and code. Mentoring and on-boarding new contributors is done
-in addition to many other responsibilities.
+Contributors that are looking to contribute only 1 or 2 items, or
+have a specific issue they would like to like resolve and are willing
+to contribute the solution.
-### Understand the big picture
+**How does it work?**
-- Complete the [Kubernetes Basics Tutorial].
-- Be familiar with [kubectl user facing documentation ][kubectl docs].
-- Read the concept guides starting with the [management overview].
+Contributors are free to pick up any work items that they like. Maintainers
+will be focused on directing contributors working on Guided items, so contributors
+picking up non-Guided items will have almost no direction or support from maintainers.
+
+**What is expected of contributors?**
+
+Contributions must be relatively small, simple, well documented and well tested.
+Since maintainers will need to own any code for these contributions, these should
+be very limited in scope and contain minimal risk
+(e.g. simple regression fixes, improved documentation, improved testing).
+
+## Before You Begin
+
+**Note**: Complete the following steps before reaching out to cli community members.
+
+### Agree to contribution rules
+
+Follow the [CLA signup instructions](../CLA.md).
+
+### Learn a bit about the kubectl cli
+
+This is important.
+
+- Learn about using kubectl with Kubernetes in the [Kubernetes Basics Tutorial].
+- Learn about managing configuration in the [kubectl docs].
### Modify your own `kubectl` fork
-Make sure you are ready to immediately get started once you have been
-assigned a piece of work. Do this right away.
+Make sure you are ready to immediately get started before you claim any piece of
+work.
- Setup your [development environment][development guide].
-- Look at code:
+ - This is hard. Sorry. We want to make this easier.
+- Familiarize yourself with the code:
- [kubernetes/cmd/kubectl] is the entry point
- [kubernetes/pkg/kubectl] is the implementation
- Look at how some of the other commands are implemented
-- Add a new command to do something simple:
+- Try adding a new command to do something simple:
- Add `kubectl hello-world`: print "Hello World"
- Add `kubectl hello-kubernetes -f file`: Print "Hello \<kind of resource\> \<name of resource\>"
- Add `kubectl hello-kubernetes type/name`: Print "Hello \<kind of resource\> \<name of resource\> \<creation time\>"
-### Agree to contribution rules
+**Note:** Consider publishing your command to a fork so a maintainer can look at it.
-Follow the [CLA signup instructions](../CLA.md).
+## Your first contribution
### Adopt an issue
-New contributors can try the following to work on an existing [bug] or [approved design][design repo]:
+Pick up an [issue] from the backlog by commenting on the issue that you would like to work on it.
+Be sure to mention the author of the issue as well as the SIG cli members `@seans3` and `@mengqiy`.
+
+Using the following comment will make it easier for us to search for issues folks want to have
+assigned to them:
+
+`cc @seans3 @mengqiy I would like to take this`
+
+**Note:** Don't do this unless you will start work on the issue within a few days of being assigned.
+
+**Note:** GitHub only allows issues to be assigned to GitHub accounts that are part
+of the organization or listed as outside collaborators. In order to become an outside
+collaborator, contributors have to have shown commitment to the issue by performing some
+work. Once you have begun, reach out to the issue author and show them your progress
+(e.g. in a fork).
+
+**Picking your first issue**
+
+For your first issue, we recommend picking an issue labeled with "good first issue" from the [issue] backlog.
+
+**Picking the right size of issue**
+
+Be sure to pick up an issue that is appropriate to the time you are able to commit.
+We recommend first time contributors start with small or medium issues.
+
+Following are very rough estimates, but are best effort only. They assume you have a
+development environment already set up and are able to build a kubectl binary and
+use it against a cluster. These estimates assume some knowledge of Go.
+
+- `size/S`
+ - 4-10 hours
+- `size/M`
+ - 10-20 hours
+- `size/L`
+ - 20+ hours
+- `size/XL`
+ - 40-80 hours
+
+Meta/Umbrella issues may have multiple components. By signing up for a Meta/Umbrella issue,
+you are only committing to one piece of it. Let the issue author know when you have completed
+some piece of it, and if you would like to continue working on it, or have it unassigned.
+
+**Picking the right kind of issue**
+
+Guided issues have a *type* defining the type of work to be done. Pick up an
+issue that fits your experience level and interest. Documentation and
+test-coverage issues typically are smaller in scope and easier to complete than
+features and cleanup issues.
+
+- `type/code-cleanup`
+ - Usually some refactoring or small rewrites of code.
+- `type/code-documentation`
+ - Write `doc.go` with package overview and examples or add code comments to document
+ existing types and functions.
+- `type/code-feature`
+ - Usually a new go package / library for some functionality that is requested.
+ Should be encapsulated in its own interfaces with thorough unit tests for the new library.
+- `type/code-test-coverage`
+ - Audit tests for a package. Run coverage tools and also manually look at what functions
+ are missing unit or integration tests. Write tests for these functions.
+
+**Provide periodic status updates**
+
+Once you have requested an issue and it has been accepted, you will be expected
+to provide periodic updates to it. Do update the issue with your status at least every
+week, and publish your work to a fork so the community can see your progress and
+provide early feedback.
+
+If you find the issue is too challenging, time consuming, or you are no longer able to work on it,
+this is perfectly acceptable and please let the issue author know.
+If you like, you may pick up a different issue immediately or sometime in the future.
+
+**Summary**:
+
+- Don't pick up an issue until you are ready to start working on it
+- When you want to pick up an issue, be sure to comment `@seans3` and `@mengqiy`.
+ Expect a response within 2 days.
+- Update the issue every week with your progress so we know it is being actively worked on.
+- There is an expectation that some time will be committed to working on the issue each
+ week until it is completed, or you are blocked on a maintainer.
+
+### Meet the community
+
+Engage with the SIG cli community! Let us know who you are and how things are going!
+
+- Fill out the [about me form] so we know a bit about you and can direct your work accordingly.
+ - **Note:** After filling out the form, reach out via slack or the googlegroup and let us know.
+
+- Message the [cli mentors] googlegroup and let them know you filled out the form
+ and are looking to get started.
- In [slack][slack-messages] (signup [here][slack-signup]),
- @mention a [lead][leads] and ask if there are any issues you could pick up.
- Leads can recommend issues that have enough priority to receive PR review bandwidth.
- We also maintain a list of [CLI issues where help is wanted][cli_help_wanted_issues].
- Most of them are not very complex, so that's probably a good starting point.
-- Send an email to the _kubernetes-sig-cli@googlegroups.com_ [group]
-
- > Subject: New sig-cli contributor _${yourName}_
- >
- > Body: Hello, my name is _${yourName}_. I would like to get involved in
- > contributing to the Kubernetes project. I have read all of the
- > user documentation listed on the community contributing page.
- > What should I do next to get started?
-
-- Attend a sig-cli [meeting] and introduce yourself as looking to get started.
-
-### Bug lifecycle
-
-1. An [issue] is filed that
- - includes steps to reproduce the issue including client / server version,
- - mentions `@kubernetes/sig-cli-bugs`.
-2. A [PR] fixing the issue is implemented that
- - __includes unit and test-cmd tests__,
- - incorporates review feedback,
- - description includes `Closes #<Issue Number>` or `Fixes #<Issue Number>`,
- - description or comment @mentions `@kubernetes/sig-cli-pr-reviews`.
-3. Fix appears in the next Kubernetes release!
+ @mention a [lead][leads] and ask if there are any issues you could pick up, or
+ let them know what you are working on.
+
+- Attend a sig-cli [meeting] and introduce yourself and what you are working on.
+
+- The sig-cli [community page] lists sig-cli [leads], channels of [communication],
+and group [meeting] times.
+
+## Information about how Features are developed
+
+Once you have made several contributions, you may want to start developing
+features that you come up with. This section is about how to propose new
+features and get them accepted.
## Feature requests
@@ -92,7 +222,7 @@ the problem that the feature addresses.
Working on a feature without getting approval for the user experience
and software design often results in wasted time and effort due to
-decisions around flag-names, command names, and specific command
+decisions around flag names, command names, and specific command
behavior.
To minimize wasted work and improve communication across efforts,
@@ -112,7 +242,7 @@ any PRs are sent for code review.
- docs are completed,
- feature is designated _alpha_, _beta_ or _GA_.
6. Implement the code per discussion in [bug lifecycle][bug].
-7. Update [kubectl concept docs].
+7. Update [kubectl docs].
8. Wait for your feature to appear in the next Kubernetes release!
@@ -151,7 +281,7 @@ constrained. Community members are free to say
- This is desirable but we need help on these other existing issues before tackling this.
- No, this problem should be solved in another way.
-The proposal can be merged into the [design repo] after [lead][leads]
+The proposal can be merged into the [design repo] after [leads][leads]
approval and discussion as a meeting [agenda] item.
Then coding can begin.
@@ -283,27 +413,27 @@ See the sig-cli [community page] for points of contact and meeting times:
[`PTAL`]: https://en.wiktionary.org/wiki/PTAL
[agenda]: https://docs.google.com/document/d/1r0YElcXt6G5mOWxwZiXgGu_X6he3F--wKwg-9UBc29I/edit
[bug]: #bug-lifecycle
-[communication]: https://github.com/kubernetes/community/tree/master/sig-cli#communication
-[community page]: https://github.com/kubernetes/community/tree/master/sig-cli
+[communication]: /sig-cli#contact
+[community page]: /sig-cli
[design proposal]: #design-proposals
-[design repo]: https://github.com/kubernetes/community/tree/master/contributors/design-proposals/sig-cli
-[design template]: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/sig-cli/template.md
-[development guide]: https://github.com/kubernetes/community/blob/master/contributors/devel/development.md
+[design repo]: /contributors/design-proposals/cli
+[design template]: /contributors/design-proposals/Design_Proposal_TEMPLATE.md
+[development guide]: /contributors/devel/development.md
[existing issue]: #adopt-an-issue
[feature repo]: https://github.com/kubernetes/features
[feature request]: #feature-requests
[feature]: https://github.com/kubernetes/features
[group]: https://groups.google.com/forum/#!forum/kubernetes-sig-cli
-[issue]: https://github.com/kubernetes/kubernetes/issues
-[cli_help_wanted_issues]: https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Aissue+label%3Asig%2Fcli+label%3Ahelp-wanted
-[kubectl concept docs]: https://github.com/kubernetes/kubernetes.github.io/tree/master/docs/concepts/tools/kubectl
-[kubectl docs]: https://kubernetes.io/docs/user-guide/kubectl-overview
-[kubernetes/cmd/kubectl]: https://github.com/kubernetes/kubernetes/tree/master/cmd/kubectl
-[kubernetes/pkg/kubectl]: https://github.com/kubernetes/kubernetes/tree/master/pkg/kubectl
-[leads]: https://github.com/kubernetes/community/tree/master/sig-cli#leads
+[issue]: https://github.com/kubernetes/kubectl/projects/3
+[kubectl docs]: https://kubernetes.io/docs/tutorials/object-management-kubectl/object-management/
+[kubernetes/cmd/kubectl]: https://git.k8s.io/kubernetes/cmd/kubectl
+[kubernetes/pkg/kubectl]: https://git.k8s.io/kubernetes/pkg/kubectl
+[leads]: /sig-cli#leads
[management overview]: https://kubernetes.io/docs/concepts/tools/kubectl/object-management-overview
-[meeting]: https://github.com/kubernetes/community/tree/master/sig-cli#meetings
+[meeting]: /sig-cli#meetings
[release]: #release
[slack-messages]: https://kubernetes.slack.com/messages/sig-cli
[slack-signup]: http://slack.k8s.io/
-[tests]: https://github.com/kubernetes/community/blob/master/contributors/devel/testing.md
+[tests]: /contributors/devel/testing.md
+[cli mentors]: https://groups.google.com/a/google.com/forum/#!forum/kubernetes-sig-cli-mentors
+[about me form]: https://docs.google.com/forms/d/1ID6DX1abiDr9Z9_sXXC0DsMwuyHb_NeFdB3xeRa4Vf0
diff --git a/sig-cli/OWNERS b/sig-cli/OWNERS
index 9e3894d0..248d3e7c 100644
--- a/sig-cli/OWNERS
+++ b/sig-cli/OWNERS
@@ -1,8 +1,6 @@
reviewers:
- - pwittrock
- - AdoHe
- - fabianofranz
+ - sig-cli-leads
approvers:
- - pwittrock
- - AdoHe
- - fabianofranz
+ - sig-cli-leads
+labels:
+ - sig/cli
diff --git a/sig-cli/README.md b/sig-cli/README.md
index c2196d41..62982c85 100644
--- a/sig-cli/README.md
+++ b/sig-cli/README.md
@@ -4,26 +4,43 @@ This is an autogenerated file!
Please do not edit this file directly, but instead make changes to the
sigs.yaml file in the project root.
-To understand how this file is generated, see generator/README.md.
+To understand how this file is generated, see https://git.k8s.io/community/generator/README.md
-->
# CLI SIG
Covers kubectl and related tools. We focus on the development and standardization of the CLI framework and its dependencies, the establishment of conventions for writing CLI commands, POSIX compliance, and improving the command line tools from a developer and devops user experience and usability perspective.
## Meetings
-* [Wednesdays at 16:00 UTC](https://zoom.us/my/sigcli) (biweekly). [Convert to your timezone](http://www.thetimezoneconverter.com/?t=16:00&tz=UTC).
+* [Wednesdays at 09:00 PT (Pacific Time)](https://zoom.us/my/sigcli) (biweekly). [Convert to your timezone](http://www.thetimezoneconverter.com/?t=09:00&tz=PT%20%28Pacific%20Time%29).
Meeting notes and Agenda can be found [here](https://docs.google.com/document/d/1r0YElcXt6G5mOWxwZiXgGu_X6he3F--wKwg-9UBc29I/edit?usp=sharing).
-Meeting recordings can be found [here](https://www.youtube.com/watch?v=X29sffrQJU4&list=PL69nYSiGNLP28HaTzSlFe6RJVxpFmbUvF).
+Meeting recordings can be found [here](https://www.youtube.com/playlist?list=PL69nYSiGNLP28HaTzSlFe6RJVxpFmbUvF).
## Leads
-* [Fabiano Franz](https://github.com/fabianofranz), Red Hat
-* [Phillip Wittrock](https://github.com/pwittrock), Google
-* [Tony Ado](https://github.com/AdoHe), Alibaba
+* Fabiano Franz (**[@fabianofranz](https://github.com/fabianofranz)**), Red Hat
+* Phillip Wittrock (**[@pwittrock](https://github.com/pwittrock)**), Google
+* Tony Ado (**[@AdoHe](https://github.com/AdoHe)**), Alibaba
## Contact
* [Slack](https://kubernetes.slack.com/messages/sig-cli)
* [Mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-cli)
+* [Open Community Issues/PRs](https://github.com/kubernetes/community/labels/sig%2Fcli)
+
+## GitHub Teams
+
+The below teams can be mentioned on issues and PRs in order to get attention from the right people.
+Note that the links to display team membership will only work if you are a member of the org.
+
+| Team Name | Details | Description |
+| --------- |:-------:| ----------- |
+| @kubernetes/sig-cli-api-reviews | [link](https://github.com/orgs/kubernetes/teams/sig-cli-api-reviews) | API Changes and Reviews |
+| @kubernetes/sig-cli-bugs | [link](https://github.com/orgs/kubernetes/teams/sig-cli-bugs) | Bug Triage and Troubleshooting |
+| @kubernetes/sig-cli-feature-requests | [link](https://github.com/orgs/kubernetes/teams/sig-cli-feature-requests) | Feature Requests |
+| @kubernetes/sig-cli-maintainers | [link](https://github.com/orgs/kubernetes/teams/sig-cli-maintainers) | CLI Maintainers |
+| @kubernetes/sig-cli-misc | [link](https://github.com/orgs/kubernetes/teams/sig-cli-misc) | General Discussion |
+| @kubernetes/sig-cli-pr-reviews | [link](https://github.com/orgs/kubernetes/teams/sig-cli-pr-reviews) | PR Reviews |
+| @kubernetes/sig-cli-proposals | [link](https://github.com/orgs/kubernetes/teams/sig-cli-proposals) | Design Proposals |
+| @kubernetes/sig-cli-test-failures | [link](https://github.com/orgs/kubernetes/teams/sig-cli-test-failures) | Test Failures and Triage |
<!-- BEGIN CUSTOM CONTENT -->
diff --git a/sig-cli/migrated-from-wiki/README.md b/sig-cli/migrated-from-wiki/README.md
new file mode 100644
index 00000000..c34a79fe
--- /dev/null
+++ b/sig-cli/migrated-from-wiki/README.md
@@ -0,0 +1 @@
+The content in here has been migrated from https://github.com/kubernetes/community/wiki and is likely severely out of date. Please contact this SIG if you have questions or ideas about where this content should go.
diff --git a/sig-cli/migrated-from-wiki/contributor-guide-building-your-kubernetes-tool.md b/sig-cli/migrated-from-wiki/contributor-guide-building-your-kubernetes-tool.md
new file mode 100644
index 00000000..bfcd4233
--- /dev/null
+++ b/sig-cli/migrated-from-wiki/contributor-guide-building-your-kubernetes-tool.md
@@ -0,0 +1,64 @@
+# Client Tool Release Publishing Guidelines
+
+Projects should publish releases for client side tools.
+
+## Go Projects
+
+### Static Linking
+
+See [Go executables are statically linked, except when they are not](http://matthewkwilliams.com/index.php/2014/09/28/go-executables-are-statically-linked-except-when-they-are-not/).
+
+
+- How to compile a statically linked binary: `go` file must be compiled without cgo support.
+
+```sh
+# Disable cgo
+export CGO_ENABLED=0
+```
+
+- How to check if a binary is statically linked
+
+```sh
+# List dynamic dependencies (shared libraries):
+# 1. if it's dynamically linked, you'll see
+$ ldd <your_tool>
+ linux-vdso.so.1 => (0x00007ffe937ea000)
+ libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0a7dae5000)
+ libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0a7d720000)
+ /lib64/ld-linux-x86-64.so.2 (0x00007f0a7dd03000)
+# 2. if it's statically linked, you'll see
+$ ldd <your_tool>
+ not a dynamic executable
+
+# Recognize the type of data in a file
+# 1. if it's dynamically linked, you'll see
+$ file <your_tool>
+/usr/local/your_tool: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=86c6d2ff21297a06cc7319244f35e2671612beae, not stripped
+# 2. if it's statically linked, you'll see
+$ file <your_tool>
+/usr/local/your_tool: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
+```
+
+### Targets
+Build your release binary for the following targets:
+
+- darwin-amd64
+- linux-386
+- linux-amd64
+- linux-armv6l
+- linux-ppc64le
+- windows-amd64
+
+### Packaging
+
+Package binaries into a tar.gz file and make available on GitHub releases page.
+
+# Service Side Release Publishing Guidelines
+
+### Packaging
+
+Server side programs should be packaged into container images. Stateless services should be run as Deployments (as opposed to Replication Controllers).
+
+# Documentation Guidelines
+
+TODO: Write this
diff --git a/sig-cli/migrated-from-wiki/roadmap-kubectl.md b/sig-cli/migrated-from-wiki/roadmap-kubectl.md
new file mode 100644
index 00000000..4fbf7a84
--- /dev/null
+++ b/sig-cli/migrated-from-wiki/roadmap-kubectl.md
@@ -0,0 +1,112 @@
+# kubectl roadmap
+
+`kubectl` is the Kubernetes CLI.
+
+If you'd like to contribute, please read the [conventions](/contributors/devel/kubectl-conventions.md) and familiarize yourself with [existing commands](http://kubernetes.io/docs/user-guide/kubectl-overview/).
+
+**Owner:** @kubernetes/kubectl
+
+**Label:** [component/kubectl](https://github.com/kubernetes/kubernetes/labels/component%2Fkubectl)
+
+**Motivation:** [kubectl brainstorm](https://docs.google.com/document/d/1tPrTL5Fi8BjlIK_XwNz-W260ll2ZYflrdbtnwE1PQoE/edit?pli=1#)
+
+### Add new commands / subcommands / flags
+* [Simplify support for multiple files](https://github.com/kubernetes/kubernetes/issues/24649)
+ * Manifest that can specify multiple files / http(s) URLs
+ * [Default manifest manifest](https://github.com/kubernetes/kubernetes/issues/3268) (ala Dockerfile or Makefile)
+ * Unpack archive (tgz, zip) and then invoke “-f” on that directory
+ * URL shortening via default URL prefix
+* [Imperative `set` commands](https://github.com/kubernetes/kubernetes/issues/21648)
+* [`view` commands](https://github.com/kubernetes/kubernetes/issues/29679)
+* [Support `run --edit` and `create --edit`](https://github.com/kubernetes/kubernetes/issues/18064)
+* [More `kubectl create <sub-command>`](https://github.com/kubernetes/kubernetes/issues/25382)
+* [Support `--dry-run` for every mutation](https://github.com/kubernetes/kubernetes/issues/11488)
+* kubectl commands aliases
+ * [Allow user defined aliases for resources and commands](https://github.com/kubernetes/kubernetes/issues/18023)
+ * [Suggest possibly matching kubectl commands](https://github.com/kubernetes/kubernetes/issues/25180)
+* Improve `kubectl run`
+ * Make generated objects more discoverable: suggest the user to do `kubectl get all` to see what's generated ([extend `all` to more resources](https://github.com/kubernetes/kubernetes/issues/22337))
+ * [Make it optional to specify name (auto generate name from image)](https://github.com/kubernetes/kubernetes/issues/2643)
+ * [Make `kubectl run --restart=Never` creates Pods (instead of Jobs)](https://github.com/kubernetes/kubernetes/issues/24533)
+* Create commands/flags for common get + template patterns (e.g. getting service IP address)
+* [Implement `kubectl cp`](https://github.com/kubernetes/kubernetes/issues/13776) to copy files between containers and local for debugging
+* `kubectl rollout`
+ * [Add `kubectl rollout start` to show how to start a rollout](https://github.com/kubernetes/kubernetes/issues/25142)
+ * [Add `kubectl rollout status`](https://github.com/kubernetes/kubernetes/issues/25235)
+* Scripting support
+ * [wait](https://github.com/kubernetes/kubernetes/issues/1899)
+ * [watch / IFTTT](https://github.com/kubernetes/kubernetes/issues/5164)
+* [Add `kubectl top`](https://github.com/kubernetes/kubernetes/issues/11382) which lists resource metrics.
+
+### Alternative interfaces
+
+* Create a terminal based console, ref [docker console](https://github.com/dustinlacewell/console) ([video](https://www.youtube.com/watch?v=wSzZxbDYgtY))
+* [Add `kubectl sh`, an interactive shell](https://github.com/kubernetes/kubernetes/issues/25385), or make a kubectlshell in contrib and make bash completion part of it (ref [pythonshell](https://gist.github.com/bprashanth/9a3c8dfbba443698ddd960b8087107bf))
+* Think about how/whether to invoke generation commands such as `kubectl run` or `kubectl create configmap` in bulk, declaratively, such as part of the `apply` flow.
+* [ChatOps](https://www.pagerduty.com/blog/what-is-chatops/) bot -- such as [kubebot](https://github.com/harbur/kubebot) (add to tools documentation)
+
+### Improve help / error messages / output
+* Make kubectl functionality more discoverable
+ * [Overhaul kubectl help](https://github.com/kubernetes/kubernetes/issues/16089)
+ * ~~[Print "Usage" at the bottom](https://github.com/kubernetes/kubernetes/issues/7496)~~
+ * Add keywords (critical words) to help
+ * List valid resources for each command
+ * Make short description of each command more concrete; use the same language for each command
+ * Link to docs ([kubernetes.io/docs](http://kubernetes.io/docs))
+ * [Update `kubectl help` descriptions and examples from docs](https://github.com/kubernetes/kubernetes/issues/25290)
+ * Embed formatting and post-process for different media (terminal, man, github, etc.)
+ * [Suppress/hide global flags](https://github.com/kubernetes/kubernetes/issues/23402)
+ * ~~[Categorize kubectl commands or list them in alphabetical order]~~(https://github.com/kubernetes/kubernetes/issues/21585)
+ * [Implement search in `kubectl help`](https://github.com/kubernetes/kubernetes/issues/25234)
+ * [Suggest next/alternative commands](https://github.com/kubernetes/kubernetes/issues/19736)
+ * [Add a verbosity flag that explains all the things that it's doing](https://github.com/kubernetes/kubernetes/issues/25272)
+ * ~~[Fix incomplete kubectl bash completion](https://github.com/kubernetes/kubernetes/issues/25287)~~
+* Improve error messages (note that not all of these problems are in kubectl itself)
+ * [when kubectl doesn’t know what cluster to talk to](https://github.com/kubernetes/kubernetes/issues/24420)
+ * ~~[non-existent namespace produces obscure error](https://github.com/kubernetes/kubernetes/issues/15542)~~
+ * [line numbers with validation errors](https://github.com/kubernetes/kubernetes/issues/12231)
+ * [invalid lines with validation errors](https://github.com/kubernetes/kubernetes/issues/6132)
+ * [malformed inputs produce misleading error messages](https://github.com/kubernetes/kubernetes/issues/9012)
+ * [non-yaml/json produces obscure error](https://github.com/kubernetes/kubernetes/issues/8838)
+ * [error messages for non-existent groups/types](https://github.com/kubernetes/kubernetes/issues/19530)
+ * Suggest resource type when not provided (e.g. `kubectl get my-pod-name` should suggest running `kubectl get pod/my-pod-name`)
+ * [errors for other non-existent resources](https://github.com/kubernetes/kubernetes/issues/6703)
+ * [lack of apiVersion/kind produces confusing error messages](https://github.com/kubernetes/kubernetes/issues/6439)
+ * [update validation errors could be more informative](https://github.com/kubernetes/kubernetes/issues/8668)
+ * [field validation errors could be more helpful](https://github.com/kubernetes/kubernetes/issues/10534)
+ * [field errors should use json field names](https://github.com/kubernetes/kubernetes/issues/3084)
+ * [clearer error for bad image/registry](https://github.com/kubernetes/kubernetes/issues/7960)
+ * [no error for illegal scale](https://github.com/kubernetes/kubernetes/issues/11148)
+ * [deletion timeout doesn't provide any details](https://github.com/kubernetes/kubernetes/issues/19427)
+ * [service creation timeout doesn't provide any details](https://github.com/kubernetes/kubernetes/issues/4860)
+ * [create secret with invalid data has obscure error message](https://github.com/kubernetes/kubernetes/issues/10309)
+ * [--all-namespaces error is unclear](https://github.com/kubernetes/kubernetes/issues/15834)
+ * [exec has unclear errors](https://github.com/kubernetes/kubernetes/issues/9944)
+ * [logs has misleading errors](https://github.com/kubernetes/kubernetes/issues/6376)
+ * [improve error reporting by adding URLs](https://github.com/kubernetes/kubernetes/issues/5551)
+ * Improve jsonpath / gotemplate error messages (it's tricky to get the path just right)
+ * [error message for user with no permissions is extremely cryptic](https://github.com/kubernetes/kubernetes/issues/26909)
+* [Cleanup `kubectl get/describe` output](https://github.com/kubernetes/kubernetes/issues/20941)
+ * [Clarify kubectl get/describe service output](https://github.com/kubernetes/kubernetes/issues/22702)
+* [Define and document command conventions for users](https://github.com/kubernetes/kubernetes/issues/25388)
+
+### Bug fix
+* Fix [apply](https://github.com/kubernetes/kubernetes/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Acomponent%2Fkubectl+label%3Akind%2Fbug+apply), [edit](https://github.com/kubernetes/kubernetes/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Acomponent%2Fkubectl+label%3Akind%2Fbug+edit), and [validate](https://github.com/kubernetes/kubernetes/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Acomponent%2Fkubectl+label%3Akind%2Fbug+validate) bugs
+
+### Installation / Release
+* `gcloud` should enable kubectl bash completion when installing `kubectl`
+* [Pipe-to-sh to install kubectl](https://github.com/kubernetes/kubernetes/issues/25386)
+* [Static build of kubectl for containers](https://github.com/kubernetes/kubernetes/issues/23708) ([we have it](https://git.k8s.io/kubernetes/examples/kubectl-container), but it's not part of the release)
+
+### Others
+* [Move functionality to server](https://github.com/kubernetes/kubernetes/issues/12143)
+* [Eliminate round-trip conversion of API objects in kubectl](https://github.com/kubernetes/kubernetes/issues/3955)
+* [Move preferences out of kubeconfig](https://github.com/kubernetes/kubernetes/issues/10693)
+* And then add more preferences
+ * Enable/disable explanatory mode (see [kploy output](http://kubernetes.sh/kploy/))
+ * Permanently disable warnings once displayed
+ * Default labels as columns
+ * Default `--record`, `--save-config`, etc.
+* [Overhaul cluster-related commands](https://github.com/kubernetes/kubernetes/issues/20605)
+ * [Delete cluster from `kubectl config`](https://github.com/kubernetes/kubernetes/issues/25601)
+* ~~["kubectl-only Ubernetes": enabe kubectl to target any one of many clusters](https://github.com/kubernetes/kubernetes/issues/23492)~~
diff --git a/sig-cli/outreachy.md b/sig-cli/outreachy.md
new file mode 100644
index 00000000..89f8cc40
--- /dev/null
+++ b/sig-cli/outreachy.md
@@ -0,0 +1,63 @@
+# Outreachy
+
+Kubernetes, specifically the SIG-CLI, is happy to announce our participation in the Outreachy program, running from December 2017 to March 2018.
+Please see the [main program page](https://www.outreachy.org/) for the general information about the program,
+such as its purpose, timeline, eligibility requirements, and how to apply.
+
+**Schedule**
+
+* October 23: application deadline for other Outreachy communities
+* October 30: application deadline for Kubernetes Outreachy applications
+* November 9: selection decisions are made
+* December 5 - March 5: internship
+
+## What is Kubernetes?
+Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
+It groups containers that make up an application into logical units for easy management and discovery. Kubernetes builds upon 15 years of experience of running production workloads at Google, combined with best-of-breed ideas and practices from the community.
+
+[kubernetes.io](https://kubernetes.io/)
+
+## What are SIGs / What is SIG-CLI?
+Kubernetes is a set of projects, each shepherded by a special interest group (SIG). To get a grasp of the projects that we work on, check out the complete [list of SIGs](/sig-list.md).
+
+SIG-CLI Covers kubectl and related tools. We focus on the development and standardization of the CLI framework and its dependencies, the establishment of conventions for writing CLI commands, POSIX compliance, and improving the command line tools from a developer and devops user experience and usability perspective.
+
+**Communication:**
+
+SIG-CLI Mailing List - kubernetes-sig-cli@googlegroups.com
+Slack - http://slack.k8s.io/ for invite; #sig-cli channel
+
+**Mentors**
+
+Philip Wittrock - pwittrock@google.com
+Similar to contacting the coordinators, the mentors can be contacted at any time either by sending messages to the mailing lists or slack channels.
+
+## Contribute
+
+As part of the application process, the Outreachy program recommends that candidates make small contributions to the project they intend to apply for.
+To start working on the project, make sure to fill out the CLA and check if you have the right environment with this guide. The README in the [community repo](https://github.com/kubernetes/community) details these things and more.
+
+Check out these specific resources for how to contribute to CLI:
+* SIG-CLI - [How to Contribute](/sig-cli/CONTRIBUTING.md)
+* Filter issue search for: `is:open is:issue label:sig/cli label:"help wanted"`
+* Hand picked issues for outreachy applications: https://github.com/kubernetes/kubectl/projects/3
+
+## Available tasks
+
+Develop `kubectl create` commands to make it easy to create Kubernetes resources
+Develop `kubectl set` commands to modify Kubernetes resources
+Required Skills: Go
+Mentor: Phillip Wittrock
+
+**Coordination:**
+
+* Paris Pittman - parispittman@google.com
+* Josh Berkus
+* Elsie Phillips
+
+The coordinators can be contacted at any time. The easiest way is to send a slack message.
+
+Do you have an idea for a task that is suitable for this program? Contact the mentors or coordinators! Or even better, volunteer for mentoring an intern during the work on your idea!
+
+## Code of Conduct
+Kubernetes abides by the CNCF [Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).