# Governance

ESTree is a specification that depends on contributions from the community. Anyone may contribute to the project at any time by submitting code, participating in discussions, making suggestions, or any other contribution they see fit. This document describes how various types of contributors work within the ESTree project.

## Roles and Responsibilities

### Users

Users are community members who use projects that implement the ESTree specification. Users may become involved with the project and may find themselves becoming Contributors.

### Implementers

Implementers are community members who create or maintain a project that implements the ESTree specification, either through the creation or usage of data structures following the specification. Implementers who continue to engage with the project and its community will often become more and more involved. Such Implementers may find themselves becoming Contributors.

### Contributors

Contributors are community members who contribute in concrete ways to the project, most often in the form of code and/or documentation. Anyone can become a Contributor, and contributions can take many forms. There is no expectation of commitment to the project, no specific skill requirements, and no selection process.

Contributors have read-only access to the ESTree GitHub repository and so submit changes via pull requests. Contributor pull requests have their contribution reviewed and merged by an ESC member. ESC members work with Contributors to review their submission and prepare it for merging.

### Member Projects

Member Projects are projects that implement the ESTree specification and have donated their time to the maintenance and development of the ESTree project. Member Projects may be added or removed through a standard ESC motion (discussed in the next section).

### ESTree Steering Committee (ESC)

The ESTree project is jointly governed by the ESTree Steering Committee (ESC) which is responsible for high-level guidance of the project. The ESC is made up of one representative from each Member Project, and that one representative represents their Member Project's vote in any decision. It's the responsibility of the Member Project representative to drive consensus within the Member Project when decisions about the ESTree project are being made. 

The ESC has final authority over this project including:

* Technical direction
* Project governance and process (including this policy)
* Contribution policy
* GitHub repository hosting

ESC seats are not time-limited. The size of the ESC cannot be larger than five members. This size ensures adequate coverage of important areas of expertise balanced with the ability to make decisions efficiently.

The ESC may add additional members to the ESC, up to the previously mentioned maximum, by a standard ESC motion.

An ESC member may be removed from the ESC by voluntary resignation, and a Member Project may replace its ESC member at any time by informing the other ESC members.

## Consensus Seeking Process

The ESC follows a
[Consensus Seeking](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making) decision making model.

When a decision has appeared to reach a consensus, an ESC member will ask "Does anyone object?" as a final call for dissent from the consensus.

If a decision cannot reach a consensus, an ESC member can call for either a closing vote or a vote to table the issue to the next meeting. The call for a vote must be approved by a majority of the ESC or else the discussion will continue. Simple majority wins.
----

This work is a derivative of [YUI Contributor Model](https://github.com/yui/yui3/wiki/Contributor-Model) and the [Node.js Project Governance Model](https://github.com/nodejs/node/blob/master/GOVERNANCE.md).

This work is licensed under a [Creative Commons Attribution-ShareAlike 2.0 UK: England & Wales License](https://creativecommons.org/licenses/by-sa/2.0/uk/).
