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

Update Core Team decision making #39

Merged
merged 3 commits into from
Jun 29, 2020
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
19 changes: 11 additions & 8 deletions decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ Major decisions about the future of the project are made through discussion with

Most decisions that need to be made arise out of requests made of the individual software projects. For example, a user may request a particular feature to be added to the console runner by creating a GitHub issue. Such decisions are normally handled within the project by consensus of the committers, using input provided by users.

In order to ensure that the project is not bogged down by endless discussion and continual voting, we usually follow a policy of lazy consensus. This allows the majority of decisions to be made without resorting to a formal vote.
In order to ensure that the project is not bogged down by endless discussion and continual voting, we usually follow a policy of _lazy consensus_. This allows the majority of decisions to be made without resorting to a formal vote.

In general, as long as nobody explicitly opposes a proposal, it is recognised as having the support of the community. Those who have not stated their opinion explicitly have implicitly agreed to the implementation of the proposal.
In general, as long as nobody explicitly opposes a proposal, it is recognized as having the support of the community. Those who have not stated their opinion explicitly have implicitly agreed to the implementation of the proposal.

It is this process that allows a large group of people to efficiently reach consensus, as someone with no objections to a proposal need not spend time stating their position, and others need not spend time reading such mails.

Expand All @@ -18,18 +18,21 @@ It may not always be possible to reach a consensus. In that case, the project le

## Core Team Decisions

Ultimately, the final decision on major questions is made by the Core Team. Within the Core Team, we use both consensus and voting to make decisions.

Consensus is usually explicit within the Core Team, as opposed to lazy. For the kind of issues we expect the Core Team to resolve, it's important to hear from each member. The Chair is responsible for getting each member's view and determining whether there is a consensus.
Because the Core Team generally makes major decisions, affecting multiple projects, _lazy consensus_ is normally not used. For the kind of issues we expect the Core Team to resolve, it's important to hear from each member. The Chair is responsible for getting each member's view and determining whether there is a consensus.
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 tried to clarify the need for hearing from everyone in most cases and the fact that we don't use lazy consensus very much in Core Team decisions.


When a consensus cannot be reached, voting is used. Additionally, issues such as those affecting the strategic direction or legal standing of the project always require a vote. The Chair is responsible for determining the necessity of a vote as well as conducting the vote.

Where a vote is used, all votes, including that of the Chair are tallied. With certain exceptions noted below, a simple majority of members must vote for a proposal in order for it to pass. Note that this applies to all current members, not just those who actually vote, and therefore eliminates the need for a quorum. It is the responsibility of the Chair to collect the votes from the members, in case some of them do not respond immediately.

Certain actions require a vote of two thirds of the members, rather than a simple majority.
Since the role of the Chair is central in this process, it's important that we have a way to move forward in case of the absence or unavailability of the Chair for a particular decision or for a period of time. If the Chair will be absent for an extended period, they may appoint another Core Team member to serve as temporary Chair. If the Chair is unavailable and no advance provision has been made, a temporary replacement may be selected by the team. In some cases, the team may choose to proceed with one or more decisions without formally naming a replacement, in which case the team as a whole is responsible for following the process described here.

The following actions __require__ a vote of the Core Team.

* Removal of a Core Team member
* Removal of the Core Team Chair
* Acceptance of a new project.
* Removal or archiving of a project.
* Appointment, removal or replacement of a project lead.
* Removal of a Core Team member. (Two thirds of members must approve)
* Removal of the Core Team Chair. (Two thirds of members must approve)
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 don't think any of these is new, but I thought it would help to specify when we need to take a vote. Hopefully, these are the same things everyone else assumed we would vote on. 😄


## Changes to the Governance Documents

Expand Down
9 changes: 5 additions & 4 deletions governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

The **NUnit Community** is a meritocratic, consensus-based community that aims to provide the best possible software for use in developing and testing applications in the .NET environment. We maintain a number of **Software Projects**, as described below, and sometimes use the term **NUnit Project** to refer to all of those projects in the aggregate.

Anyone with an interest in one of our **Software Projects** can join the community, contribute to the project design and participate in the decision making process. This document describes how that participation takes place and how to set about earning merit within the project community.
Anyone with an interest in one of our **Software Projects** can join the community, contribute to the project design and participate in the decision making process. This document describes how that participation takes place and how to set about earning merit within the project community.

## Software Projects

Expand Down Expand Up @@ -106,6 +106,7 @@ Membership in the Core Team is by invitation of the existing members. A nominati
Core Team members remain on the team until they choose to retire or until 2/3 of the members vote to remove them.

The current composition of the Core Team is

* Charlie Poole
* Rob Prouse
* Chris Maddock
Expand All @@ -115,9 +116,9 @@ The current composition of the Core Team is

### Core Team Chair

The Core Team Chair is a single individual, voted for by the Core Team members. Once someone has been appointed Chair, they remain in that role until they choose to retire, or the Core Team casts a two-thirds majority vote to remove them.
The Core Team Chair is a single individual, voted for by the Core Team members. The Chair leads the team, facilitates the decision-making process and ensures that all governance processes are adhered to.

The Chair has no additional authority over other members of the Core Team: the role is that of a coordinator and facilitator. The Chair is also expected to ensure that all governance processes are adhered to, and has the deciding vote in case of ties.
Once someone has been appointed Chair, they remain in that role until they choose to resign or the Core Team casts a two-thirds majority vote to remove them.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Two changes here.

  1. I took out "The Chair has no additional authority.." because that seemed to add nothing. Happy to put it back if you feel it's needed.

  2. I removed the Chair as a tie-breaker because I think that's left over from an earlier draft. It seems to suggest that the Chair doesn't vote at all, except in case of a tie. The more detailed decision.md document states clearly that the Chair votes along with everyone else. If anyone interprets this differently, let's discuss.


### Original Contributor

Expand All @@ -133,7 +134,7 @@ The primary support channel for users is the [community mailing list](https://gr

Anyone can contribute to the project, regardless of their skills, as there are many ways to contribute. For instance, a contributor might be active on the project mailing list and issue tracker, or might supply patches. The various ways of contributing are described in more detail in the [Contributions](./contributions.md) document.

The [developer mailing list](https://groups.google.com/forum/#!forum/nunit-developer) is the most appropriate place for a contributor to ask for help when making their first contribution.
The [developer mailing list](https://groups.google.com/forum/#!forum/nunit-developer) is the most appropriate place for a contributor to ask for help when making their first contribution.

## Decision Making Process

Expand Down