# Contributor Ladder

Hello! We are excited that you want to learn more about our project contributor ladder! This contributor ladder outlines the different contributor roles within the project, along with the responsibilities and privileges that come with them. Community members generally start at the first levels of the "ladder" and advance up it as their involvement in the project grows. Our project members are happy to help you advance along the contributor ladder.

Each of the roles is organized into lists of three types of things. "Responsibilities" are things that a contributor is expected to do. "Requirements" are qualifications a person needs to meet to be in that role, and "Privileges" are things contributors on that level are entitled to.

This document has been started September 2025 and will be subjected to changes depending on people feedback.

## Community Participant

A Community Participant engages with the project and its community, contributing their time, thoughts, etc. Community participants are usually users who have stopped being anonymous or silent discussion browsers and started being active in project discussions.

### Responsibilities

Must follow the [Code of conduct](./CODE_OF_CONDUCT.md)

### How users can get involved with the community

Participating in community discussions
Submitting bug reports
Commenting on issues
Trying out new releases
Reviewing pull requests

## Contributor

A Contributor is anyone who simply adds to the project, without any formal membership. Contributions do not have to be code. People at the contributor level may be new contributors, or they may only contribute occasionally.

### Requirements

Follow the [Code of conduct](./CODE_OF_CONDUCT.md)
Follow the [project contributing guide](./CONTRIBUTING.md)

### Responsibilities and privileges

Understand the nature of the change they are proposing or issue they are opening
Respond to questions and feedback from organization members

## Organization Member

An Organization Member is an established contributor who regularly participates in the project. Organization Members have privileges in project repositories and discussions around the direction of the project, and as such are expected to act in the interests of the whole project.

### Requirements

All the contributor requirements
Contributes regularly
Upholds community and code of conduct values
Enabled secure two-factor authentication on their GitHub account

### Responsibilities and privileges

All the contributor responsibilities and privileges
Organization members can meet regularly in a chat to discuss the project and priorities.

Organization member still contribute from forks.

FabricJS is a small project, if you want to be an organization member, ask the maintainer via email or in an issue, mention the work you have done, and self nominate you to become a member.

## Triager

Triagers assist the maintainer and approvers with issue tracking and backlog. The specific workflows and triage requirements depend on the project, and are set by the project maintainer.

Defined by: Triage permissions, with the names of the current Triagers committed to git, either in CONTRIBUTING, CODEOWNERS, or in the README.

Triagers may be code contributors, but writing code is not a requirement for becoming a triager. Triagers are encouraged to be active participants in project meetings, chat rooms, and other discussion forums.

### Requirements

All the requiremens of a Organization Member
Consistently contribute in meetings or in issues, PRs or discussions.

### Responsibilities and privileges

All the Organization member responsibilities and privileges
Have a limited understanding of the project goals as outlined by maintainers
Respond to issues by asking clarifying questions and suggesting labels.
Respond to pull requests by reviewing code, testing manually, and providing (non-binding) approval or requesting changes

### The process of becoming a Triager

Self nominate yourself to be one, ask a maintainer via email or open an issue, explain or reference the work you have done for the project.

## Approver

Code approvers are able to both review and approve code contributions, as well as help maintainers triage issues and do project management.
An Approver is a person that with time learned the project and has interest being involved with it, may it be learning or for fun or for work.

While code review is focused on code quality and correctness, approval is focused on holistic acceptance of a contribution including: backwards/forwards compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, etc.

Approver status can be scoped to a part of the codebase. For example, critical core components may have higher bar for becoming an approver.

### Requirements

All the Triager requirements
Has deep knowledge of the codebase
Reviewer or author of PRs to the codebase, with the definition of substantial subject to the maintainer's discretion (e.g. refactors/adds new functionality rather than one-line pulls).
Nominated by a maintainer
With no objections from other maintainers
Done through PR to update the Community Configuration.

### Responsibilities and privileges

Have a robust understanding of the project goals as outlined by maintainers
Respond to issues by asking clarifying questions and suggesting labels
Respond to pull requests by reviewing code, testing manually, and providing approval or requesting changes
Expected to be responsive to review requests (inactivity for more than 1 month may result in falling back to triager until active again)
Mentor contributors and reviewers

### The process of becoming an Approver

If you are a Triager, self nominate yourself.
As of today ( sept 2025 ) clear project goals and guidelines are not written nor correctly nor in stone, so in practice we are not ready to give anyone the Approver role. There will be an effort to put these down in writing sooner than later.

## Maintainer

For now there is one maintainer. Andrea Bogazzi.
There is also another maintainer that is a dear friend and likely one between the first people to know if something happens to me and we lost the maintainer, but is not actively contributing to the project.
In the short term I don't plan to add more maintainers, unless my interest in the project diminishes and it is clear that I'm neglecting it.

Open source projects that are an hobby may have wave of contributions depending on the particular moment in the life of the project and the life of people contributing to it, if someone feels like to take a break for a period it should be free to do so without too many problems.

### Responsibilities

TBD
