Open Source Musings The thoughts, ideas, and opinions of an open source guy

Free Your Stuff: open sourcing reviews and other casual contributions

A padlock with a key in it

What do you do if you want to get your data out of your favorite website, but that site doesn’t allow you to easily export your data? If you’re software developer Erik Moeller, you get coding.

Moeller created Free Your Stuff, which is:

an “open source Chrome/Chromium browser extension that lets you download and, optionally, release under a free license any contributions you’ve made to other websites. The extension can currently get your data from Yelp, Amazon.com, Goodreads, IMDB, Quora, and TripAdvisor.

I asked Moeller a few questions about Free Your Stuff, which he graciously answered. He even provided the title for this post!

Here’s what Moeller had to say about his brainchild.

What gave you the idea to create this service?

I’ve spent a lot of time in the world of wikis (Wikimedia etc.), where there’s a strong culture of free licensing and making all content available for download. This is important for user freedom — it enables a community of users to part ways with a site operator, as has happened in a few wiki communities over the years. Unfortunately most websites neither default to free licensing nor offer a convenient way to download one’s own content. I figured it was time to make a little dent in that.

By using Free Your Stuff, you can make sure your contributions don’t get lost if a website goes out of business. As more people open source their content, the more feasible it becomes for the open source movement to create fully open alternatives to existing sites and services. And, of course, it makes it easier for you to re-publish your content in other ways.

What technologies is Free Your Stuff built on?

For the web service, it’s mainly Node.js + Koa + MongoDB. The Chrome extension and the web service use many of the same front-end libraries (jQuery, Bootstrap, DataTables, etc.).

From the perspective of a user, how does the service work?

You download the Chrome extension from freeyourstuff.cc, visit a supported site, and click the extension’s button. It fetches your stuff and lets you download and (optionally) publish it under an open license.

How does Free Your Stuff actually get a user’s data?

Once the user clicks the extension button, the extension can act with the user’s permissions on the current site. So when we request pages or make calls to API endpoints, this is done with the user’s session cookies for the site, for example. The extension can do pretty much everything the user can do on their own.

What format is the freed data in?

The data is stored in a simple JSON format. For machines, there’s an additional schema file you can download that includes type and field information.

Free Your Stuff currently relies on a Chrome extension. Will you be developing a Firefox add-on or a web interface?

Firefox has been requested a few times and is very possible. I appreciate any help. I might do a web service version for public data, but then we’d still have to let the user somehow prove that it’s their data (not all sites offer OAuth-type authorization APIs).

Why did you choose the sites that Free Your Stuff currently supports?

I’m very interested in free and open reviews in particular (I’ve written a bit about that here). That said, several folks asked for Quora support, so I recently added that.

What services/sites do you plan to or hope to add in the future?

Beyond Quora, I want to look into multimedia support. Right now we’re just doing text, which is easy to download and pass around. Handling large sets of user-contributed media will be an interesting technical challenge.

Aside from logging bug reports, how can people get involved in the project?

If you run a server somewhere, you can host a mirror of content that’s been open sourced. If you know how to code, you can write a plugin for a site you care about! I’ve provided some documentation here.

The extension and the service are still in beta. Bug reports (and, of course, pull requests) are especially appreciated.

Thoughts? Let's start a conversation on Twitter.

Did you enjoy this post or find it useful? Then please consider supporting this blog with a micropayment via Liberapay. Thanks!