MediaGoblin 0.8.0: A Gallery of Fine Creatures

    | tags: release

    MediaGoblin 0.8.0: A Gallery of Fine Creatures banner

    We’re excited to announce that MediaGoblin 0.8.0, “A Gallery of Fine Creatures”, has been released! The biggest news is that the client to server API (making use of the future federation API) is much improved! That means that users no longer have to depend on a browser to access MediaGoblin. You can access and post to your MediaGoblin instance via any of several compatible clients, like Pumpa and Dianara (or write your own using PyPump)! The grand goal is a generic (and ubiquitous) client protocol that will work with lots of different served applications that use the pump standard. Eventually, any Pump API compatible client will essentially be a MediaGoblin client and a Pump.IO client. We expect more client types to be added very soon!

    Part of the process of world domination via federation means that we’re now able to support serving content to multiple client types through a single protocol.

    For example, here’s a user uploading an image using the Pump.IO client, Pumpa:

    Pumpa uploading image to MediaGoblin

    And here’s that same image, now uploaded to MediaGoblin!

    Image from pumpa now on MediaGoblin!

    In a nutshell, the client to server part of the api/federation equation is working. We are still working on server to server federation that will enable us to share comments, tagging and all the other things that can happen to your shared content on someone else’s server that you may (or may not) want hear about.

    By the way, if you’re using MediaGoblin with Apache (rather than nginx or some other setup), you’ll need to add “WSGIPassAuthorization On” to your config or the API won’t work. You can look at this wiki page for reference.

    Speaking of updating and getting with the times, we are officially offering preliminary support for Python 3. Most of our features work without Python 2 installed, so welcome aboard futurists! As always, if you spot something we missed, we’d love to hear from you via our bugtracker, mailing list or IRC channel.

    Also on the upgrade list for this release, Gstreamer! We’re now using version 1.0 which adds a nice new thumbnailer and includes much improved video transcoding support. If you didn’t get thumbnails before, it wasn’t you. We encourage you to try again and see if it works for you now!

    Video thumbs, rendering nicely
    Thumbnails from Venom’s Lab, licensed under CC BY-SA 3.0

    Obviously, the future demands cleaner packaging. Configure and make support is now the default… welcome to fewer steps for installing your MediaGoblin instance, which will be critical as we build packages for Fedora, Debian and any other distro that wants to help its users host the federated future of the web.

    We’ve also switched away from Transifex, which had become proprietary (boo!) to an instance of Pootle that many of our fellow GNU projects are now using for translations. If you’ve been looking for a fully free translation tool, Pootle may be just the thing you’ve been looking for!

    And finally, we fixed the footer. It is now forced to the bottom of page, instead of floating in the middle of short pages which everyone agrees was sub-optimal.

    Next up is server to server federation. This is what Jessica Tallon has been working on full-tilt — thanks to everyone who pitched in on the MediaGoblin campaign. (Though the campaign is over, you can still donate!) Both Chris and Jessica have been participating in the W3C Social Working Group on a federation standard. (As well as a general purpose client to server API… you better believe the increased client support coming out of this release is related!) The design is very closely related to the existing Pump API spec we’ve been using. You can read the current draft of the standard here. We’ve got more news on the way, including on that federation front. Expect more news soon!

    Thanks to everyone who is helping us make the future of the web happen everywhere! This release wouldn’t have happened without the help of these people: Alon Levy, Asheesh Laroia, Andrew Browning, Berker Peksag, Boris Bobrov, Christopher Allan Webber, Deb Nicholson, Ineiev, Jaakko Luttinen, Jakob Kramer, Jeremy Pope, Jessica Tallon, Jim Campbell, Laura Arjona, Meg Ford, Rodrigo Rodrigues da Silva, and sturm. You all rock!

    Want to put in your own help towards the future of federated, awesome media publishing? Join us! Visit us in IRC (#mediagoblin on or sign up for regular updates on our mailing list Got ideas or questions about our work? Email us at press AT mediagoblin DOT org — we look forward to hearing from you!

    Userops: Deployment for the People

    Deb Nicholson and I both recently gave a talk at FOSDEM 2015 called “Can Distros Make the Link?” (A recording is here, and my slides are here, hit “s” for speaker notes or read the org-mode source if you prefer.) The main purpose of the talk was that packaging libre network services/applications for distros is important, but distros in their present forms aren’t really enough to solve the deployability problems and pains that anyone trying to run their own libre servers knows. I had a bit of a worry that this thesis would upset part of the audience (it was in the distros room, after all) but it turns out that everyone seemed to agree and be on board.

    Many audience members even encouraged us that this conversation needed to continue beyond FOSDEM, and there was discussion of hosting a mailing list to continue the conversation. As usual, everyone had various ideas of where to host it, but the audience seemed to feel that MediaGoblin’s servers were fairly neutral ground, so we announced that we would put up a mailing list and announce it here when we got the chance.

    It’s a bit delayed, but I’m happy to announce the launch of the userops mailing list! If you’re interested in talking about making deployment easier for every-day users, please consider joining the conversation there. (Oh, and we also have an IRC channel: join #userops on, if you’re the IRC type!)

    Why the name “userops”? As you may have guessed, this is a pun on the term “devops”; the idea is that we also care about configuration management and deployability, but we aim for a different audience. Devops, as the name implies, focuses on liberating developers in the world of deployment, particularly developers who have to deploy a large number of machines for $LARGE_CORPORATION at their job. Userops, on the other hand, aims at liberating users in the world of deployment. You shouldn’t have to be a developer to take advantage of network freedoms and run network-oriented free software. After all, the free software world generally agrees that it makes sense that users of desktop software should not have to be developers, and that “user freedom” takes priority over “developer freedom”… the freedom of $LARGE_CORPORATION, while not something we object to, is not really our primary concern. (Though of course, if we build solutions that are good enough for end-users, corporations will probably adopt them, and that is fine! It just isn’t our focus.)

    (Oh, and in case you stumble upon it, “userops” was originally a name I had for one of my personal projects experimenting with deployability, but a friend of mine convinced me that the term was too useful to be constrained to one particular piece of software, so I’ve renamed that project! Everyone is now free to use the term “userops” to refer to the vision described above.)

    We believe that “userops” is now more important than ever. These days, it is not just enough to use free software network services, one must have the ability to deploy and make use of that software. (For many of this, the timeliness and urgency of this is seen with the turmoil for many free software developers figuring out where to go now that the hosted version of gitorious is being shut down.) And as you may have guessed, we’re well aware of how true this is not of just “all that other libre network services”; MediaGoblin requires quite a bit of technical skills and resources to run. We’d like to improve that, but we think there are some real challenges that are beyond what MediaGoblin can do as MediaGoblin itself: things need to happen on another layer (or layers) too. Hence “userops”!

    If this is something you likewise care about, and especially if it’s something you’re working on or thinking about (or would like to), consider joining the conversation!

    MediaGoblin 0.7.1 released

    | tags: release bugfix

    MediaGoblin 0.7.1 has been released! This is a bugfix release building on MediaGoblin 0.7.0.

    Upgrading is highly encouraged to those running postgresql databases especially. There were some issues in the previous release that lead to users of postgresql to see random errors. We had some problems related to a couple of (non-critical) features not handling transactions well… these have been disabled for this release, but will likely be re-enabled by 0.8.0’s release.

    Thanks to everyone who made this release possible: Andrew Browning, Christopher Allan Webber, Jessica Tallon, Low Kian Seong, Matt Molyneaux, and Odin Hørthe Omdal. Thanks so much!

    Please see the release notes for details. Happy goblin’ing!

    Deb Nicholson receives O’Reilly Open Source Award

    | tags: deb award

    Those of you who follow MediaGoblin closely likely know of Deb Nicholson, our community manager. This post is a bit late, but nonetheless, I wanted to share something exciting that happened:

    Deb Nicholson receiving the O'Reilly Open Source Award
    Deb Nicholson receiving the O’Reilly Open Source Award.
    Photo by Bryan Smith, released under CC BY-SA 3.0 Unported.

    That’s right! Deb Nicholson won the O’Reilly Open Source Award, one of the most recognized awards in the FLOSS world, for her work on GNU MediaGoblin and OpenHatch. Here’s the text of Deb’s nomination:

    Deb Nicholson has been a sparkplug for Linux and FOSS advocacy and she can best be described as the traffic cop at the intersection of technology and social justice. A free speech advocate, economic justice organizer and civil liberties defender for years, Deb became involved in the free software movement. She is the Community Outreach Director at the Open Invention Network and the Community Manager at MediaGoblin. She also serves on the board at Open Hatch, a non-profit dedicated to matching prospective free software contributors with communities, tools and education.

    …as well as the message from the award announcement itself:

    Deb Nicholson works at the intersection of technology and social justice. She became involved in the free software movement about five years ago when she started working for the Free Software Foundation. She is currently the Community Outreach Director for the Open Invention Network and in her spare time, she serves on the board of OpenHatch. Congratulations Deb!

    Deb Nicholson receiving the O'Reilly Open Source Award
    Photo by Bryan Smith, released under CC BY-SA 3.0 Unported.

    Deb and I have known each other from when she used to work at the Free Software Foundation and we became friends over time. I’ve always been impressed with the tireless work Deb has put into making the world of free software a better and friendlier place for everyone, as well as her extensive knowledge gained from a long history of social justice work. Early on in MediaGoblin starting up as a project, I talked to Deb about it and asked if she’d be interested in being involved. I’m glad I did… Deb has brought much to the project and I constantly lean on her skills in writing, her sharp wit, and her clear and regular guidance on how to build MediaGoblin into a better community. MediaGoblin wouldn’t be the same place it is today without Deb working with us.

    Deb, thanks for your work on MediaGoblin, OpenHatch, and so many other things… and for being a great friend to myself and many others in the MediaGoblin community! We’re glad to have you here!

    MediaGoblin 0.7.0: Time Traveler’s Delight

    MediaGoblin 0.7.0: Time Traveler's Delight banner

    Welcome to MediaGoblin 0.7.0: Time Traveler’s Delight! It’s been longer than usual for our releases, but we assure you this is because we’ve been traveling back and forth across the timeline picking up cool technology that spans a wide spectrum of space and time. But our time-boat has finally come into the harbor. Get ready… we’ve got a lot of cargo to unpack!

    You may remember the work we are doing towards federation, and even the demo we showed earlier of that progress.

    Well we’re excited to announce that the first piece towards MediaGoblin federation has landed! We don’t have server-to-server federation working yet, but we do have the first parts of the Pump API in place: you can now use the Pump API as a media upload API! Are you a python developer? Starting a client couldn’t be easier now, using PyPump! We also have a whole new section of our docs about the Pump API. There’s of course more Pump related things to come in future releases, but we’re excited to be well on our way!

    jpope's blog running sandy 70s speedboat
    Our new theme Sandy 70s Speedboat looks great on galleries…

    Sailing into this release is an excellent new theme from Jeremy Pope: Sandy 70s Speedboat! This retro-styled, light colored theme has just enough frills to make your site look good while emphasizing the real stuff you want to show off… your media!

    jpope's blog running sandy 70s speedboat
    … and on individual media, too!

    MediaGoblin is now using the skeleton CSS system, making it more responsive. MediaGoblin sites now adaptively fit better into a variety of resolutions, including mobile phones, across the board. (Responsive design is the thing all the cool kids are into these days right?) Now MediaGoblin is much nicer to look at on the go!

    More responsive with Skeleton
    Now more responsive!

    We also have a new blogging media type. However, it’s very experimental and could use more testing and careful code review… but if you’re interested in testing and helping out in this area, check it out!

    In addition, we have a number of features that have come in thanks to work from a grant to improve MediaGoblin in use with galleries, libraries, archival institutions, and museums. The first of these features is something people have long wanted: the ability for site administrators/curators to “feature” media to appear on the frontpage of a site.

    We also now have a tool for command line bulk uploading that has come in through this grant work. Do you already have a set of media and you need to pull into a MediaGoblin instance? You can now use the command line bulk upload tool to automate pulling in that media, including setting metadata.

    Showing off metadata with the Vitruvian Man

    Wait, metadata? What do we mean by that? Well, what if you want to store some extra information about some work? (What year was this painting done in? If the author was different than the uploader, who was the original author? And many other things!) Now you can associate this information easily with media that you are uploading. With the appropriate plugin enabled, this information is viewable to the user… but it’s also machine readable. Now even robots can appreciate the cultural works on your MediaGoblin site!

    For site administrators, we also have two new subcommands: “deletemedia” and “deleteusers”. Whew! Now you can get that cruft that shouldn’t be there off your site in an automated manner!

    There are many other fixes and improvements in this release… too many to detail! But some highlights are: the long-hated “video thumbnails not generating” bug is fixed, many improvements to translations, fixes to the PDF media type, new default permissions options for the config file, new template hooks for plugins, and much, much more!

    Whew… that sure is a lot! It’s good to see that our time travel madness has paid off in a bounty of fixes and improvements. In the meanwhile, this release was a huge group effort (as always!) so let’s thank our contributors for all their hard work: Aditi Mittal, Aleksej Serdjukov, Alon Levy, Amirouche Boubekki, Andrew Browning, Berker Peksag, Beuc, Boris Bobrov, Brett Smith, Christopher Allan Webber, Deb Nicholson, Elrond (of Samba TNG), Jessica Tallon, Jiyda Mint Moussa, Jeremy Pope, Laura Arjona Reina, Loïc Le Ninan, Matt Molyneaux, Natalie Foust-Pilcher, Odin Hørthe Omdal, Rodney Ewing, Rodrigo Rodrigues da Silva, Sergio Durigan Junior, Sebastian Spaeth, Sebastian Hugentobler, and Tryggvi Björgvinsson. Thanks so much everyone… we really couldn’t do it without you!

    Stay tuned for more. We’ve got more cargo that’s shipping its way on in for the next release… we’d better get back to work! In the meanwhile, enjoy this release and be sure to check the release notes. And if you’re interested in joining our crew, we’d love to have you on board, so please do join us!

    Happy travels, everyone!

    Update: Are you upgrading from a previous version of GNU MediaGoblin? The release notes left out a step (now corrected)… you should also run the command “git submodule init && git submodule update”. Otherwise you’ll be missing out on the “skeleton” CSS framework and things will look really weird! Not to mention the sandy 70s speedboat theme! If you’re doing a new install, this won’t be a problem.

    Welcome Jessica Tallon, MediaGoblin’s second full time hire

    Dropdown menu for administrative features

    I’m excited to announce that MediaGoblin has hired its second full-time programmer: Jessica Tallon! Those of you who follow MediaGoblin closely may recognize that name: Jessica joined us as part of our Outreach Program for Women participation last year (she wrote about her experiences with the program on this blog). Jessica has been working on federation support in the project.

    Second milestone (60k) unlocked!

    Since our crowdfunding campaign was a massive success, reaching its second milestone, that was enough funds to bring Jessica on full time. (You may be wondering: what about me (Chris Webber) then? Am I still full time on the project? The answer is “nearly”; I am full time without pay for now, but will be picking up a small amount of contracting to cover the bills so I will be at the status “nearly full time”… thus MediaGoblin will have mostly two full time people on staff at the moment!) You might notice that the number of dedicated resources on the project corresponds with the “number of goblins unlocked”. That’s no coincidence… we made no official announcements because we couldn’t be sure until everything was arranged, but the number of goblins on that page was the number of dedicated resources we hoped to pull in. Luckily, we were able to make an arrangement and pull in Jessica. That’s great news for MediaGoblin!

    Already, the results are showing themselves. Jessica only joined a couple of weeks ago and already she has landed the first major milestone for federation (not federation itself, but the upload API… it’ll be in the next release, so more soon!) and has been helping get 0.7.0 out the door. The results speak for themselves!

    But even though the results speak so clearly, there’s nothing like hearing right from the source! As such, Deb Nicholson was kind enough to interview Jessica… so without further ado, here is their conversation below!

    Deb: You started working on GNU MediaGoblin through an Outreach Program for Women internship. What initially drew you to MediaGoblin, instead of one of the other fine projects that offer paid summer internships?

    Jessica: MediaGoblin was a perfect fit for both me and what I wanted to work on. The welcoming community was something which was immediately apparent, I wanted to work on a project which was going to be welcoming and for me to feel like I could continue after OPW had concluded. I also wanted a project which would provide me with any help I might need while getting to grips with the code. It was clear that MediaGoblin was a perfect fit for me in that respect.

    Deb: You spent last summer re-writing the PyPump library. Are projects besides GNU MediaGoblin using your work?

    Jessica: I’ve seen several projects which are using PyPump as well as interest in helping develop the library itself. Spigot is a program written against PyPump that allows posting to RSS feeds to There is also PumpMigrate which migrates data from one account to another, this could be really useful both on and MediaGoblin to allow someone to move their account to a different instance.

    Deb: You’ll be working on GNU MediaGoblin’s federation branch for the next year. What do you think the biggest or most challenging part is going to be?

    Jessica: I think that there will be two big and difficult aspects I will encounter over the next year. The first will be across instance subscriptions which would allow you to subscribe to a collection or user and have updates to those be visible on your instance even though they exist and have been uploaded to another instance.

    The second and possibly the most difficult but also most rewarding part will be the sharing of media. This will allow you to share some media uploaded from a mediagoblin instance via your own mediagoblin account possibly on another server or even a instance. Permissions on how users will be able to interact with the media by commenting, favoriting or re-sharing will make the problem interesting but brings challenges.

    Deb: What do you think GNU MediaGoblin will look like in 3 years time?

    Jessica: This is a very difficult, over the last year that I’ve been apart of the project I’ve seen so much happen. I think within 3 years we’ll have mature federation support which will make running your own instance easy without isolating yourself from the social aspects of sharing your media. There’s also lots I see happening from others in the project for easier deployability which will hopefully make deploying a MediaGoblin instance much more achievable for a lot more people.

    I am so excited to see what unexpected changes occur over the next 3 years. There are so many contributors and it’s such a wonderful community and project that I know I’m always going to be blown away by what can be achieved by everyone involved.

    MediaGoblin campaign a massive succcess! What’s next?

    | tags: campaign

    MediaGoblin campaign a success!

    So this happened. To say “we are floored with the success of the campaign and the community support we’ve received” would be a huge understatement. We made the call to arms to fight for federation and privacy features on the web, and you answered.

    Like an adventure movie, the stakes were high, at times we weren’t sure we were going to make it, but there was excitement abound and in the end, we were victorious. We surpassed not one but two milestones and met a 10k matching grant (the final thing putting us over the top of that last one, by the way, was cashing in our bitcoins). We gave a complete and total financial transparency breakdown, and you responded with appreciation. We came to the last week of the campaign at 67% of the way to the second milestone… still a ways to go… could we do it? And we did! Or we should say, YOU did. You made this possible.

    But that’s hardly the end of our adventure… the fundraising campaign is over, but the most the most exciting times are ahead of us. Let’s look at just what you all have succeeded in unlocking here:

    First milestone details
    Second milestone details

    Wow, feature-wise that is a lot of stuff! From federation, to private media sharing, to PyPump development, to podcast support… that’s a lot of features alone. And I’m sure we’re all excited about the 1.0 release ahead! You’ve funded all of this, which means we are getting to work on it. We’ll be sure to be making updates as we move forward with implementing it all.

    There are more exciting updates on the way, also. Two of the things unlocked we’ll be making more announcements over the next couple of weeks, but we are preparing for them to make sure we can pull them off in a way that’s best for everyone. The first of these is the “donor chosen feature”. We’re going to give donors a list of significant features to choose from, but we want to make sure we have a list of things that’s both feasible and interesting to pull off.

    The second is the premium hosting reward. This got unlocked as a reward option just barely a day before the campaign ended. We thought it would be pretty crazy (and unfair) to offer this option right before the end of the campaign and then only give people a few hours to select them, so here’s what we’re doing instead: the main rewards from the campaign are now closed down (you can still donate if you like), but very shortly we’re going to open things up again, but with only premium hosting as an option. We think this is the best route for everyone: it will allow us to properly plan out the reward in a way that works well, and it will give people a chance to actually opt in to the reward.

    So, that’s plenty to keep looking forward to! Keep your eyes here for more updates on the above!

    Last of all, what about all the rewards you all ordered? The plan is that we will begin delivering on those over the summer in order to maximize reward delivery with actual project productivity. My spouse Morgan Lemmer-Webber will (very kindly) be assisting with reward fulfillment over the summer, in-between her research projects. We realize some of you may be eager to get your rewards, but hopefully you’ll be happy to realize this means we’ll be able to optimize time between getting those out and getting work done on the real stuff you funded: MediaGoblin itself!

    So, that’s a lot to look forward to. We hope you’re as excited as we are as we step into this new era of MediaGoblin development. And there are surely more exciting things to announce along the way.

    In the meanwhile, it’s worth repeating: thank you to everyone who supported the campaign. We’re tackling some ambitious stuff here in MediaGoblin-land with the end-goal being nothing short of paving the way for a better internet. Thanks for helping us make that possible, and joining us on this journey. We couldn’t do it without you.

    Last day of the campaign! Second milestone unlocked! Let’s keep it up!

    | tags: campaign finale

    Well, we’re on the last day of our campaign! I’m excited to say that on our second to last day you all pulled off some incredible things, which means that the second funding milestone is now unlocked! This puts us in a stellar position, but we should keep the momentum going! If we can keep raising money today, things will get even more exciting… more on that in a few!

    But first, let’s talk about this incredible thing you all did yesterday.

    Second milestone (60k) unlocked!

    In one day, this community both met the full 10k matching grant and unlocked the second funding milestone in one epic sweep! Let me just say that it’s a very strange problem to have where you have to discard an entire blogpost you were about to post about being reasonably close to unlocking the second milestone because by the time you were going to upload it, your community had just blown past the target! But that’s what happened.

    Don’t get me wrong, I’m not complaining. ;)

    So, where are we at then, things-we-have-unlocked-wise? Let’s take a look:

    First milestone details
    Second milestone details

    Wow, that is a lot of exciting stuff! This is going to be an exciting year ahead in MediaGoblin-land!

    You may also be wondering… What about that donor voted feature? What about that premium hosting reward! Yup, you all have earned both for sure! We’ll start looking into the best way to do the donor-feature-voting shortly. As for the premium hosting reward, it would be unfair to get all the way to 60k on the second to last day and then on the last day have you all scramble to get in on the premium hosting. So instead, after the campaign wraps up we’re going to close down all the rewards, but in a couple of weeks, we’ll make an announcement and reopen donations-with-rewards, but with only premium hosting as the reward option. That’ll give us a chance to plan this way out in the optimum way possible for you all, and give you all a chance to actually get in on it.

    So, is that it? What’s next? We’ve still got a whole day left of crowdfunding! Well, first let’s look at what the next milestone is:

    Third milestone details

    Holy moly! That is some exciting stuff! It also seems like a bit of a ways away, but it might just be possible after all… we did do an incredible job yesterday, after all, and the last day of crowdfunding tends to be the strongest!

    We don’t have to make it all the way to the next milestone for extra cool things to happen, though. Everything additional donated today will make more exciting things over the next year more possible. We are on the verge of making some really thrilling announcements, including looking into the possibility of having multiple dedicated resources on the project. We can’t make any promises… how feasible such things are partly depends on how we do today. And even though some of that is extra surprises to come, if you have any doubts about how responsibly we’ll use the money, you can judge for yourself… we are totally financially transparent.

    So make us proud… help us make internet history by donating today!

    goblin force badge for campaign

    PyCon: A Brief Debrief

    Note from Chris Webber: I wasn’t able to make it to this year’s PyCon due to wrapping up the crowdfunding campaign. However, Deb went, and was able to write this nice recap below. If you get a chance though, I encourage you to check out our campaign page… we are right at the end of the campaign and could really use your help to end it in style!

    PyCon logo

    It was really awesome to catch up with people and talk with them about Python and community-building and MediaGoblin at the recent PyCon in Montreal. It finished so recently that some folks may even still be sprinting.

    I saw a super-useful talk on turning your computer into a server that mentioned MediaGoblin as one of the reasons that you would want to do that. This talk is pretty great in that the target audience is the person who is pretty new to managing hardware. If that sounds like you (because it’s definitely me) then I urge you to check it out. (Thanks Asheesh and Karen!)

    The other talk I really enjoyed was one about Technical on-boarding, training and mentoring which went deep on how to bring new people in to a technical role. There were some things that we already do here with both our technical and non-technical people, but they made a great point about quickly getting new-ish people to help even newer people. The presenters, Kate Heddleston and Nicole Zuckerman, provided a link for more materials that you may also want to take a look at on their git repository.

    It was truly excellent to hang with the crew from the Rochester Institute of Technology. I found out that some of the students there are using MediaGoblin to host stuff and knew all about our work. Plus, the MAGIC folks had some pretty big news of their own; RIT is going to be offering a minor in FOSS. That is truly a game-changer! So exciting!

    I met some great new people who were interested in our larger work, our SpinachCon work and also people who just like goblin stickers or ascii art. I gave away loads of stickers, learned some stuff, chatted with folks about legal issues, found my new favorite band and caught a cold on the way home. I’m looking forward to attending PyCon again next year and hopefully, we’ll be able to host a MediaGoblin sprint! The PyCon Organizers did an absolutely fantastic job — thank you!!

    goblin force badge for campaign

    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 dedcated 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

Page 1 / 7 »