Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various governance clarifications #1994

Merged
merged 3 commits into from
Oct 8, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 23 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,27 @@ issues, mailing lists, conferences, etc.

For more specific topics, try a SIG.

## SIGs
## Governance

Kubernetes is a set of subprojects, each shepherded by a Special Interest Group (SIG).
Kubernetes has three types of groups that are officially supported:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So -- I'm torn on this and would love advice. In my mind subprojects are a subunit of a SIG. They are scoped and live/die and are governed by the owning SIG. It is up to the SIG to decide how tightly those sub-projects are controlled and what the process for figuring out who has commit permissions on those.

I'm happy to rationalize this and either demote them to be sub-SIG in governance.md or add them here. Let me know what you prefer.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opinion: because they are created and destroyed by the sigs, they should be at a sub-sig level.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but lack of awareness of subprojects leads to attempts to form WGs that should really be subprojects.

I would be fine with a mention under the SIG bullet rather than just below.

Copy link
Contributor

@mattfarina mattfarina Apr 4, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Part of the governance doc should be to communicate it. People often skim docs like this. If we can make it pop for a skimmer that subprojects are owned by SIGs that pop might be useful in communicating it.


A first step to contributing is to pick from the [list of kubernetes SIGs](sig-list.md).
* **Committees** are named sets of people that are chartered to take on sensitive topics.
This group is encouraged to be as open as possible while achieving its mission but, because of the nature of the topics discussed, private communications are allowed.
Examples of committees include the steering committee and things like security or code of conduct.
* **Special Interest Groups (SIGs)** are persistent open groups that focus on a part of the project.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does it mean to be open in membership?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

transparent?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does it mean to be open in membership?

transparent?

An alternative interpretation would be that that self-nomination is sufficient to join (i.e. that there's no new-member vetting process). Perhaps the wording here (and/or in sig-governance.md?) could be updated to make it clear which of those is intended? Do non-lead SIG members have any explicit powers?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right now in the steering committee we are working on guidance/process for the level of "membership" needed to participate in processes like voting for the steering committee. As part of that I don't want to overload the term "membership". I'll reword this to say that anyone is welcome to contribute and participate.

SIGs must have open and transparent proceedings.
Anyone is welcome to participate and contribute provided they follow the Kubernetes Code of Conduct.
The purpose of a SIG is to own and develop a set of **subprojects**.
* **Subprojects** Each SIG can have a set of subprojects.
These are smaller groups that can work independently.
Some subprojects will be part of the main Kubernetes deliverables while others will be more speculative and live in the `kubernetes-sigs` github org.
* **Working Groups** are temporary groups that are formed to address issues that cross SIG boundaries.
Working groups do not own any code or other long term artifacts.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See @philips comment below. Clarify to make it clear that prototypes and proof-of-concept implementations by working groups are in scope and encouraged.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Working groups can report back and act through involved SIGs.

See the [full governance doc](governance.md) for more details on these groups.

A SIG can have its own policy for contribution,
described in a `README` or `CONTRIBUTING` file in the SIG
folder in this repo (e.g. [sig-cli/CONTRIBUTING](sig-cli/CONTRIBUTING.md)),
and its own mailing list, slack channel, etc.
A SIG can have its own policy for contribution, described in a `README` or `CONTRIBUTING` file in the SIG folder in this repo (e.g. [sig-cli/CONTRIBUTING.md](sig-cli/CONTRIBUTING.md)), and its own mailing list, slack channel, etc.

If you want to edit details about a SIG (e.g. its weekly meeting time or its leads),
please follow [these instructions](./generator) that detail how our docs are auto-generated.
Expand All @@ -34,7 +45,11 @@ lead to many relevant technical topics.

## Contribute

The [Contributor Guide](contributors/guide/README.md) provides detailed instructions on how to get your ideas and bug fixes seen and accepted, including:
A first step to contributing is to pick from the [list of kubernetes SIGs](sig-list.md).
Start attending SIG meetings, join the slack channel and subscribe to the mailing list.
SIGs will often have a set of "help wanted" issues that can help new contributors get involved.

The [Contributor Guide](contributors/guide/README.md) provides detailed instruction on how to get your ideas and bug fixes seen and accepted, including:
1. How to [file an issue]
1. How to [find something to work on]
1. How to [open a pull request]
Expand Down
22 changes: 22 additions & 0 deletions committee-steering/governance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ All Kubernetes SIGs must define a charter defining the scope and governance of t
- For minor updates to that only impact issues or areas within the scope of the SIG the SIG Chairs should
facilitate the change.

## SIG Charter approval process

When introducing a SIG charter or modification of a charter the following process should be used.
As part of this we will define roles for the [OARP] process (Owners, Approvers, Reviewers, Participants)

- Identify a small set of Owners from the SIG to drive the changes.
Most typically this will be the SIG chairs.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the process for a new SIG? Presumably it folks proposing the SIG agree upon the chairs / tech leads?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, this process is split between this doc and /sig-governance.md. We should probably rationalize these but that is a bigger change. Advice would be appreciated.

I did change that in this PR too to say that for creating a SIG a set of folks proposing the SIG should work with the Steering Committee to scope it.

- Work with the rest of the SIG in question (Reviewers) to craft the changes.
Make sure to keep the SIG in the loop as discussions progress with the Steering Committee (next step).
Including the SIG mailing list in communications with the steering committee would work for this.
- Work with the steering committee (Approvers) to gain approval.
This can simply be submitting a PR and sending mail to [steering@kubernetes.io].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: the Markdown spec defines an implicit link name shortcut (e.g. [steering@kubernetes.io][]), but leaving the name brackets off entirely seems to be an extention. Are we targetting a specific Markdown flavor here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wking links are at the bottom of the doc (this line is on line 62)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

links are at the bottom of the doc (this line is on line 62)

Right, and those are fine. But the syntax used in this line (withought the trailng []) isn't in the spec. It's the "completely omit" case from the Kramdown spec, but I don't know how portable it is to other Markdown engines.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is fine. We do it elsewhere in the repo.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is already used in this file and I was just following the pattern. If and when we start using the content with a markdown parser that doesn't respect this syntax we can look to fix it. As it is, this is part of the commonmark spec which github users (https://spec.commonmark.org/0.28/#shortcut-reference-link). But the state of "spec" in the markdown world is a disaster and I really don't want to have that argument.

If more substantial changes are desired it is advisable to socialize those before drafting a PR.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd expect the SIG to have consensus before asking the SC to review the changes.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd expect the SIG to have consensus before asking the SC to review the changes.

Or to have deadlocked?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reordered to make it more clear. (pushing soon).

- The steering committee will be looking to ensure the scope of the SIG as represented in the charter is reasonable (and within the scope of Kubernetes) and that processes are fair.
- For large changes alert the rest of the Kubernetes community (Participants) as the scope of the changes becomes clear.
Sending mail to [kubernetes-dev@googlegroups.com] and/or announcing at the community meeting are a good ways to do this.

If there are questions about this process please reach out to the steering committee at [steering@kubernetes.io].

## How to use the templates

SIGs should use [the template][Short Template] as a starting point. This document links to the recommended [SIG Governance][sig-governance] but SIGs may optionally record deviations from these defaults in their charter.
Expand All @@ -41,9 +60,12 @@ The primary goal of the charters is to define the scope of the SIG within Kubern

See [frequently asked questions]

[OARP]: https://stumblingabout.com/tag/oarp/
[Recommendations and requirements]: sig-governance-requirements.md
[sig-governance]: sig-governance.md
[Short Template]: sig-charter-template.md
[frequently asked questions]: FAQ.md
[sigs.yaml]: https://github.com/kubernetes/community/blob/master/sigs.yaml
[sig-architecture example]: ../../sig-architecture/charter.md
[steering@kubernetes.io]: mailto:steering@kubernetes.io
[kubernetes-dev@googlegroups.com]: mailto:kubernetes-dev@googlegroups.com
60 changes: 37 additions & 23 deletions governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ See [community membership]
# Community groups

The project has 4 main types of groups:
1. Special Interest Groups, SIGs
2. Subprojects
3. Working Groups, WGs
4. Committees
* Special Interest Groups, SIGs
* Subprojects
* Working Groups, WGs
* Committees

## SIGs

Expand All @@ -52,8 +52,8 @@ itself. Examples:
* Horizontal: Scalability, Architecture
* Project: Testing, Release, Docs, PM, Contributor Experience

SIGs must have at least one and ideally two SIG leads at any given
time. SIG leads are intended to be organizers and facilitators,
SIGs must have at least one and ideally two SIG chairs at any given
time. SIG chairs are intended to be organizers and facilitators,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only SIG with multiple chairs/leads from the same company is SIG VMWare. The rest, with multiple chairs, are from differing companies (see the sig list). When it comes to community membership we have a sponsor requirement of:

Sponsors must be from multiple member companies to demonstrate integration across community.

For SIG Chairs do we want something similar?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mattfarina I don't think it's a problem unless the sig feels it's a problem.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going to leave this to another update to keep this PR from sprawling. I was just fixing s/leads/chairs/ here. There are concerns here around how we curate voting members for the steering committee that we are actively working through now. This is part of that hairball.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding the vmware SIG, the intent is that we will actively seek a non vmware employee who is willing and able to assist in SIG leadership roles and responsibilities. The goal is to ensure that this SIG is open to all interested parties. The initial leadership composition is a short term artifact of bootstrapping the SIG. Until, and even after diversity is achieved, the SIG intends to actively engage in recruitment to include users, partners and any others interested.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most of the provider-specific SIGs are likely to have chairs all from the same organization. That will be resolved when we unify the provider SIGs into a single SIG.

I think it's more important for each SIG to have at least 2 chairs -- I think that is a must. Having chairs from multiple organizations is preferred, but I think impractical to make a hard requirement.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that having chairs from multiple companies/organizations should be very strongly encouraged, and that single-company groups of chairs should be the exception, and clearly justified when this is required for practical reasons.

responsible for the operation of the SIG and for communication and
coordination with the other SIGs, the Steering Committee, and the
broader community.
Expand All @@ -62,7 +62,8 @@ Each SIG must have a charter that specifies its scope (topics,
subsystems, code repos and directories), responsibilities, areas of
authority, how members and roles of authority/leadership are
selected/granted, how decisions are made, and how conflicts are
resolved. A [short template] for intra-SIG governance has been
resolved. See the [SIG charter process] for details on how charters are managed.
A [short template] for intra-SIG governance has been
developed in order to simplify SIG creation, and additional templates
are being developed, but SIGs should be relatively free to customize
or change how they operate, within some broad guidelines and
Expand All @@ -79,7 +80,7 @@ community.
See [sig governance] for more details about current SIG operating
mechanics, such as mailing lists, meeting times, etc.

## Subprojects
### Subprojects

Specific work efforts within SIGs are divided into **subprojects**.
Every part of the Kubernetes code and documentation must be owned by
Expand All @@ -106,15 +107,28 @@ This is the purpose of Working Groups (WG). The intent is to make
Working Groups relatively easy to create and to deprecate, once
inactive.

To propose a new working group, first find a SIG to sponsor the group.
Working groups do not own any code or subprojects. Instead, they are a place for
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we kept getting hung up on this during the WG discussion. I think everyone agreed working groups can create and prototype. Just that the code landing in Kubernetes is contingent on SIG/subproject approval. "own any code" is confusing in this meaning.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. I think that this needs to be addressed further up in the doc too.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about:

“Since WG are intended to have a definite lifetime, to prevent orphaned code at the dissolution of a WG all code in Kubernetes must have a SIG to own and maintain it. The sponsoring SIGs for a WG are expected to own and manage the code created for Kubernetes by a WG, and have authority on whether code created in a WG should become part of Kubernetes”

Or similar?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps a bit wordy, but otherwise fine. It can be word-smithed in a followup PR, IMO.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

people to discuss topics that cross SIG boundaries.

Working groups are primarily used to facilitate topics of discussion that are in
scope for Kubernetes but that cross SIG lines. If a set of folks in the
community want to get together and discuss a topic, they can do so without
forming a Working Group. As a community we will be looking for other ways to
highlight and encourage a larger ecosystem (with things like slack channels)
without offering any official endorsement.

To propose a new working group, first find a SIG to sponsor the group.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that WG's are intended to cross SIGs, I think that multiple sigs should sponsor. If only one SIG is in support of the WG, it can simply live in the SIG with all other discussions and/or sub-projects there.

Next, send a proposal to kubernetes-dev@googlegroups.com and also include
any potentially interested SIGs. Wait for public comment. If there's
enough interest, a new Working Group should be formed.
any potentially interested SIGs. Wait for public comment. If there's
enough interest, a new Working Group should be formed.

Create a new mailing list in the from of kubernetes-wg-group-name. Working
Create a new mailing list in the from of kubernetes-wg-group-name. Working
groups typically have a Slack channel as well as regular meetings on zoom.
It's encouraged to keep a clear record of all accomplishments that's publicly
accessible.
accessible. Like SIGs, working group communications and meetings should be
open and be recorded for later viewing.

Working groups are documented in [sigs.yaml](sigs.yaml).

## Committees

Expand All @@ -124,7 +138,7 @@ open and anyone can join, Committees do not have open membership and do
not always operate in the open. The steering committee can form
committees as needed, for bounded or unbounded duration. Membership
of a committee is decided by the steering committee. Like a SIG, a
committee has a charter and a lead, and will report to the steering
committee has a charter and a chair, and will report to the steering
committee periodically, and to the community as makes sense, given the
charter.

Expand All @@ -151,17 +165,15 @@ to its charter, will own the decision. In the case of extended debate
or deadlock, decisions may be escalated to the Steering Committee,
which is expected to be uncommon.

The exact processes and guidelines for such cross-project
communication have yet to be formalized, but when in doubt, use
kubernetes-dev@googlegroups.com and make an announcement at the
community meeting.
The [KEP process] is being developed as a way to facilitate definition, agreement and communication of efforts that cross SIG boundaries.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: the rest of this doc is wrapped at 80 chars

SIGs are encouraged to use this process for larger efforts.
This process is also available for smaller efforts within a SIG.

# Repository guidelines

All repositories under Kubernetes github orgs, such as kubernetes and kubernetes-incubator,
should follow the procedures outlined in the [incubator document](incubator.md). All code projects
use the [Apache License version 2.0](LICENSE). Documentation repositories should use the
[Creative Commons License version 4.0](https://git.k8s.io/website/LICENSE).
All new repositories under Kubernetes github orgs should follow the process outlined in the [kubernetes repository guidelines].

Note that "Kubernetes incubator" process has been deprecated in favor of the new guidelines.

# CLA

Expand All @@ -170,6 +182,8 @@ All contributors must sign the CNCF CLA, as described [here](CLA.md).
[community membership]: /community-membership.md
[sig governance]: /sig-governance.md
[owners]: community-membership.md#subproject-owner
[short template]: committee-steering/governance/sig-charter-template.md
[sig charter process]: committee-steering/governance/README.md
[short template]: committee-steering/governance/sig-governance-template-short.md
[kubernetes repository guidelines]: kubernetes-repositories.md

[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/governance.md?pixel)]()
19 changes: 11 additions & 8 deletions sig-governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@

In order to standardize Special Interest Group efforts, create maximum transparency, and route contributors to the appropriate SIG, SIGs should follow the guidelines stated below:

* Create a charter and have it approved according to the [SIG charter process]
* Meet regularly, at least for 30 minutes every 3 weeks, except November and December
* Keep up-to-date meeting notes, linked from the SIG's page in the community repo
* Announce meeting agenda and minutes after each meeting, on their SIG mailing list
* Record SIG meeting and make it publicly available
* Ensure the SIG's mailing list and slack channel are archived
* Report activity in the weekly community meeting at least once every 6 weeks
* Participate in release planning meetings and retrospectives, and burndown meetings, as needed
* Ensure related work happens in a project-owned github org and repository, with code and tests explicitly owned and supported by the SIG, including issue triage, PR reviews, test-failure response, bug fixes, etc.
* Ensure related work happens in a project-owned github org and repository, with code and tests explicitly owned and supported by the SIG, including issue triage, PR reviews, test-failure response, bug fixes, etc.
* Use the above forums as the primary means of working, communicating, and collaborating, as opposed to private emails and meetings

In addition, SIGs have the following responsibilities to SIG PM:
Expand All @@ -18,19 +19,21 @@ In addition, SIGs have the following responsibilities to SIG PM:
* actively track / maintain SIG features within [k/features](https://github.com/kubernetes/features)
* attend [SIG PM](/sig-pm/README.md) meetings, as needed / requested

[SIG charter process]: /committee-steering/governance/README.md

## SIG Roles

Defining SIG Roles is a function of the SIG Charter.
Defining SIG Roles is a function of the SIG Charter.
Guidelines for drafting a SIG Charter can be found [here](/committee-steering/governance/README.md).


## SIG creation and maintenance procedure

### Prerequisites

* Propose the new SIG publicly, including a brief mission statement, by emailing kubernetes-dev@googlegroups.com and posting to discuss.kubernetes.io, then wait a couple of days for feedback.
* Ask a repo maintainer to create a github label, if one doesn't already exist: sig/foo.
* Request a new [kubernetes.slack.com](http://kubernetes.slack.com) channel (#sig-foo) from the #slack-admins channel. New users can join at [slack.kubernetes.io](http://slack.kubernetes.io).
* Work with the Steering Committee to scope the SIG and get provisional approval.
Follow the [SIG charter process] to propose and obtain approval for a charter.
* Ask a repo maintainer to create a github label, if one doesn't already exist: sig/foo
* Request a new [kubernetes.slack.com](http://kubernetes.slack.com) channel (#sig-foo) from [@parispittman](https://github.com/parispittman) or [@castrojo](https://github.com/castrojo). New users can join at [slack.kubernetes.io](http://slack.kubernetes.io).
* Organize video meetings as needed. No need to wait for the [Weekly Community Video Conference](community/README.md) to discuss. Please report summary of SIG activities there.
* Request a Zoom account by emailing Paris Pittman(`parispittman@google.com`) and Jorge Castro(`jorge@heptio.com`). You must set up a google group (see below) for the SIG leads so that all the SIG leads have the ability to reset the password if necessary.
* Read [how to use YouTube](/communication/K8sYoutubeCollaboration.md) for publishing your videos to the Kubernetes channel.
Expand All @@ -41,13 +44,13 @@ Guidelines for drafting a SIG Charter can be found [here](/committee-steering/go
4. Share it with the SIG mailing list, lowest privileges.
5. Share individual events with `cgnt364vd8s86hr2phapfjc6uk@group.calendar.google.com` to publish on the universal calendar.
* Use existing proposal and PR process (to be documented)
* Announce new SIG on kubernetes-dev@googlegroups.com
* Announce new SIG on kubernetes-dev@googlegroups.com
* Leads should [subscribe to the kubernetes-sig-leads mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-leads)
* Submit a PR to add a row for the SIG to the table in the kubernetes/community README.md file, to create a kubernetes/community directory, and to add any SIG-related docs, schedules, roadmaps, etc. to your new kubernetes/community/SIG-foo directory.

#### Creating a mailing list

Create a Google Group at [https://groups.google.com/forum/#!creategroup](https://groups.google.com/forum/#!creategroup), following the procedure:
Create a Google Group at [https://groups.google.com/forum/#!creategroup](https://groups.google.com/forum/#!creategroup), following the procedure:

Each SIG must have two discussion groups with the following settings.

Expand Down