A leaderboard to rank developers based on their contributions to code reviewing, coupled with an Ethereum based cryptocurrency reward scheme.
The PR Game is a gamification of the code review process. We all love writing code, and some of us love reviewing code. But for a large number of us, code reviewing isn't how we necessarily want to spend our time but a necessity it is! The PR Game adds an extra incentive to code reviewing in the form of a cryptocurrency where developers mine coins based on their contributions to code reviews.
The default score is simply the ratio between the number of PRs that a developer has reviewed versus the number of PRs
that they have authored. This score can easily be adopted in the pr_metrics.py
to take into account other PR related
metrics such as number or length of comments in the PR, or decaying PR lead time for example. The possibilities are
numerous, whatever KPI it is you are looking to optimise.
Checkout the original blog post.
To setup the PR Game for your organisation there are a few properties that need to be configured in the config.ini
file.
To scrape pull request information from your organisations GitHub you need to
create a Github app organisation app
then you need to configure the AccessToken
and Organisation
name in the config.ini
file accordingly.
The dashboard is open to all users and authentication is up to you as the owner. Users who have a score below 1 aren't
listed and their names are randomised. To allow for users in your organisation to sign into the dashboard to reveal
their position then you need to setup and
configure your GitHub app provide an
OAuth flow. Once this has been done you can configure the Secret
, ReturnUrl
and ClientId
accordingly in the
config.ini
.
The default PaymentWalletAddress
in the config.ini
is configured to be the same as which the Ethereum node is initialised.
This account is gifted a large quantity of ETH and is responsible for paying out the developers periodically. The default
developer account password is configured in PaymentWalletPassword
and can be changed and updated by them via their wallet app.
# Install JS dependencies
yarn --cwd web install
# Build JS
yarn --cwd web build
# Build Docker image
docker build . -t pr-game:latest
# Run Docker container
docker run -d -p 8081:8081 -p 9999:9999 -p 8545:8545 pr-game:latest
Download and install Mist Wallet. Then run:
mist --rpc http://node-ip:8545