Financial transparency: where your money goes with MediaGoblin

As you very well may know, we are currently running a campaign for federation and privacy. The campaign ends Friday, and we're close to meeting our second milestone. Anything you can do to help us out seriously helps a lot.

To the people!

But you may wonder... where does your money go? How is your money used? Well, good news! We're revealing our full finances, and I'm giving a full breakdown of how we spent the money we raised in our last campaign. I hope by the end of this post you'll both be well informed about how your money goes to use, and also agree that as in terms of output from your donation, donating to MediaGoblin is a great use of your money!

So, first of all, here's the file. (Update: this file is waived into the public domain under CC0 1.0, so feel free to use/modify as you see fit!) It's plaintext, so you can open this in any text editor, but it's specifically formatted as a ledger file. (We're using some metadata in there which requires using git master as ledger 3 has not been released yet, though if you remove the lines that look like comments embedded in the entries, they should work fine on ledger 2.) Note, this is not the official record of MediaGoblin's expenses/income. The FSF maintains their own books of MediaGoblin... it just so happens that in order to make sure that I am planning things correctly, I currently duplicate their efforts. The file you're getting here is thus my own records. It may not be following standard accounting practices... this is mostly for my planning purposes. :)

Also note that for simplicity's sake, the file I've given gives only the money raised during last year's campaign and after, prior to this year's campaign starting.

Okay! All that said, let's get on to the finances, right? Let's run a quick command to get the full balance::

  $ ledger -f gmg_campaign.ldgr bal
              $1177.10  Assets:FSF account
             $50250.90  Expenses
              $3899.46    Campaign
               $200.00      Advertisement
               $440.00      Graphic design
              $3259.46      Rewards
               $479.48        Figurines
                $83.03        Postcards
               $752.07        Shipping
              $1620.70        Shirts
               $324.18        Stickers
             $40231.36    Development
             $30481.36      Chris Webber
              $4500.00      Natalie Foust-Pilcher
              $5250.00      OPW
              $5142.80    FSF administration
               $977.28    Travel
               $560.45      Chris Webber
               $416.83      Jessica Tallon
            $-51428.00  Income
             $-5000.00    Directed grants
            $-46428.00    General donations

Wow, okay! That's a lot of data. Maybe... too much data? If you aren't familiar with double entry accounting or with the ledger command line accounting tool, that might look confusing. Don't worry, we can break this down step by step.

Let's start with income::

  $ ledger -f gmg_campaign.ldgr bal ^Income
            $-51428.00  Income
             $-5000.00    Directed grants
            $-46428.00    General donations

Why is the income negative? Don't worry, that's normal in double entry accounting, if confusing to newcomers. In double entry accounting, money is never "lost"... it always comes from and goes to someplace. Hence income is negative... the money we're getting is moving initially from these accounts, but since they start at 0, they show up as negative. If it helps, forget there was ever a negative sign there.

As you can see, there are two sub-accounts under income. There's $5000 that we received for a specific grant... this grant is currently in progress and being completed by Natalie Foust-Pilcher. I'll get to that later. The rest of the money ($46428) we got in is labeled "general donations"... this is money we received in the campaign that is more flexible. Note that I don't keep track of each individual donation transaction in the file... the FSF does that. I'm just mirroring the data I'm pulling down from them.

Okay, so that's the money we got. Where did it go? Let's look at our assets (money we have) and expenses (money we spent). For simplicity's sake, we'll keep the data we have restricted to one level deep:

  $ ledger -f gmg_campaign.ldgr bal ^Assets ^Expenses --depth=2
              $1177.10  Assets:FSF account
             $50250.90  Expenses
              $3899.46    Campaign
             $40231.36    Development
              $5142.80    FSF administration
               $977.28    Travel

(You'll notice the combined amount here is the same number as the income we looked at above, but positive!)

Okay, keeping this at a 2-level-deep structure... this is easy to read. As you can see, we've still got $1177.10 in our account at the FSF as a safety buffer, and we've spent $50250.90 of that.

That might not be easy to really get a grasp on just looking at in text form, so let's see where that money currently is, in pie chart form:

MediaGoblin expense breakdown

Okay! Now that's a bit easier to read. From the chart it's easy to see that the vast majority of money went toward development itself. Actually, if you combine this with travel (ie, reimbursement for myself and another contributor speaking about MediaGoblin or participating in MediaGoblin hackfests), that's over 80% of the budget right there directly to the most important part of the project... developing the project itself! (We'll come back to the development section in a moment... but first let's get the smaller slices of the chart out of the way.)

As mentioned above, the 2.3% in the "unspent / available section" is the bit we still have in the bank at the FSF. Keep in mind that this is before our current fundraising... we had a small amount left in the bank; not terribly much, but enough to keep a buffer.

Next up there's the 10% "FSF administration" portion of the expenses. The Free Software Foundation is our fiscal sponsor... they handle a number of things for us, including running the infrastructure portion of the campaign. If we had gone with a proprietary crowdfunding system, we may have seen similarly a 5% slice going into the crowdfunding platform hosting overhead. However, as fiscal sponsor the FSF does much more for us than just hosting funding infrastructure; they also help handle employment contracting, sending out tax forms, having financial stewardship that ensures that the money will be used in a way that's in alignment with their mission, tax deductability of donations, processing Bitcoin donations, and promotion of the project. Other things too that I'm missing, I'm sure. So, 10% seems like a big percentage possibly, but they're doing a lot for us (including basically handling our human resources overhead), and if you consider that this money goes to a nonprofit that supports free software... not bad!

So the last of the not-directly-development-related slices is the campaign expenses themselves. Let's focus on those details right now, shall we?

  $ ledger -f gmg_campaign.ldgr bal Campaign
              $3899.46  Expenses:Campaign
               $200.00    Advertisement
               $440.00    Graphic design
              $3259.46    Rewards
               $479.48      Figurines
                $83.03      Postcards
               $752.07      Shipping
              $1620.70      Shirts
               $324.18      Stickers

So, the campaign expenses were 7.6% of the above budget. Of that, the vast majority of the campaign-related clearly went towards the rewards themselves (83.6% of the campaign expenses, but just 6.3% of the actual entire budget). This actually is not bad... I once heard it said that "many crowdfunding people lose their shirts over sending out shirts", and that thankfully isn't the case here... the vast majority of the money we brought into the project got to go into advancing the project itself. It is a big chunk, but not so big as to take away from the project. But yes, you can see that if you'd prefer to not get the goodies that will increase your impact, but at the cost margin here accepting a reward is still perfectly okay if you'd like to do that! (And we can't blame you, we do have some cool rewards.) Shipping did factor in hugely, especially international shipping, which is very expensive these days... as long as you add to your donation when selecting a reward for international shipping though, that should be okay.

Aside from that, we did put in $200 as an experiment on advertising the campaign on Reddit last year... though we've gotten a lot of our donors from Reddit, I'm afraid I can't say that was cost effective for us (oh well, I guess it's paying back a bit for all the publicity we get from Redditors), and it was only 0.4% of the budget, and a lesson learned. We also paid longtime MediaGoblin contributor and original lead graphic designer of the project Jef van Schendel to do some design for last year's campaign, which thankfully we were able to reuse a good portion of for this year's campaign. Given all that Jef has done for the project, we were more than happy to pay him a bit for this help.

As for travel, mostly I consider this rolled in with the development section, but oh well, we'll give it its own paragraph anyway. The $560.45 was from a bit of traveling I did promoting MediaGoblin, and the $416.83 was from Jessica Tallon (our Outreach Program for Women participant and lead on our federation work) joining us at our GNU 30th hackathon. This reimbursement also fulfilled a travel grant requirement for our Outreach Program for Women participation.

Okay, that's all the smaller slices out of the way. On to the big one: development! Note, in this case I don't mean the nonprofit line of "development" which is to say "fundraising" but rather "putting money into the actual development of the project" (whether code or non-code contributions). Anyway:

  $ ledger -f gmg_campaign.ldgr bal development
             $40231.36  Expenses:Development
             $30481.36    Chris Webber
              $4500.00    Natalie Foust-Pilcher
              $5250.00    OPW

So you may remember earlier when I mentioned that we had a "directed grant" as a $5000 source of income. With 10% going to the FSF, the remaining $4500 goes straight to development... this work is being picked up by Natalie Foust-Pilcher, who is working on this now. (Actually, since the work is still in progress, not all of it has been yet paid, but for the version of the ledger file I am putting up, it's easier to just account for it as paid than to try to explain some sort of accrual accounting transactions or something equally smart.) The project is to improve MediaGoblin's metadata support and make MediaGoblin more for academic environments and archival institutions. Pretty cool!

$5250 goes to our participation in Outreach Program for Women. Last year we had an incredible summer with six great internships (four of them women) between Google Summer of Code and Outreach Program for Women.

There are few things we've done that I am more proud of in MediaGoblin; not only was the output great (this lead to a whole slew of awesome features in 0.5.0, helped kickstart our federation work, introduced us to community member Natalie Foust-Pilcher who is now doing work on our present MediaGoblin-for-archival/academic-institutions, and allowed us to have a massively cost-effective increase in our development productivity, while also expanding our community), I also think it was a morally important thing to do. It did have a personal cost for me... the money spent on Outreach Program for Women effectively came out of my paycheck. But the return on that investment was so great, both productivity-wise and community-wise, that I'm confident in that decision.

So, speaking of my paycheck, let's get to that last item of the budget, which is by far the biggest item, at 59.2% of the budget. $30481.36 of the money we raised went to me, which paid me to do a whole multitude of things: I was lead developer and primary architect of the project, I did lots of code review, I did a bunch of administrative work, I oversaw all those internships both mentoring and meta-mentoring... I wore a lot of hats. I worked hard, taking very very few days off. (Most weeks were 60 hour weeks, and aside from a few family gatherings around holidays and a couple of sick days, I did not even take weekends off really.) If you consider the over a year's worth of dedicated work I put into the project, and then you actually factor in the time it's taken to do each of these fundraising campaigns, that money was my income for day to day work for a year and a half's worth of work. That puts my income from this project at only about 20k USD per year. That's not a lot of money for anyone in the United States (yes, I am spending my own savings to do this), and as a programmer, especially with the experience I've accrued at this time, I could be making a lot more for a lot less work and much less stress. So why do it?

I believe in MediaGoblin, and the work we are trying to do here. Both the software itself, but more than that: the things it stands for of user freedom. We are at a critical time, where many people are paying lip service to the ideas of network freedom, but the actual amount of dedicated work going into it is very low. I think we're at a real crossroads right now... on the one hand, people are aware of issues of network freedom, but on the other hand, that's because things are really bad right now. There's a better internet out there that we want. But someone has to build it. If not us, who? I believe we have the right community, the right skills, and we are well positioned in MediaGoblin to make a real and actual difference.

And we are making a difference. Just look at what the last year has brought us: we got out five major releases, six major projects across those summer internships, not to mention that work on federation has actually begun and is moving forward. And you got me working on the project, at a heavily, heavily discounted price. I'm going to say: dollar for dollar on network freedom development, I don't think you can actually get a better deal than the one you are getting here.

If any or all of that resonates with you, I'm going to ask: please, please donate. We're working hard to reach our second funding milestone, and we're actually very close when you factor in the current 10k matching grant.

We work hard to make good use of any money you donate (and, as you see, even helping you know how that money is used). Anything you can give helps a lot.

goblin force badge for campaign