GOVERNANCE.md
This document outlines the governance model for Biome.
It describes various parts of how the project is managed as well as accepted practices for day-to-day operation:
All members must follow the Code of Conduct. Consequences for member violations are detailed in Moderation.
Leads are the owners of the organization.
Leads have additional privileges over core contributors. Leads control and maintain sensitive project assets and act as tiebreakers in the event of disagreements. In case of disagreements, only one lead must be involved in the resolution.
These assets and responsibilities are but are not limited to:
Also:
Lead category and channels that belong to this category.The ownership of assets is only sometimes evenly distributed among all the leads.
Leads may only be self-nominated. Being a lead only adds burden to a core contributor: more rights to be held accountable with, and more responsibilities.
When nominating a lead, a new thread in the #leads channel with a case of why the person should join as core contributor has to be created.
#leads is a private channel available only to people who have the Lead role.
The voting period will follow the voting rules. An individual becomes a lead if all the other leads vote in favour.
If vote is successful, the lead will ask the nominee if they want to accept the title.
In the event of a rejection, the nominated person will be privately given the requirements they have yet to meet. Details of the discussion - for example, those who objected to the nomination - will not be disclosed.
Core Contributors are outstanding maintainers, are ambassadors of Biome organization and lead by example the community.
Core contributor status on the Biome Discord serverCore contributors category and channels that belong to this category.Only maintainers can be nominated to be core contributors.
Core contributors may either be nominated by another, Core contributor, or lead.
When nominating a core contributor, a new private thread in the #core-contributors channel has to be created, with a case and their contributions of why the person should join as core contributor.
#core-contributors is a private channel available only to people who have the Core contributor role.
The voting period will follow the voting rules. An individual becomes a core contributor if:
Voting requirements may change in the future based on the amount of people involved in the vote.
A core contributor can be self-nominated. They will have to message a lead maintainer privately and present a case. Then, the lead can:
When the verdict is reached, the thread will be deleted, and a lead will reach out to the nominee.
If vote is successful, the core member will ask the nominee if they want to accept the title.
In the event of a rejection, the nominated person will be privately given the requirements they have yet to meet. Details of the discussion - for example, those who objected to the nomination - will not be disclosed.
Maintainers are those with a history of consistent contributions, including but not limited to pull requests, project management, or support. These privileges include:
Maintainer status on the Biome Discord serverMaintainers category and channels that belong to this category.Maintainers may either be nominated by another maintainer, Core contributor, lead.
When nominating a new maintainer, a new private thread in the #maintainers channel has to be created, provide a link to the history of the person's contributions to the project and a brief explanation of why the person should join as maintainer.
#maintainers is a private channel available only to people who have the maintainer role.
The voting period will follow the voting rules. An individual becomes a maintainer if:
A maintainer can be self-nominated. They will have to message a lead maintainer privately with links to their contributions to the project. Then, the lead can:
When the verdict is reached, the thread will be deleted, and a core contributor or lead will reach out to the nominee.
If vote is successful, the person reaching out will ask the nominee if they want to accept the title.
In the event of a rejection, the nominated person will be privately given the requirements they have not met. Details of the discussion, such as the names of those who objected the nomination, will not be disclosed.
One or more people can own certain parts of the codebase. This process is informal, and inclusion could result from substantial contributions or delegation by other members. A maintainer's responsibility is to identify the relevant owners and ensure there's an understanding when it comes to code review.
There aren't strict requirements and expectations around activity for core contributors and maintainers; although long periods of inactivity must be communicated to the team.
Inactive core contributors or maintainers may have voting and access rights removed and status removed, and given them the Past maintainer status. A core contributor or maintainer may request their voting rights and status back upon sufficient activity.
[!NOTE] The definition of "long periods", and how long an individual needs to stay inactive in order to have their voting rights removed have yet to be decided.
Contributions to the project aren't only limited to code. Contributions come in different forms and ways:
Changes to the governance document must be approved by at least fifty percent of the Core Contributors and a majority of the Leads.
Project direction and planning is a shared responsibility amongst members. Core contributors are responsible for dictating high-level goals and the project scope that should be adhered to.
Leads may create a roadmap document to share with the community once the core contributors have set the project's goals.
Roadmaps don't provide dates or deadlines; they only reflect what the core contributors decide to work on and how to spend the resources.
The span of a roadmap should cover one year, but it might vary.
We have a reasonably liberal approach to code review and merging. We value quick iteration and low development friction, which comes with great responsibility. Reverting code is easy, so landing code should be just as easy. Because of this, Biome will have discrete releases rather than rolling releases that are automatically published.
<handle>/experiment-code Branches that have more than four months of inactivity will be pruned.main due to the branch not being up-to-date, then it should either be reverted or a quick fix merged as a separate PR.There are three ways to fund Biome and its development: sponsorship, funded bounties, and paid contracts. We strongly prefer and recommend sponsorship, but are willing to facilitate both bounties and contracting under some conditions.
Sponsorship is the first and foremost way of making financial contributions to Biome. Sponsorship can be done through a one-time donation, or through recurring donations. We offer incentives for certain levels of recurring donations.
To learn more about sponsorship incentives, or to make a donation, please visit our Open Collective page. You can also sponsor the project through GitHub.
Bounties are the second approach towards funding Biome development. Unlike sponsorship, bounties are directed towards the implementation of a specific feature. Compared to sponsorship, bounties come with a few risks, both for Biome as a project and for the people or entities offering and collecting the bounty. To minimize these risks, we only sanction bounties under the following conditions:
Community > #funding channel on Discord. A Core Contributor can then accept or reject the request for the bounty. Reasons for rejection include, but are not limited to:
In some cases, Biome funds bounties on its own issues in order to further the project goals as laid out in its roadmap. Because Biome is the one funding these issues, it also means 100% of the pledged amount will go to the contributor completing the task. Project-Funded Bounties have the same conditions applied to them as Community-Funded Bounties. But given that these issues are funded using money that ultimately comes from our sponsors, we have additional restrictions in place:
Additionally, there is a strict process for assigning Project-Funded Bounties:
Community > #funding channel on Discord.
Core Contributors may enter freelance contracts with clients to work on Biome. Such contracts are between the contributor and their client, so they fall mostly outside the responsibility of the Biome project. Nevertheless, we can explicitly endorse such contracts under the following conditions:
Community > #funding channel, or privately
in the Core > #core-team channel.Core > #core-team channel.Funds will be allocated for project-specific services:
Additionally, we may use funds for assigning Project-Funded Bounties.
Core contributors are allowed to claim expenses related to conferences where they talk about Biome, or Biome workshops that they run. Expenses that can be claimed include, but are not limited to: trip (plane, train, etc.), meals, transport, parking.
Expenses must be approved by at least one Lead. In the presence of one single Lead, the Lead will ask one Core Contributor to fact-check the honesty of expenses, and leave a comment in the Open Collective expense page. In case of multiple leads, the Lead submitting the expense must seek the approval of at least one other Lead.
[!NOTE] Other usage of funds has yet to be decided.
Outlined below is the process for Code of Conduct violation reviews.
Anyone may report a violation. Violations can be reported in the following ways:
@biomejs/core-contributors).Each report will be assigned reviewers. These will initially be all project core contributors.
In the event of any conflict of interest - e.g. core contributors who are personally connected to a situation they must immediately recuse themselves.
At the reporter's request and if deemed appropriate by the reviewers, another neutral third party may be involved in the review and decision process.
If a report doesn't contain enough information, the reviewers will strive to obtain all relevant data before acting.
The reviewers will then review the incident and determine, to the best of their ability:
The reviewers should aim to have a resolution agreed very rapidly; if they have not decided within a week, they will inform the parties of the planned date.
The reviewers will determine responses based on the information gathered and the potential consequences. It may include: