toc/projects/kube-rs/2022-kube-rs-annual.md

5.9 KiB

kube-rs 2022 Annual Review

This is a Kubernetes ToC Annual Review for the kube-rs project for 2022.

Table of Contents

Background

kube-rs is a suite of Rust libraries for Kubernetes for building controllers/operators, or just in general interacting with the apiserver.

kube focuses on fulfilling a similar role to client-go, kubebuilder, and controller-runtime in the go ecosystem.

kube was accepted as a CNCF Sandbox project on November, 2021.

DevStats

kube-rs DevStats page shows the weekly number of newly opened pull requests on the main git repo.

Contribution chart for 2022 shows a slight upward trend with steady progress.

The amount of maintainers have stayed the same, but the amount of changes from external contributors adopting the libraries have increased. 86 contributors in the last year which is the highest so far: https://kubers.devstats.cncf.io/d/66/developer-activity-counts-by-companies?orgId=1&var-period_name=Last%20year&var-metric=contributions&var-repogroup_name=All&var-country_name=All&var-companies=All

~30 different companies contributing last year: https://kubers.devstats.cncf.io/d/5/companies-table?orgId=1&var-period_name=Last%20year&var-metric=contributions

Stars / stats generally going up: https://kubers.devstats.cncf.io/d/3/stars-and-forks-by-repository?orgId=1&from=1641056400000&to=1672592399000&var-period=w Main repo went from ~1100 stars to ~1600 stars (now at ~2200).

Maintainers

There are three maintainers working on the project.

Maintainer GitHub ID Affiliation
Eirik Albrigtsen @clux Unaffiliated
Natalie Klestrup Röijezon @nightkr Stackable
Kaz Yoshihara @kazk Andela

Also on https://kube.rs/maintainers/

Adoption

kube-rs is widely used in production by the a considerable number of companies that we know about. Some are listed in https://kube.rs/adopters/ And some recent changes to adopters can be seen in https://github.com/kube-rs/website/commits/main/docs/adopters.md

Note that since we are series of libraries there are big dark numbers here. We see 4000 repo dependencies on github, 75 package dependencies, as well as 68 reverse cargo dependencies (published).

Latest Achievements

  • Support for Kubernetes metadata api
  • Kubernetes Stable Client Badge
  • Lots of new documentation on kube.rs
  • Creation of go->rust crd conversion tool (kopium)
  • Adoption from major projects such as Linkerd
  • Lots of positive PR from KubeCon 1, 2 and more 3

Project Goals

While we have managed to stabilise some interfaces (like the client), we do want to release a 1.0 of the crate suite, and provide full documentation for controller writing, and achieve parity for a few more common cases.

The few big outstanding projects that we want to resolve pre-1.0 are;

  • Stream sharing in kube::runtime
  • Protobufs support via k8s-pb
  • Client usage without Api (could wait)

We are hoping that the crate suite starts to stand on its own without too much feature work required beyond the main ones listed. It is already fulfilling its job as a client api and operator framework for many companies, and hope that smaller gaps and issues will close over time. As maintainers inevitably shift jobs, documentation efforts are also being focused so that future maintainers can be onboarded easily.

CNCF Membership

CNCF staff has been very responsive when we had enquiries in the past. We do not require any specific help at this stage.

Incubation

We have numerous adopters building Kubernetes controllers with kube-rs in production (including linkerd), and most of users proposals are generally considered/refined and make it into kube to form a steady stream of (monthly or bi-monthly) releases.

We have a well defined release process and versioning (with compatibilities defined against both Kubernetes and Rust), a security policy, and a reference implementation of a rust controller.

We feel we probably satisfy the requirements for the incubating stage, depending on the interpretations of the sizes required for our scope.