BitHub = Bitcoin + GitHub. An experiment in funding privacy OSS.

moxie0 on 16 Dec 2013

At Open Whisper Systems, we often get emails from people who’d like to donate money to the project. For an OSS project, particularly one that aspires to a collective sense of ownership, handling donations is not always entirely straightforward.

The fundamental contradiction is that while donations are meant for a project, they’re traditionally sent to a person. Even if a project sets up a bank account, there are still only a few people who have access to the money itself, and distributing it appropriately can be hard to figure out.

It’s never been clear to us how we should handle small donations, so oftentimes when people ask about donating, we just tell them that the best way to help is to use the software, spread the word, and file well-documented bugs when they find them. Which is true! But it’d also be great if we had a nice system for handling donations that matched our objectives for collective ownership.

A Bitcoin Experiment

We’ve written and deployed a simple service called “BitHub” that does two things:

  1. Accepts Bitcoin donations and allocates them into a single pool of funds.

  2. Distributes the Bitcoin donations from that pool to anyone who commits to our repositories.

We’re starting with an initial “worse is better” distribution strategy: the owner of every merged pull request is paid 2% of our total balance at the time of the merge. Depending on how that works, we might adjust the payout strategy in the future, or even add features like the ability to donate for bounties on specific GitHub issues.

In order to effectively communicate the current payout for a project to developers, a BitHub instance will render the current payout amount (in USD) as an image that can be embedded in a GitHub project’s (or anywhere).

For example, this is the current Open Whisper Systems payout per commit, rendered dynamically as an image by the Open Whisper Systems BitHub instance:

A project’s BitHub instance will also return JSON (or rendered HTML) of the most recent payouts. For example, these are the five most recent Open Whisper Systems payouts returned from the API:

This way anyone can donate to the project, and the donations are distributed to anyone who’d like to be involved in the project.

We’ve got Bitcoin! We need Bitcoin!

If you’d like to help the development of Free and Open Source privacy software that is attempting to advance the state of the art for secure communication and also reduce the friction required for ordinary people to make use of it, you can submit Bitcoin donations here:

Anyone will be able to use your donation to contribute time to Open Whisper Systems projects, and you can watch the commits that your donation is paid out on.

If you’d like to commit code to Free and Open Source privacy software, commits to these repositories are currently paying loading... from our BitHub instance:

Try It Yourself

The BitHub project is itself open source and available for anyone to deploy themselves.

It should be extremely easy to configure and deploy, and it even pays out for commits to itself!

This was inspired by the tip4commit prototype, which we saw last week. We thought the idea was great, and wanted anyone to be able to host a system like that themselves.

Moxie Marlinspike, 16 December 2013