Christopher Lemmer Webber on MediaGoblin and ActivityPub

Sean Tilley
May 25, 2018 · 15 min read

Thanks so much for joining me, Chris. In your own words, please introduce yourself!

I generally consider myself a “user freedom advocate”. This has a lot of permutations including general free/libre software and free/libre culture things (once upon a time I was software engineer and then tech lead for Creative Commons), though I suppose starting about 7 years ago my focus started to shift to network freedom things.

The landing page of a MediaGoblin instance.

When did you initially become interested in federated networks?

Who here remembers StatusNet and its flagship server identi.ca when they were huge? Well I do, that’s how I got started here. The fediverse at that time was incredible; some of the most formative conversations I had on user freedom and licensing and all sorts of cool topics happened during that era.

Obligatory screenshot of the old Identi.ca instance of StatusNet

“At the time I was really loving using StatusNet for microblogging, but I was doing a lot of artwork which I wanted to share with friends. I was troubled by the growth of YouTube, Flickr, DeviantArt, etc as mega-hubs of media, and I thought… maybe I could build something here for myself, and others could use it too.”

I mentioned this on the fediverse and there was an immediate and large amount of interest. I had already registered mediagoblin.org for MediaGoblin as a pun on “gobbling media” and had written up a rough game plan, and having announced an IRC channel, way more people started showing up and expecting things and talking about things like they may happen. (I should note that I’m *co-founder* of GNU MediaGoblin… Will Kahn-Greene and Deb Nicholson were also co-founders, and early on Matt Lee hosted the web infrastructure for us, though we later moved on to our own stuff.)

Chris preaching the federation gospel in a Libreplanet 2015 talk.
OStatus, the old fediverse protocol.
An early infographic used in the implementation tutorial. At a high level, ActivityPub is about sending and receiving messages between Actor objects.
From Mediagoblin’s crowdfunding campaign. Some great original art assets.

Unlike quite a few federated platforms in the space, Mediagoblin is a GNU project. What was it like to create this system under the GNU umbrella?

GNU has been good for us generally. There are a lot of ups, and some constraints that can sometimes feel frustrating, but usually have good reasons behind them. One thing that’s good is the ideological clarity that GNU brings… software freedom all the way, and the user’s freedom in general is always front and center. I really appreciate that. Plus, being under the stewardship of the FSF meant we could use their fundraising infrastructure for the crowdfunding campaigns we ran.

“I think it was the right decision for MediaGoblin. I think MediaGoblin is philosophically aligned with GNU, and I believe in GNU’s history and core ideas, and being under the FSF’s stewardship has been great.”

GNU also has a lot of rules that are related to its history, such as the requirement to have info manual output and to have autotools like ./configure && make commands. Some of these have been harder for us to fullfill because they were designed for GNU as a system that was mainly centered around (GNU’s Not) Unix’y C (and sometimes Guile) original world. However I will say that GNU has made some attempts to update to see if these can be more easily accomodated.

What does the landscape of federated communication look like in 2018?

“Federated social web work tends to have peaks and valleys, but I think we’re at another peak.”

Well a lot happened between then, most famously that ActivityPub became a W3C Recommendation. Since then we’ve seen an increasing number of federated applications picking up ActivityPub.

Funkwhale version 0.13, an audio catalog server with fledgling support for ActivityPub

You are listed as one of the co-editors of the ActivityPub protocol standard. Could you tell us a little more about what that effort looks like, and how you got involved?

“There’s a lot to it… you have to reply to *every* issue that’s raised and either satisfy the person who raised it or clearly document why they weren’t satisfied, and any non-satisfied responses get reviewed.”

Sure! So where I last left off, we had hired Jessica Tallon to work on federation by implementing the Pump API. I saw Evan Prodromou make an announcement that he was co-chairing a new W3C Working Group on federation standards, and I messaged Evan asking if I could be involved since we were currently implementing federation support.

Photo of the W3C Social Web Working Group taken at Face to Face Meeting, 2016–03–16 at MIT. (Source: W3C Wiki)
W3C SocialWG group at TPAC

“The vast majority of my time for three years ended up being involved in ActivityPub standardization.”

There’s a multi-stage process from standards where editors work on their own Editors Draft, then things move on to a First Public Working Draft, a Working Draft, then when things get close finally a Candidate Recommendation, and then hopefully Recommendation! There’s a bunch of other steps in-between… most notably a test suite and gathering implementation reports. And that’s not to mention the couple of months we spent on use case analysis.

What projects and organizations are involved in AP’s development?

The Social Web Working Group wrapped up its standardization work, but a lot of work continues, and we are continuing that work in the Social Web Incubation Community Group, or SocialCG for short, of which I’m co-chair. So while ActivityPub reached standards recommendation, there’s plenty to do.

  • More work on anti-abuse and anti-spam tools.
  • Decentralized identity. For instance, Hubzilla has “nomadic identity” in that posts are really tied to your public key fingerprint, and in a sense that’s more your username than anything else. But it would be good to be able to rotate your key, so Decentralized Identifiers are interesting work in that direction. (I actually do some work on this through my job at Digital Bazaar, though it isn’t yet connected to federated social networks.)
  • Merging peer to peer networks and federated networks. I see that some people have started exploring running ActivityPub instances over Tor onion services. More stuff like that!
  • I think there’s a ton to be learned from the object capability security community. Petnames, etc etc.

Why work on a new protocol?

Well, as I mentioned before, I was very worried about a “fractured federation”, the fact that we had many federated social networks but they couldn’t talk to each other. I hoped that we could help alleviate that through a standards process.

Pubstate, an early test client Chris built as an ActivityPub implementation
Soci-el, an ActivityPub client written in emacs lisp.

Within the last year, Mastodon made the decision from v1.6 onwards that they will support the AP protocol. Are there any other platforms on your radar that are implementing it as well?

The list has grown quite a bit! Aardwolf, Bridgy Fed, distbin.com, dokieli, Funkwhale, Hubzilla, Kroeg, Mastodon, Nextcloud, Numaverse, PeerTube, places.pub, Pubstrate, Smilodon, tags.pub, Pleroma, Pump.io, and Rustodon are all either implementors of or are currently implementing ActivityPub. Seems like a healthy list!

What’s your impression of all the new ActivityPub implementations coming into the fediverse?

I mean, I couldn’t be more excited. People are implementing and working together and I’m not even always involved, which is a good sign.

What features of ActivityPub are you most excited about?

I mean, I’m most excited about seeing interoperability actually happen. Aside from that, I’ll say that I think the extensibility model is quite good, but most nerdily I think that ActivityPub being an implementation of the actor model and mostly being self aware of that fact is good.

Will MediaGoblin support the AP protocol?

So! First off I want to say that none of this work would have happened without MediaGoblin. We originally joined the SocialWG because MediaGoblin needed and wanted to use a federation protocol that was going to last. And before that work even started, we actually *had* federation support, in a branch… and it even federated with Pump.IO! That was all Jessica Tallon’s work and she did a great job.

“MediaGoblin and the federation branch both diverged quite a bit, and work on reconciliation needs to happen to get that merged.”

Unfortunately the SocialWG took up way more of my time than I expected and I became absent from MediaGoblin. Boris Bobrov very kindly took up maintainership of MediaGoblin while I was gone and other people kept sending in patches. But I do think things slowed.

“It’s hard for me to not be struck when looking at Peertube that maybe Peertube is in many ways a better MediaGoblin.”

On top of that, it’s hard for me to not be struck when looking at Peertube that maybe Peertube is in many ways a better MediaGoblin. That’s not condemnation of our work on the project, but rather that when MediaGoblin started there was no such thing as IPFS, no such thing as Webtorrent, and applications were written in a very different style in terms of concurrent programming than they are today.

PeerTube v1.0.0.0-beta6

Now that the ActivityPub spec work is done, what are you working on?

Well I’m chairing the SocialCG and I’m working at Digital Bazaar on some adjacent stuff on decentralized identity and verifiable credentials. But obviously what everyond really wants to know is… what’s the plan for MediaGoblin?

  • Written in the excellent Racket programming language
  • Actor-model-centric and object-capability-aware
  • A simple client will ship with it
  • It will have media processing infrastructure, such as in MediaGoblin
  • It will probably eventually have a distributed multiplayer game, which sounds crazy, but I have my reasons
  • Focus on being easily and reproducibly packaged in fine free software distributions such as Debian, Guix, Fedora from the beginning. This means sacrificing integrating with more difficult-to-package tooling, such as anything that uses npm.
  • An emphasis on a friendly and collaborative development community. Once I get enough written where I can get others to pitch in, that is. This is something we did right in MediaGoblin and I’d like to continue that here.
  • I’m hoping to have a one-command-line-instruction set-up-and-go deployment for people self-hosting over something like a Tor onion service.
8Sync, an asynchronous programming library Chris wrote

Is there anything you’d like readers to know about your work?

Did you know that I’m a humanities person by training? I thought there would be no way to ethically have a career doing only free software, so when I was in college I decided “I’ll become a writer and an artist to pay for my programming.”


We Distribute

Reporting on decentralization and the free web.

Sean Tilley

Written by

Editor of WeDistribute. Obsessed with Free Software and Decentralization. Also makes things, sometimes with Elixir.

We Distribute

Reporting on decentralization and the free web.