README.md
1# Utils
2
3[![Build Status]](https://travis-ci.org/kubernetes/utils) [![GoDoc](https://godoc.org/k8s.io/utils?status.svg)](https://godoc.org/k8s.io/utils)
4
5A set of Go libraries that provide low-level, kubernetes-independent packages
6supplementing the [Go standard libs].
7
8## Purpose
9
10As Kubernetes grows and spins functionality out of its [core] and into
11cooperating repositories like [apiserver], [kubectl], [kubeadm], etc., the need
12arises for leaf repositories to house shared code and avoid cycles in repository
13relationships.
14
15This repository is intended to hold shared utilities with _no Kubernetes
16dependencies_ that may be of interest to any Go project. See these [instructions
17for moving] an existing package to this repository.
18
19## Criteria for adding code here
20
21- Used by multiple Kubernetes repositories.
22
23- Complex enough to be worth vendoring, rather than copying (e.g. not 5 LOC).
24
25- Can be fully exercised by unit tests (e.g. no dependencies on kernels).
26
27- Has full unit test coverage.
28
29- Stable, or backward compatible, API, with complete godocs.
30
31- Go tools compliant (`go get`, `go test`, etc.).
32
33- Very few (ideally zero) external dependencies.
34
35- _No dependencies on any other Kubernetes repository_.
36
37[Build Status]: https://travis-ci.org/kubernetes/utils.svg?branch=master
38[Go standard libs]: https://golang.org/pkg/#stdlib
39[api]: https://github.com/kubernetes/api
40[apiserver]: https://github.com/kubernetes/apiserver
41[core]: https://github.com/kubernetes/kubernetes
42[ingress]: https://github.com/kubernetes/ingress
43[kubeadm]: https://github.com/kubernetes/kubeadm
44[kubectl]: https://github.com/kubernetes/kubectl
45[instructions for moving]: ./HOWTOMOVE.md
46
47## Contributing
48
49Please see [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on how to contribute.
50