Roles are the way contributors take responsibility for Bisq Network resources and processes.
Introduction
There are many resources and processes vital to the operation of the Bisq Network that require ownership by individual contributors. For example, someone must merge pull requests into the bisq-desktop
repository, someone must manage DNS for the bisq.network
domain, someone must conduct monthly stakeholder voting, and so on.
This document defines the system of roles used within the Bisq DAO to enumerate, define and track each of these responsibilities. The system is designed with two major goals in mind:
-
To maximize role owner autonomy in order to achieve Phase Zero decentralization goals.
-
To maximize transparency such that DAO stakeholders can effectively review and vote on role owner compensation requests.
Properties
The following are properties common to all roles.
Duties
Duties are actions that must be performed for a certain resource or process to function normally.
For example, a repository maintainer’s duties include merging pull requests in a timely fashion, and a website operator’s duties include keeping the site available at all times.
Rights
Rights are special permissions or other access required to perform the Duties of a role.
For example, a repository maintainer’s rights include write permissions to their repository, and a website operator’s rights include administrative access to site hosting infrastructure.
Infrastructure
The following infrastructure is used to define and manage each role.
Docs
Each role should be documented at docs.bisq.network, not in a document of its own, but in a section of a document dedicated to the larger resource or process in question.
For example, there is no "Proposals Maintainer" document, but rather there is a Proposals document having a Maintainer section within.
Team
Each role has a dedicated GitHub team where each of the role’s Owners are members. The team is used to manage access to GitHub repositories that the role is responsible for and to send notifications to role owners with @mentions in GitHub issues and pull requests.
For example, the @bisq-network/desktop-maintainers team has write access to the bisq-network/bisq-desktop repository.
GitHub teams are visible only to GitHub organization members. To join the @bisq-network org, see the Contributor Checklist. |
The primary role owner is also assigned as the maintainer of their role’s GitHub team, such that they may manage the team without requiring the intervention of a GitHub admin.
Issue
Each role has a dedicated GitHub issue in the bisq-network/roles repository, wherein:
See the docs/30[Proposals Maintainer] role issue for an example.
Types
Most roles fit into one of the types below.
Maintainer
A Maintainer is a contributor responsible for enforcing process in a given GitHub repository.
Examples: docs/63[Bisq Desktop Maintainer], docs/30[Proposals Maintainer].
Maintainer Duties
-
Merging or closing pull requests after sufficient review.
-
Tagging releases.
-
Triaging incoming issues and keeping them organized over time.
A Maintainer is not a Developer or a Reviewer
Submitting and reviewing pull requests is something any contributor can do; neither are maintainer duties per se. This is particularly important from a Compensation perspective. If you are a maintainer, do NOT group your development and review activities together with your maintainer role in your compensation requests. Rather, account for them separately like any other contributor would. The goal is to have as many competent contributors developing and reviewing as possible, not to load everything on the maintainer. C4 is the inspiration here, it’s worth (re-)reading. |
Operator
An Operator is a contributor responsible for keeping a given resource running and functioning normally.
Examples: docs/19[Forum Operator], docs/14[Bisq Pricenode Operator].
Administrator
An Administrator ('Admin') is a contributor responsible for managing a given resource.
Examples: docs/16[GitHub Admin], docs/23[Keybase Admin].
Common duties
The following duties are common to all roles.
Reporting
Primary role Owners should report once a month in the form of a comment on their Issue.[2] The report should contain whatever information the owner believes would be valuable to other users, contributors and stakeholders. The comment should be formatted in Markdown as follows:
## YYYY.MM report
<content>
/cc bisq-network/compensation#<number>
Where <content>
is the content of the report itself, and <number>
is the number of that contributor’s monthly compensation request. docs/16#issuecomment-393852612[Example].
Some roles may have nothing to report in a given month. In this case, a report should still be written stating that there is "nothing to report". docs/18#issuecomment-393217596[Example].
Compensation
Role owners should include a summary line item for each role they own in a monthly compensation request. Each summary should include:
-
The name of the role,
-
a link to the owner’s monthly report for that role, and
-
the total amount of BSQ being requested for performing the role’s duties during that month.
-
Bisq Desktop Maintainer: bisq-network/roles#63 (comment)
(350 BSQ)
-
Bisq Seednode Operator: bisq-network/roles#15 (comment)
(150 BSQ)
Secondary role owners should not submit monthly reports or compensation requests for a role unless they actually performed the duties of that role during that month. |
The amount of BSQ requested should include any hard costs (e.g. hosting) plus time and effort costs involved in performing the duties of the role. These costs should be detailed in the monthly report as follows:
## 2018.07 report
-
Regular duties
(150 BSQ)
-
Big issue cleanup
(200 BSQ)
Total: 350 BSQ
/cc bisq-network/compensation#42
## 2018.07 report
-
Hosting 2 nodes @ 50 USD/mo on Digital Ocean
(100 BSQ)
-
Upgrade nodes to v0.7.1
(50 BSQ)
Total: 150 BSQ
/cc bisq-network/compensation#42
The only work items that should be included in role compensation are those Duties that can be performed only by that role’s owner. Everything else should be itemized independently.
For example, as mentioned above in the Maintainer Duties section, a repository maintainer’s main duties are merging pull requests and triaging incoming issues. If the person playing the maintainer role submits their own pull requests, or performs reviews of others' pull requests, that work should NOT be grouped together with regular maintainer duties when putting together a compensation request. Rather, each PR submitted or reviewed should be called out separately as individual contributions.
Bonding
Most roles involve special Rights that, if abused, could cause damage to the Bisq Network. For this reason, role owners must put up a bond in BSQ commensurate with the amount of damage that could be caused. In the event of a role owner turning into a bad actor or being grossly negligent, this bond can be confiscated through a BSQ voting process.
Bonding is not currently in place during Phase Zero of the Bisq DAO, but is being implemented and will come online when we go live on Bitcoin testnet.
Processes
The following are some common roles-related processes.
Proposing a new role
Typically, proposing a new role is one part of a larger proposal to introduce some new resource or process.
-
Discuss the idea informally with other contributors, e.g. via Keybase.
-
Follow the Proposals process to formally suggest the new resource or process.
-
Draft documentation for the new resource or process, including a section about the new role as a pull request to the bisq-network/bisq-docs repository.
For example, see the proposal to support Tor Relays and the resulting docs/72[Tor Relay Operator] role issue.
Adding a secondary role owner
A primary role owner may add a secondary owner with the following steps:
The Roles Maintainer role
Roles Maintainers are the contributors responsible for the system of roles described throughout the rest of this document.
Rights
-
Write access to the bisq-network/roles repository.