BD-4558 Github roles and how to obtain them
Purpose:
The purpose of this document is to describe the GitHub roles used by the FIO protocol and how each role can be obtained by community members.
Assumptions:
Dispute resolution will be performed by airing of grievances first to the organisation owners on the GitHub and the last resort is open discussions with the fio steering committee during its scheduled meetings.
Roles:
GIT Organization
Owner – This role can perform all admin and management of members, repositories, teams and other git information associated with the FIO organization. importantly owners can create and remove repositories within the organization. Owners can invite new members into the GitHub organization.
Member – An organization member is a pre existing git account that has been invited and accepted the invitation into the FIO organization. Members can be assigned to teams within the FIO protocol. Members can be provided permissions/repository roles (see below). Members can be private or public (this is the choice of the member).
Membership on the fio protocol can be requested of GitHub members by asking an existing member via social media. Membership may be requested directly of any GitHub account by the organisation owners. Membership will be granted based upon the perceived merits of the individual to the fio protocol by the organisation owners. Any disagreement in membership can be brought first to other members to convince them to advocate for the new member.
Team – a team is a group of FIO protocol members. Teams can be provided permissions/repository roles (see below). teams can be secret or visible.
Repository – a repository is a set of content being source control managed by the FIO organization. Repositories can be public or private
Permissions/Repository Roles
For more details of permissions in GitHub see Repository roles for an organization - GitHub Docs
members may request permissions along with details relating to why they need the desired permissions of the organization owners via DM or any other contact info that is appropriate for organization owners. Owners will evaluate the merits of requests and act according to the best interests of the FIO protocol.
The following permission items apply to teams and individual members within the FIO protocol organization.
Read
Read and clone repositories. Open and comment on issues and pull requests.
Read permission is given to all GitHub accounts
Triage
Read permissions plus manage issues and pull requests.
Triage permission will be given to members as needed in their service of the fio protocol by the organisation owners as necessary to facilitate their efforts.
Write
Triage permissions plus read, clone and push to repositories.
Write permission is given to code owners
Maintain
Write permissions plus manage issues, pull requests and some repository settings.
All developers will be given maintain permission
Admin
Full access to one or more repositories including sensitive and destructive actions.
Organisation owners will be given admin permissions
Recommendation for branch names for organization repositories
master – current operational baseline.
develop – development branch used to deliver projects deemed worthy of release.
release – release branches and release tags will be made at the discretion of the release manager from the develop branch.
feature – feature branches will be made for any dev efforts, names feature/<unique work task name>
Change requests (PR)
Reviewer/commenter – anyone with read access to the repo can comment on changes/PRs.
Approver – anyone with read access to the repo can approve or request further changes to a PR.
Code Owner – for each repository or groups of associated repositories there will be a set of organization members who are qualified to provide an approving review to enable merge of the PR (it is recommended at least 2 of these be identified per repo). it is recommended that GitHub Teams be used to identify code owners for related repositories on the GitHub. organization owners will manage the teams and members according to the best interests of the FIO protocol.
Merger – once a PR has met approval requirements any organization member with write access to the repository may merge the PR (this requires write access to the repo).
a process of change request will be used within FIO. By convention the FIO protocol owners will decide how many code owner reviewers are required for pull requests to be merged into the above named branches of each repository. it is recommended that for develop this number be at least 1 code owner, and for master it be at least 2 code owners. All FIO organization repositories should be configured in the same manner. Each should enable require review by code owners. a code owners file should be established in each repository.
How to obtain a role --
Owner, Admin
For FIO the GitHub organization administration is the duty of a single WP.
In order to gain these roles, a candidate will need to be a member of this WP team. The combined role (owner/admin) will be assigned to 2 or more people at the discretion of the WP lead. In FIO the accounts serving as owner and admin for all repositories will be the same git accounts in order to ensure consistency of configuration of FIO git repositories.
Code owner --
code owners are experienced engineers in designing testing and implementing of software either on or off of the blockchain. Any organization member or GitHub member with the necessary interest or experience can become a code owner via the following means:
Request to become a code owner by contacting an existing code owner or organization owner and providing credentials as a developer.
Be nominated as a code owner by existing code owners or organisation owners based on the quality and quantity of code comments provided to the repos in question.
The granting of the code owner role will be performed by approval of the existing set of code owners.
The existing set of code owners will give a thumbs up, thumbs down to approve or deny the request. An existing code owner will request of the organisation owner to add the new code owner to the necessary teams on the GitHub.
Code owners who become inactive on the repositories in question will be removed from the set of code owners. Any code owner or organisation owner can ask of the existing code owners to give thumbs up thumbs Down via social media to remove an existing and inactive member.
Code owners may re-join the necessary team as their participation increases (code owners can be on the team then off then on again as needed by the FIO protocol)
Assumptions:
It is assumed that the GitHub FIO organization owners will act in the best interests of the FIO DAO when interacting with the FIO community. If any community member feels that they are not, then issues can be brought up to the FIO steering committee during the normal steering committee WP review and monthly meeting process.