Once you've done some work as a Member, you may wish to become a Core developer and have a direct hand in deciding what work is merged to the Main/Master Branch to become official Baseline Protocol technology and specifications.
Core developers are people who take an active role in advancing the Baseline Protocol and/or related projects. They are primarily responsible for:
Contributing code or contributing to specification work in the form of PRs that are linked to open and prioritized issues
Reviewing and merging PRs into the master branch
Cutting, testing, and releasing new versions of the related Baseline projects
Working with the TSC and General Assembly to advance the Baseline Protocol
They can/should also contribute in the following ways:
Writing epics and issues to guide development
Setting up and supporting infrastructure (running demos, CI systems, community projects, etc...) that further Baseline
Working with the community to help with adoption
Presenting the project and key technologies to the public (in-person, webinar, videos, articles, etc...)
How to become a core developer?
There are two ways to become a core developer: You are asked by a current core developer, or you make request to an existing core developer to become one.
With either path you become a "provisional core developer". As such you will need to show consistent contributions of code and/or specifications to the project. This can be in the form of pull requests that get merged into master. Or it can be in the form of technical specification, system architecture and related artifacts that guide the development activities of others.
All provisional core developers that focus on code development (over standards) must meet with the existing core developers and demonstrate they are capable of the following:
Running the project locally
Using the testing framework
Explaining the components of the system architecture
Walking through the code and explain the baseline process
Once the provisional core developer demonstrates their capabilities, the existing core developers will vote during the next scheduled core developer meeting to give the prospect full core developer status. Members must vote with 2/3rds majority to add a core developer. Voting that results in a tie or potentially other issue will be brought to the TSC for review.
What is expected of core developers?
In general, a core developer needs to:
be an expert in one or more fields related to the project
be an expert in finding and engaging the advice of other experts
show commitment over time with multiple PRs merged
be reliable in completing issues to which they have been assigned
attend the weekly core developers meetings (with occasional absences allowed)
demonstrate competency in software development or specification writing
follow the project style and testing guidelines
have a high degree of understanding of the project architecture
be welcoming to others in the community who are using the project
contribute in ways that substantially improve the quality of the project and the experience of people who use it
follow branch, PR, and code style conventions
How core developers organize?
Core Developers meet and discuss issues virtually via the #maintainers slack room in the baseline slack.
There are weekly Core Developers meetings where members can discuss plans and issues related to the project, updates, release planning, and other related topics. Anyone may attend these meetings, but the primary participants are core developers. Core developers are required to produce meeting summaries and document decisions.
Meeting signups are maintained on the "Join the Community" page on https://baseline-protocol.org.
How to stop being a core developer?
Any of the following ways:
You stop reviewing PR's, responding to messages, answering emails, and/or generally ghost the project.
You are disrespectful towards anyone in the community and/or involved in the project.
You are disruptive to the general process of maintaining the project, meetings, discussions, issues, or other.
You notify the other core developers you would like to relinquish your core developer status.
Two-thirds of all current core developers constitute a quorum for a meeting involving a question of removal. A simple majority vote from core developers attending the meeting is required to remove a core developer, but the TSC may be brought in to arbitrate if the core developer to be removed or any other core developer wishes to dispute the action. (See Governance for details.)