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

Three Branches of Governance - Proposal #295

Closed
countspongebob opened this issue Jan 26, 2017 · 23 comments
Closed

Three Branches of Governance - Proposal #295

countspongebob opened this issue Jan 26, 2017 · 23 comments
Labels
committee/steering Denotes an issue or PR intended to be handled by the steering committee. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.

Comments

@countspongebob
Copy link
Contributor

The long term health of any open source project depends on the people that contribute. Just as importantly, those people need a framework for working together effectively. Kubernetes continues to enjoy rapid growth and adoption and has been transitioning rapidly from an exciting new project to one with large numbers of productions systems, many at scale.

One of the very important balances between forces our project must navigate is the balance between speed of innovation and feature evolution and the needs of the production users for boring, dependable infrastructure.

As the project has grown in usage, it has also grown in contributors. The more informal practices that suited our project in the early days are proving unsuitable, in part because those informal practices have been strongly based on personal relationships between the early contributors. Those practices and norms are opaque to new contributors and had become a barrier to attracting new contributors and ensuring they can be productive members of the community.

As production deployments of Kubernetes have expanded, the need for longer range planning by those users has become more urgent. As Kubernetes becomes more central to the infrastructure of any company, the need for roadmaps, goals, and planning transparency have also become more central.

This has led to one very significant (currently in place) change to the Kubernetes Way (PM group), and another major one is proposed - the Council of Elders. I propose that a third is needed.

A significant event in the Kubernetes community was the formation of the Product Management Group. The value of this group to aid in future planning, roadmaps, and in the feature-level planning of the project is undeniable.

Teams that tilt the power structures towards engineering teams tend to build great architectures, but struggle with user experience and to build features users really want. Teams that tilt the power structures towards product management are often feature-rich with stove-piped architectures that struggle to scale and meet their SLOs. One of the biggest challenges leaders have is balancing these views. The Kubernetes project has this same challenge.

Introduction of the Council of Elders is not just a positive step for the project but an utter necessity, and I support creation immediately. Critically, though, this Council must have wide enough representation and diversity, and sufficiently engaged members to directly guide and influence the main technical and architectural issues of the project. I echo the sentiments of many in the community: #28

Today, the Product Management Group has also become the de facto process management and project policy owner for the project. Just as with features vs architecture tradeoffs, project policies have to balance the needs and desires of the product management view of the project with the developer view, and manage the tradeoffs between predictability, reporting, agility, and productivity. The speed of change of processes can have a profound effect on project productivity - both positive and negative - and are not best managed from the product management view alone.

Project policies play a key role in how these tradeoffs are discussed, and how decisions are made and communicated. These policies are not meant to make those tradeoffs, but to ensure that balanced, judged, and rational decisions are made in a transparent way, that the policies of the project are documented, communicated and followed.

I propose model that has a track record of success....Three groups with clear separation of empowerment and responsibilities:

  • Product Management Group (Features, Roadmaps, Releases, Documentation)
  • Council of Elders (Architecture, Design, Owner of Technical Standards)
  • Project Policy Board (Processes, SIGs, Transparency, Traceability, and Legal/Licensing)

For the separation-of-powers model to work well it is especially important that these three groups have non-overlapping members.

Project policies should be treated with equal respect and care to features and architecture, especially in a large open source project, where coordinating large groups of people from many companies is such a challenge.

This third empowered group in combination will help Kubernetes succeed over the long run.

I ask for your support in the community for this proposal.

-Bob Wise

@timothysc
Copy link
Member

I like it. I think the @kubernetes/kubernetes-pm & @kubernetes/sig-contributor-experience-misc can/should propose items but they should not act on autonomy without the buy in from the (Project Policy Board), whose ultimate goal is to ensure the consistency of the project and overall satisfaction of those contributing to the project. I think the distinction is important.

@countspongebob
Copy link
Contributor Author

I entirely agree. Guidance and input from the sig contributor experience is critical. Would a required representative from that SIG on the PPB work?

@zehicle
Copy link
Contributor

zehicle commented Jan 26, 2017

+1

@philips
Copy link
Contributor

philips commented Jan 26, 2017

I am on the fence on this after the discussion in the community hangout.

We already have a number of processes in place that are poorly functioning because not enough people care about them. Another approach would be creating a tighter "this existing process isn't working" to "lets try this experiment" feedback loop. Two examples top of mind for me:

  1. client-go is the first thing to be pulled out of kubernetes.git and I would love updates on if that experiment is working on the ground (effort invested, problems solved, etc), I think many people assume the decision is made and everything is going great.
  2. ensuring our API is well audited and reviewed is important but making even minor changes can be confusing between code reviewers, approvers, the SIG, etc. We have reached a point where there are so many reviewers and stakeholders that it is hard to know who makes the final call. So, we are stable there through stagnancy to some degree.

I will keep thinking on it though.

@derekwaynecarr
Copy link
Member

I am confused by some of this. It was my understanding that individual sig groups and their technical leadership defined roadmaps, implemented features, and authored much of the documentation. The PM group in my experience just ensured the process is followed across the project and ensured status is rolled up from various sig groups. I can't tell if you are saying that a PM group identifies a feature and directs a SIG on a to implement. I disagree if that is the sentiment proposed. I prefer to keep roadmap decisions local to the SIG.

@countspongebob
Copy link
Contributor Author

Derek:

In general, I'm not proposing anything about the PM group as regards feature management, roadmaps, etc. that is any different than what they are doing today. I'm suggesting that the role of the PM group be carefully narrowed to be just that, and to exclude project wide process and governance changes. The scope of the Council of Elders should also be similarly clear.

I am saying that project governance should be officially outside the scope of the PM group and have its own home. Examples would be...

  • SIGS are expected to record and publish their meetings
  • PRs are the mechanism for publishing content for review and comment
  • 2-factor authentication is used for github accounts

These are the common and expected ways of working across the entire community.

There was an interesting example of this that came up in the PM meeting today, where there was a suggestion that a SIG lead had to approve something. This would have represented a new responsibility and power for SIG leads that would really need to be vetted fully in the community, and this is where we need to take a lot of care.

@bgrant0607
Copy link
Member

@countspongebob @timothysc

With respect to project processes, another possibility is that SIG contributor experience could own that and more people could get involved to help. There's tons of work to do, such as writing up our design-proposal policy. We don't have a shortage of ideas for improvements. We're lacking people to drive, implement, communicate, and roll out improvements (and test, measure, rollback, etc.).

@bgrant0607
Copy link
Member

Another example: I have yet to see a volunteer to update and organize our contributor docs.

@bgrant0607
Copy link
Member

@philips I think new APIs and API changes should be covered by a proposal process, which I agree needs to be drafted. We'll need to make the process and stakeholders clear.

@bgrant0607
Copy link
Member

bgrant0607 commented Jan 27, 2017

@philips I'd be happy with a clause about evaluating new processes N weeks after they are introduced. In at least some cases, we'll need data to do so. I'd like data to determine how well the OWNERS changes are working, for example.

@bgrant0607
Copy link
Member

There was an earlier suggestion by @shtatfeld for contributor experience to improve processes:

#28 (comment)

Comment I also made on the elders proposal:

The project is a meritocracy. People are promoted in authority based on the scope, quality, quantity, and duration of their contributions. Anyone who wants to eventually own an area needs to step up and contribute to that area first.

@bgrant0607
Copy link
Member

Proposed refinement/change to the proposal:

We have an established pattern of reviewer/approver (and Champion/Sponsor) in the project: #286

We could clarify which processes were owned by:

  • The PM group
  • Contributor experience
  • Release team

And then add project-wide PROCESS REVIEWERS and PROCESS APPROVERS.

As with API REVIEWERS and API APPROVERS, those groups should be comprised of people who have designed, driven, implemented, and rolled out new processes.

@thockin
Copy link
Member

thockin commented Jan 31, 2017 via email

@countspongebob
Copy link
Contributor Author

Tim: I am proposing an "authority structure" along the lines of the checks-and-balances US government model. Although a benevolent dictator model implement via the Council is preferable to chaos, I think we can do better. I remain concerned about whether there will be sufficient diversity of concerns and companies on the Benevolent Dictator Council.

I also believe the BDC needs to be a regularly engaged group, not just a board of final appeals. I note especially here Brandon's comments on "disengaged leaders".

Note that I'm fine with the BDC having final say on a great many matters - just not all matters. With separation of powers the BDC construction will work well, as long as we have a no-cross-membership agreement between the groups.

@thockin
Copy link
Member

thockin commented Feb 1, 2017 via email

@spiffxp
Copy link
Member

spiffxp commented Feb 1, 2017

@thockin

The SIGs have TLs who are ideally drawn from the list of OWNERS for an area

OK, so this suggestion makes total sense to me. After I read it a few times.

I just want to raise the concern that my brain hurts parsing four levels of categorization which may or may not be hierarchical: SIG/TL/OWNERS/area. I have concerns this project is tending towards stratifying vs simplifying.

So I move that we write our little constitution, in broad strokes, and
flesh out the details of each role in docs like Sarah's "elders" doc. This
is in parallel to the contrib ladder, which I see as a vehicle for
on-boarding people and comprehending the structure of the human org.

Agree this is a parallel effort to the contrib ladder. Is this a PR to governance.md or a new doc? More constructive discussion on a concrete PR vs. an issue sounds like the next step here

@idvoretskyi
Copy link
Member

@spiffxp

Is this a PR to governance.md or a new doc?

Having everything related in a single place is a good idea, so governance.md looks like a solution.

@derekwaynecarr
Copy link
Member

derekwaynecarr commented Feb 2, 2017 via email

@bgrant0607
Copy link
Member

@countspongebob and others:

Please suggest items to add to the Steering Committee backlog, here or via a PR:
https://github.com/kubernetes/community/blob/master/committee-steering/backlog.md

And then we'll close this issue.

@k8s-github-robot k8s-github-robot added the needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. label Aug 15, 2017
@grodrigues3 grodrigues3 added committee/steering Denotes an issue or PR intended to be handled by the steering committee. and removed needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. labels Aug 16, 2017
@k8s-github-robot k8s-github-robot added the needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. label Aug 16, 2017
@spiffxp
Copy link
Member

spiffxp commented Aug 17, 2017

awaiting deployment of kubernetes/test-infra#4089 to take away the needs-sig label

@idvoretskyi
Copy link
Member

@bgrant0607

Please suggest items to add to the Steering Committee backlog, here or via a PR:
https://github.com/kubernetes/community/blob/master/committee-steering/backlog.md

This link doesn't work for me (404). It seems the following link is more accurate now - https://github.com/kubernetes/steering/blob/master/backlog.md.

@k8s-github-robot k8s-github-robot removed the needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. label Aug 24, 2017
shyamjvs pushed a commit to shyamjvs/community that referenced this issue Sep 22, 2017
…gnal-lead

Eric Chiang fills CI Signal Lead for 1.7 Release
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

Prevent issues from auto-closing with an /lifecycle frozen comment.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or @fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 10, 2018
@bgrant0607
Copy link
Member

The Steering Committee election has occurred. This is now obsolete.

danehans pushed a commit to danehans/community that referenced this issue Jul 18, 2023
Signed-off-by: Lizan Zhou <lizan@tetrate.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
committee/steering Denotes an issue or PR intended to be handled by the steering committee. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.
Projects
None yet
Development

No branches or pull requests