Skip to content

6. Decision Making Process

thexerteproject edited this page Oct 21, 2014 · 3 revisions

Decisions about the future of the project are made through discussion with all members of the community, from the newest user to the most experienced PMC member. All non-sensitive project management discussion takes place on the xerte-dev list. Private discussion is discouraged, but will occasionally take place for reasons of sensitivity.

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

Lazy Consensus

Decision making typically involves the following steps:

  • Proposal
  • Discussion
  • Vote - if consensus is not reached through discussion
  • Decision

Any community member can make a proposal for consideration by the community. In order to initiate a discussion about a new idea, they should send an email to the project contributors’ list or submit a pull request implementing the idea to the project’s github. This will prompt a review and, if necessary, a discussion of the idea. The goal of this review and discussion is to gain approval for the contribution. Since most people in the project community have a shared vision, there is often little need for discussion in order to reach consensus.

In general, as long as nobody explicitly opposes a proposal or pull request, it is recognised as having the support of the community. This is called lazy consensus - that is, those who have not stated their opinion explicitly have implicitly agreed to the implementation of the proposal.

Lazy consensus is a very important concept within the project. 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.

For lazy consensus to be effective, it is necessary to allow at least 72 hours before assuming that there are no objections to the proposal. This requirement ensures that everyone is given enough time to read, digest and respond to the proposal. This time period is chosen so as to be as inclusive as possible of all participants, regardless of their location and time commitments.

Voting

Not all decisions can be made using lazy consensus. Issues such as those affecting the strategic direction or legal standing of the project must gain explicit approval in the form of a vote. Every member of the community is encouraged to express their opinions in all discussion and all votes. However, only project committers and PMC members have binding votes for the purposes of decision making.

If a formal vote on a proposal is called, all participants on the xerte-dev list may express an opinion and vote. They do this by sending an email in reply to the original ‘[VOTE]’ email, with the following vote and information:

• +1 ‘yes’, ‘agree’: also willing to help bring about the proposed action • +0 ‘yes’, ‘agree’: not willing or able to help bring about the proposed action • -0 ‘no’, ‘disagree’: but will not oppose the action’s going forward • -1 ‘no’, ‘disagree’: opposes the action’s going forward and must propose an alternative action to address the issue (or a justification for not addressing the issue)

To abstain from the vote, participants simply do not respond to the email. However, it can be more helpful to cast a ‘+0’ or ‘-0’ than to abstain, since this allows the team to gauge the general feeling of the community if the proposal should be controversial.

Every member of the community, from interested user to the most active developer, has a vote. The project encourages all members to express their opinions in all discussion and all votes. However, only committers and members of the PMC have binding votes for the purposes of decision making.

It is therefore their responsibility to ensure that the opinions of all community members are considered. While not all members may have a binding vote, a well-justified ‘-1’ from a non-committer must be considered by the community, and if appropriate, supported by a binding ‘-1’.

A ‘-1’ can also indicate a veto, depending on the type of vote and who is using it. Someone without a binding vote cannot veto a proposal, so in their case a -1 would simply indicate an objection.

When a vote receives a ‘-1’, it is the responsibility of the community as a whole to address the objection. Such discussion will continue until the objection is either rescinded, overruled (in the case of a non-binding veto) or the proposal itself is altered in order to achieve consensus (possibly by withdrawing it altogether). In the rare circumstance that consensus cannot be achieved, the PMC will decide the forward course of action.

In summary

Those who don’t agree with the proposal and think they have a better idea should vote -1 and defend their counter-proposal. Those who don’t agree but don’t have a better idea should vote -0. Those who agree but will not actively assist in implementing the proposal should vote +0. Those who agree and will actively assist in implementing the proposal should vote +1.

Types of Approval

Different actions require different types of approval, ranging from lazy consensus to a majority decision by the PMC. These are summarised in the table below. The section after the table describes which type of approval should be used in common situations.

Lazy consensus

An action with lazy consensus is implicitly allowed, unless a binding -1 vote is received. Depending on the type of action, a vote will then be called. Note that even though a binding -1 is required to prevent the action, all community members are encouraged to cast a -1 vote with supporting argument. Committers are expected to evaluate the argument and, if necessary, support it with a binding -1.

Lazy majority

A lazy majority vote requires more binding +1 votes than binding -1 votes. 72 hours is allowed for the vote.

Consensus approval

Consensus approval requires three binding +1 votes and no binding -1 votes. 72 hours is allowed for the vote.

Unanimous consensus

All of the binding votes that are cast are to be +1 and there can be no binding vetoes (-1). 120 hours is allowed for the vote.

2/3 majority

Some strategic actions require a 2/3 majority of PMC members; in addition, 2/3 of the binding votes cast must be +1. Such actions typically affect the foundation of the project (e.g. adopting a new codebase to replace an existing product). 120 hours is allowed for the vote.

When is a vote required?

Every effort is made to allow the majority of decisions to be taken through lazy consensus. That is, simply stating one’s intentions is assumed to be enough to proceed, unless an objection is raised. However, some activities require a more formal approval process in order to ensure fully transparent decision making. The table below describes some of the actions that will require a vote. It also identifies which type of vote should be called.

Release plan

Defines the timetable and actions for a release. A release plan cannot be vetoed (hence lazy majority). Needs a lazy majority.

Product release

When a release of one of the project’s products is ready, a vote is required to accept the release as an official release of the project. A release cannot be vetoed (hence lazy majority). Needs a lazy majority.

New committer

A new committer has been proposed. Needs consensus approval of the PMC.

New PMC member

A new PMC member has been proposed. Needs consensus approval of the community.

Committer removal

When removal of commit privileges is sought. Needs unanimous consensus of the PMC.

PMC member removal

When removal of PMC membership is sought. Needs unanimous consensus of the community.