Continuing the discussion from On solving the world's problems:
The snowdrift rule is: Every snowdrift-style patron donates 0.001$ per other snowdrift-style patron.
Each month, the donated money is transferred and the patron’s “Crowdmatch progress” pages are updated – this is equivalent to sending an invoice, except that the donation itself is automated. (Let’s ignore the automation bit for a moment and try to imagine the most trivial system that would implement the crowdmatching mechanism.)
Notice that the amount donated by the patron is the exact same amount for each patron of the project. As a result, the identical invoice is sent to all patrons. This can easily be done via a mailing list where all patrons are subscribed – no harm is done if additional curious people are subscribed. (In reality, the invoice is not exactly identical, because donations are only transferred if they are above some threshold, so carry-over computations need to be displayed per patron.)
In this simplified world, the only piece of software needed is a counter to keep track of how many people pledged. There’s a huge problem though: How do you verify that the number of patrons is correct? You want to use a reasonably correct number for generating the monthly invoice. (Since we’ve ignored the automatic donation bit for the moment, we cannot do fancy tricks like 1. reserve money from each credit card, 2. count how many of them succeeded, 3. transfer donations using this precise number.)
The most precise data we have is once the donations actually come in, i.e. at each crowdmatch event, we know how many patrons there were for the last crowdmatch event. Nothing stops us from simply using this number in the invoice – this will imply a 1 month lag in the number, but who cares.
If we now stop ignoring the automation of donations, here’s what would be left to implement:
- Count how many people donated a certain exact amount in a certain time window, multiply with 0.001$ and send the result as a human-and-machine-readable invoice
- Automatically pay incoming invoices that come from snowdrift.coop (i.e. invoices that are PGP signed by a certain key)
Both would be absolutely trivial if the outside software ecosystem would follow the unix philosophy. But it doesn’t. (Edit: This still ignores the carry-over stuff, but see my second post)