July 28, 2017·4 min read·engineeringkubernetescommunitygovernance

Kubernetes distributes technical leadership through SIGs

The second-anniversary retrospective describes a project whose growth depends on distributed leadership. Cluster lifecycle work and the 1.6 release process provide concrete examples of what that means.

Kubernetes' second-anniversary retrospective places Special Interest Groups at the center of its community. That is a useful choice for a project whose users encounter its organization through technical decisions. A cluster bootstrap problem needs maintainers who can change both installation tools and Kubernetes itself. A release needs people who can coordinate changes across those areas. Growth creates more of that work as well as more people who might do it.

In the July 28 retrospective, Sarah Novotny describes SIGs as groups of contributors from different organizations with a shared technical interest. They develop proposals and designs and participate in release updates. Their organizational purpose is to distribute leadership as the project grows, giving technical subjects places where work can proceed across company boundaries.

I value this part of Kubernetes because the reliability of its machinery also depends on the way people maintain it. A declarative API still needs maintainers who agree on its behavior and can carry a change through a release. The retrospective is interesting where it connects participation to those responsibilities.

Growth figures describe activity with different units

The retrospective reports more than 2,611 contributors and 50,685 commits over the preceding twelve months. It also places Kubernetes among GitHub's top five projects by unique contributing developers. Those figures describe contribution activity, not a measurement of the software's correctness or a count of production installations.

The same article reports more than 322 Kubernetes Meetup groups with 104,195 members, compared with 130 groups at the first anniversary. Meetup membership is another kind of participation. It can help users learn and meet contributors without implying that every member maintains code. Keeping those categories distinct makes the growth account more informative.

The list of companies using or contributing to Kubernetes similarly demonstrates breadth without explaining each deployment. The retrospective names production users and contributing vendors, but the architectural significance comes from how the project organizes work among them. A company name cannot substitute for a description of an integration or a maintenance responsibility.

Cluster lifecycle work shows the organizational mechanism

The January SIG Cluster Lifecycle account gives a concrete example. The SIG maintains kubeadm and kops and works on common installation and management problems. Its scope includes changes to Kubernetes itself when those changes simplify bootstrap. The group therefore has a subject that cuts across a single executable's repository boundary.

Kubeadm and kops have distinct responsibilities within that work. Kubeadm handles bootstrap and aims to provide reusable phases. Kops handles the broader cluster lifecycle, including provisioning resources and eventually deleting the cluster. The January account proposes that kops adopt more kubeadm functionality over time so shared bootstrap logic can be maintained in one place.

That division is an example of distributed leadership producing an engineering boundary. The group can identify duplicated work and arrange for tools to share it while preserving their different scopes. Its proposed certificate-phase interface also accommodates organizations with their own certificate distribution process. Those are specific design decisions arising from the range of users participating in the same technical area.

The account describes weekly meetings and public Slack channels as places to discuss the work. Participation has an entry point connected to an identifiable responsibility. Someone interested in bootstrap security can find the group discussing that problem instead of treating the whole Kubernetes project as an undifferentiated body of maintainers.

Release leadership requires transferable knowledge

The Kubernetes 1.6 release announcement documents another practical aspect of leadership distribution. It identifies Dan Gillespie of CoreOS as the first non-Google release manager. More importantly, it describes the release team's effort to document tribal knowledge and identify tools and processes that still required special permissions.

Those details explain why changing who leads a release is more than changing a name. A release process is difficult to transfer if necessary procedures are undocumented or accessible only to a small group. The work described in the announcement makes those dependencies visible so the project can address them.

A contributor can understand the source and still be unable to perform a release operation if the required access or procedure is unavailable. Documenting that distinction is part of making leadership repeatable. The release team's contribution includes improving the process through which later contributors can take responsibility, as well as producing the current release.

Technical continuity depends on defined responsibilities

The anniversary article's timeline includes kubeadm's launch and the 1.6 and 1.7 releases. These events cover different kinds of work, including installation, security and stateful application management. SIGs provide continuity within technical areas while release teams assemble changes into a version users can adopt.

My interest in the community's scale is strongest where it produces that continuity. The cluster lifecycle account names the tools and problems its SIG owns. The 1.6 account identifies release knowledge that needs to become transferable. Those examples give operational meaning to the retrospective's claim that Kubernetes distributes leadership, with responsibilities that contributors can find and procedures that new leaders can learn.