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

add voting.md #11

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
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
18 changes: 10 additions & 8 deletions core.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@

The NeoForged project is split between [GitHub](https://github.com/NeoForged) and [Discord](https://discord.neoforged.net). It is a community of volunteers, maintaining a free and open source ecosystem of modifications to the Minecraft game.

All contributors and team members are here for fun - our goal is to provide joy to the community, and to ourselves.
All contributors and team members are here for fun - our goal is to provide joy to the community, and to ourselves.

We are here because it is fun, so this document ensures that the Project doesn't become so bureaucratic or so much of a chore that the fun is removed for anybody.

### What this document is

This document is:
* A non-exhaustive list of the working principles of the project.
* Intended to help guide the project in times of uncertainty.

- A non-exhaustive list of the working principles of the project.
- Intended to help guide the project in times of uncertainty.

This document is built on the fundamental principle of "people generally want to help, so we should not get in the way of it".

Expand All @@ -19,9 +20,10 @@ The core ethic is "people over processes", so this document is intentionally lig
### What this document is not

This document is not:
* Intended to enforce rules on all members.
* Intended to catch all possibilities.
* Intended to prevent "rules lawyering".

- Intended to enforce rules on all members.
- Intended to catch all possibilities.
- Intended to prevent "rules lawyering".

The Code of Conduct of the project is taken to be the content of [the Contributor Covenant](https://www.contributor-covenant.org/version/2/1/code_of_conduct/), so this document is not the Code of Conduct. However, this may be altered with a copy held and maintained by the Project, only with overwhelming majority support by the entire team.

Expand Down Expand Up @@ -55,7 +57,7 @@ You may [apply to join some teams](https://links.neoforged.net/apply), but some

#### Steering Council

The Steering Council is the overall management and oversight of the Project.
The Steering Council is the overall management and oversight of the Project.

They “steer” the project to keep it aligned with the long-term vision, hence its secondary name of Vision Team.

Expand All @@ -65,7 +67,7 @@ A member may choose to become inactive and appoint another in their place until

At least one member of the Council is promoted from other teams via an annual internal vote, to ensure that the Council always has fresh insight from a new team member with a different view on situations, and thus does not stagnate over time.

Once a year, an internal voting process inspired by [the process implemented in the Python ecosystem](https://peps.python.org/pep-0013/) will determine the members that will be promoted to the Steering Council via the [Helios voting system](https://heliosvoting.org/). It is intended that at least one, and at most three members will be promoted at a time.
Once a year, an internal voting process inspired by [the process implemented in the Python ecosystem](https://peps.python.org/pep-0013/) will determine the members that will be promoted to the Steering Council via the [Helios voting system](https://heliosvoting.org/). All three members of the Council will be elected, at least one of which must be a member that has not been on the Council in the previous term.

The Council also serves double duty as a mediator for disagreements between other teams. These shall be resolved by discussion, rather than by unanimous applications of the rules, so this is not in the purview of this document.

Expand Down
49 changes: 49 additions & 0 deletions voting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# The Voting Process of the NeoForged Project

As stated in the [Governance document](core.md), the Steering Council is to be elected annually from among the team members. This document lays out how this process is intended to work. The process is largely inspired by [the process implemented in the Python ecosystem](https://peps.python.org/pep-0013/).

## Who Is Eligible to Participate?

All team members of the NeoForged Project are eligible to both run and vote. This most importantly includes the two main teams, Moderators and Maintainers, but it also extends to other subteams of the Project.

At least one new member should be elected to the Steering Council in each year, to get fresh views and opinions into the council.

### Election Officers

Before the election, election officers are determined from among the team and internally announced as such. They are assigned by the Steering Council, ideally after volunteering. There should be at least three election officers, which should not be members of the Steering Council prior to the election.

The election officers' job is to organize and supervise the election process. Additionally, they must also announce a timeframe for the election process beforehand. Suggestions for the duration of the individual phases of the election are stated below.

## The Election Process

The election process has three phases. For the sake of organization, all information related to the election should be kept in a separate internal text channel (or thread), and all announcements by election officers should be pinned to that channel (or thread) for easy reference.

### Phase One: Nominations

To begin, candidates can be nominated. Any team member may nominate any amount of candidates, including themselves, by sending a message to an election officer. There explicitly is no limit as to the amount of possible nominations, it is appealed to the team members' discretion to only nominate candidates they actually see fit.

The nomination message may optionally contain a reason for the nomination, i.e., why the nominator thinks the nominee would be a good fit for the position. This is optional as to avoid "flavor text" that might result from making this mandatory.

This phase should run for approximately one week, with the timeframe announced beforehand. After nominations have ended, the election officers will announce a list of nominations and - if applicable - nomination messages to the channel. The nominators will not be announced by the election officers, however, nominators may choose to announce their support for certain candidate(s) themselves.

Sitting members of the Steering Council are expected to announce their intent to re-run, or the lack thereof, prior to the nomination phase.

After a nomination has been received, the corresponding election officer should send a message to the nominee, confirming that they accept the nomination. If a nominee does not respond within the set timeframe, it will be assumed that they accepted the nomination.

### Phase Two: Voting

After the candidates have been announced, the voting phase will commence. Like the nominating phase, this phase should run for approximately one week, with the timeframe announced beforehand.

It is suggested that the [Helios voting service](https://vote.heliosvoting.org), or a similar service, be used for conducting the election. This choice is to be made by the election officers. The election officers are then also responsible for setting up the service for use before the voting phase begins.

It should be possible to vote at least three members (as the Steering Council has three seats). It is suggested that voting more than three members is possible, so that people who cannot or do not want to decide between two candidates they perceive as equal have the option to vote both.

### Phase Three: Results

After voting has finished, the election officers announce the results internally as soon as possible for them. A transition of power is to be prepared, including reassignment of roles and permissions. In parallel, a public statement in the form of a Discord announcement and a blog post is to be prepared and released.

In the event of a tie that would cause one or more members to win a seat on the council while one or more members with the same amount of votes would not win a seat, i.e. if a tie occurs for places 3 and 4 (and beyond), or for places 2, 3 and 4 (and beyond), or for places 1, 2, 3 and 4 (and beyond), the result is to be determined from among the candidates randomly by an election officer.

## Communication to the Outside

It should be announced to the public that an election process has been initiated. Other than that, in order to not compromise the integrity of the vote, public statements about the election should be kept to a minimum until the election is over.