Funding the development of free software is a problem.
While it is usually to the benefit of the community for free software to be
written, the cost of development often outweighs the benefit to any one
user of the software.
In this article, I propose a method of overcoming this problem using a
system of conditional donations, so that a group of users can cooperate to
fund software development without the need for altruism: this
is a system that should make sense even to penny pinching bastards! The outcome
of a small scale test of the system is also described.
These ideas emerged from discussions in the Melbourne University Information
A conditional donation is a donation in which the amount of money donated
depends on the outcome of the entire funding round. For example
"I will donate $1 in every $100 raised, up to a maximum donation of $1000"
Conditional donation allows a donator to eliminate the risk involved in donating to a
project by ensuring sufficient development occurs to repay their investment.
Another advantage of conditional donations is that a small donation can have a large
effect on the outcome by inducing other contributors to donate more.
This encourages fresh donations.
The Rational Street Performer Protocol
We formalize the idea of conditional donations by describing
a protocol, the
Rational Street Performer Protocol (RSPP),
which is intended as a refinement of Kelsey and Schneier's
Street Performer Protocol.
In RSPP donations are collected in rounds. The intention is for a
series of rounds to fund a project in an ongoing manner. Over the course
of these rounds, donators will refine the conditions for their donations,
hopefully converging towards an equilibreum.
In each round, conditional pledges are sought. These take the form
"For each dollar raised over $X, I will contribute $1 for each $Y raised,
up to a maximum donation of $Z."
More complex donations can be constructed from multiple pledges of the form above.
The only real restriction on donations is that they be a continuous function
of the total amount raised.
Once the pledges have been collected, it is possible to find the maximum amount that
may be raised consistent with all pledges. This is a rather circular idea --
the total amount raised depends on how much each donator donatates, and the amount each
donator donates depends on the total amount raised. There will nevertheless be an optimal
RSPP has several advantages as a system for raising funds:
- A donator can eliminate risk from their donation by ensuring that sufficient funds are raised
to lead to creation of software that more than pays back their own donation.
- Since a fresh donation can lead to other donators donating more, a modest donation can
have a large effect on the total raised. This encourages fresh donations. (one can estimate
the effect of a donation by calculating the effect it would have had in previous rounds)
RSPP in practice
A small test of RSPP was performed, to raise money to advertise
The Circle is a P2P application, and users of the Circle would benefit from
more people using it -- more files to download, more people to talk to, more gossip.
This therefore seemed a reasonable test of RSPP.
In total, ten people pledged donations to advertise the Circle. An interesting result
of this was that the conditions of everyone who contributed were fully met -- everyone
who pledged payed the full amount they were willing to contribute. In total, $AU270 was
From this result, it seems that everyone who pledged
underestimated the total that would be raised.
This is a psychological effect that RSPP can help overcome.
Confident of a successful outcome, people can donate more freely.
Another method for open-source funding methods is described in The Wall Street Performer Protocol. This article describes a system of software completion bonds based on Ronnie Horesh's social policy bonds.
Essentially, donors place funds in escrow accounts and issue bonds on a market. The bonds come with a specification for a free software project; the holder of a bond will receive its monetary value if the specification is ever fulfilled by any free software project (as judged by some third party specified when the bond is issued).
Free software creators can fund their work by purchasing bonds and then working to complete the specification and receive the full value. Or they may partially complete the specification, raising the bonds' market value, and then sell the bonds to other interested parties. If multiple groups hold bonds for the same project, it is in both parties' interests to cooperate rather than compete, unlike in CoSource-style "bounty" funding.
The Rational Street Performer Protocol encourages users of free software to cooperate in fund-raising without the need for altruism. Software completion bonds attack the other side of the problem, allowing the recipients of those funds to cooperate without the need for altruism. The two ideas are not exclusive: RSPP gives a method for raising funds, and WSPP gives a method for disbursing them. RSPP could be used to raise money for software completion bonds.
The thing I've never understood about the Wall Street Performer Protocol (catchy name, BTW) is, what's to prevent speculators buying the bonds
on the expectation that someone else will do the work.
For example, let's say project P is proposed and funded. I have no interest in working on project P, but I can buy series P bonds. Others, who DO want to work on P also buy the bonds, write the code, complete the spec, and cash in. I cash in too,
even though I didn't do a lick of work. If I have the cash, I can
take a small position in many projects and get a payout on some percentage of them, and maybe make a lot of money. If enough speculators do this, actual developers will hold a minority of the shares, and the price of software has to be grossly
inflated to compensate. (Or, the developers work for peanuts.)
Other problems: pay not related to work. Two developers, Alice and Bob, (it must be a crypto project) agree to work on project C. Bob buys a bond so he'll be
paid. Alice has more cash, so she buys 10 bonds. Then they work on the project. Alice and Bob both work hard, and Project C is completed.
Bob earns $10,000. But Alice earns $100,000. Bob is annoyed. (In this case, Alice represents one part developer and nine parts speculator.
There's also an unfair situation if Alice and Bob each buy one bond,
but Bob does most/all of the work.
I don't see how the WSPP can address these inequities.
I'm thinking I might try using the Rational Street Performer Protocol to allow me to get paid for copylefting the technical articles I write. I'd write many more articles than I currently do if I didn't have to take time out from paying work to write them.
Is there software I can run as a web application to collect pledges?
Also, I'd like to do a survey of my readers to get their input before I try something like this. Do you know of some software (hopefully easy to configure) that I could install on a web server to do a survey with? Not a simple poll, but with multiple questions and some questions with freeform text input. I guess I'll go check freshmeat next.
I discuss this at greater length
in my diary.