Roll your own fundraising drive with Selfstarter

This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

Free software projects in search of a fundraising model now have yet another alternative to consider: Selfstarter, a Ruby-on-Rails application built to emulate Kickstarter-style donation drives in a self-hosted environment. It provides a simple crowd-funding framework, but one that can be adapted to a number of fundraising scenarios. Although it is not the only free software option, it does have its advantages.

Fundraising for free software development has been a popular topic of late. In August, we covered Adam Dingle and Jim Nelson's survey of the available approaches at GUADEC, which centered on a comparison between the popular pre-funding donation model used at Kickstarter and the pay-what-you-like post-funding model used by the Humble Bundle. In September, we looked at Bradley Kuhn's report at LinuxCon North America about the Software Freedom Conservancy's (SFC) successful drives to raise funds tied to specific developer contracts.

MediaGoblin and constituent-relations-management

Since then, at least one well-known project has launched a large-scale campaign of its own: Chris Webber, lead developer of the MediaGoblin web publishing platform, is trying to raise funds to support himself for one year's worth of full-time development. As Webber explained on his blog, the campaign is run through the Free Software Foundation (FSF), but it required some engineering effort to support several features missing from the FSF's base fundraising platform. Specifically, Webber wanted a donor rewards system, the ability to send email updates to donors, and an automatically-updating "progress bar" that tracked the total as pledges came in. All three features are found on the Kickstarter platform. In addition, Webber wanted a custom theme to match the MediaGoblin site, which of course is not supported on Kickstarter.

The software powering the donation drive is CiviCRM, which the FSF adopted in 2010, after having promoted its development as a "high priority project" for several years. CiviCRM is used by several other organizations in the free software community, including the GNOME Foundation, Wikimedia Foundation, and Mozilla. In an email, Webber noted that some of the CiviCRM modifications used to deploy the MediaGoblin drive were trivial — such as the progress bar, which uses a simple AJAX query to the CiviCRM back-end.

Whether the remaining changes constitute an interesting enough module to make into a formal extension or patch set remains an open question. "I think we did a good job of making something that was feature-compatible with Kickstarter, but part of that was also working on things as in terms of looks," he said. "I'd be interested in someone building on that work to make something that people could much more easily click-and-go make a fundraising campaign. Would CiviCRM be a good fit for that? It seems like it's working well for us, but then again, I'm not the one running it."

CiviCRM is a not a lightweight package; it is intended to serve as a "relationship management" system over the long term — which in human terms means multiple years. It also needs to be integrated with another content management system like Joomla! or Drupal; installing and maintaining it introduces considerable overhead if all one is interested in is a one-shot fundraising drive.

Self-starting start-ups

In contrast, the Selfstarter application is designed for rapid deployment. The company behind its development is Lockitron, a start-up created to build and sell a smartphone-based keyless door lock system. When the company's project proposal was rejected for inclusion on Kickstarter, the team wrote a work-alike and hosted the fundraising drive independently. The drive was evidently a success; the site reports that well over 1400% of its target amount was raised, and the entire first round of pre-orders is sold out.

Selfstarter is built for Ruby 1.9.2, and is designed to be deployed on production servers using Heroku (although Heroku is optional, but recommended). The code is available from a GitHub repository; after cloning the repository the basic setup can be installed with bundle install --without production and the necessary databases (by default, SQLite) created with rake db:migrate , both of which should be old hat to Rails developers.

Fresh out of the box, Selfstarter does require quite a bit of customization. The config/settings.yml file includes all of the campaign settings, from the project name and fundraising goal to the strings displayed for the various messages (for example, whether donors are called "donors" or "backers," and the note explaining what to expect when the campaign ends).

Selfstarter supports only Amazon payments, though the README file explains that this and several other limitations were choices made for simplicity when Lockitron wrote the application for its own campaign. Similarly, it supports embedding Vimeo videos, using Google Analytics, and has configuration variables for Facebook and Twitter "share buttons."

Adding support for additional payment systems, video embedding, and sharing services are all among the first requests filed on the issue tracker. They will probably not prove difficult, but the fact that the current values are hardcoded in simply illustrates that Selfstarter is a young project that still requires manual configuration. The same is true of the theming and CSS styling; all of the media assets and stylesheets are simple to locate, but radically altering the layout of the pages will require a bit more work.

The area in which Selfstarter really needs further development is in its support for different styles of campaign. The Lockitron campaign is built around a single product, offered at a single price. That may work well for the majority of product-driven drives, but it does not offer donors the choice of levels that many Kickstarter campaigns use to "up-sell" potential backers. Tracking donor movements between levels and statistics on average donations is unimplemented. Selfstarter is also built around the assumption that the campaign is an all-or-nothing funding proposition (that is, if the target amount is not met, no one will be charged). This is the Kickstarter model, but others may prefer to take a different approach.

Selfstarter also does not implement user accounts, strong authentication, or provisions for emailing donors. The value of features like emailing donors is debatable, although it is a popular way to keep buzz alive in Kickstarter drives. The developers do say that they welcome patches for these and other features, however.

Getting your kicks

With its current feature set, Selfstarter has the makings of a decent funding platform for independent projects. But independent projects are hard for potential donors to discover — a drive run by a well-known entity like the FSF is likely to garner discussion, but for new projects, waiting for visitors flush with cash to stumble across the campaign site is a worrisome proposition.

One intriguing possibility on this front was raised in a thread on the Selfstarter issue tracker. User elf-pavlik asked whether Selfstarter could be merged with the similar open source crowdfunding project Catarse. Diogo Biazus from the Catarse team replied that Selfstarter's identity as a self-hosted fundraising platform made it significantly different from Catarse's model, which involves maintaining a curated stable of multiple projects. But the two could still find a way to interoperate, he said:

So, why not create a channel in Catarse, where we could receive projects from the Selfstarter? In this fashion, Selfstarter could evolve to be the Catarse's entry point to new projects (as an Engine) without losing it's original identity of simple-project platform.

That concept is interesting because it would help any free-software-focused crowdfunding efforts balance the benefits and risks of going-it-alone. As Dingle observed in his GUADEC talk, a pool of multiple fundraising projects hosted at one site is easier for users to find, but it makes smaller and less well-known projects harder to find on the site itself, because the "cool" projects grab most of the attention. The possibility of a hybrid model, where individual projects could run their own campaigns but still be accessible from a central service, might help.

Of course, regardless of whether the campaign is self-hosted, run by the FSF, or promoted on a specialty Web service, the trickiest part of the fundraising drive is not the software component — it is marketing the campaign to donors and convincing them to open their wallets. Selfstarter and similar efforts cannot do that part, though they can take developers' minds off of the implementation problem, which is at least a start.