This guest post is from GNU MediaGoblin founder Christopher Lemmer Webber.

This guest post is about some excellent work that has been done by community members collaborating under the W3C's rubric. However, we have to remember that the W3C as an organization sold out to proprietary corporate interests and betrayed computer user freedom when it adopted the Encrypted Media Extensions standard for Digital Restrictions Management. We can no longer recommend the W3C as a place to do standards work.

I'm happy to announce that after three years of standardization work in the World Wide Web Consortium (W3C) Social Working Group, ActivityPub has finally been made an official W3C recommended standard. Hooray!

ActivityPub is a protocol for building decentralized social networking applications. It provides both a server-to-server protocol (i.e. federation) and a client-to-server protocol (for desktop and mobile applications to connect to your server). You can use the server-to-server protocol or the client-to-server protocol on their own, but one nice feature is that the designs for both are very similar. Chances are, if you've implemented support for one, you can get support for the other with very little extra effort! We've worked hard to make ActivityPub easy to understand. If this is your first time reading about it, I recommend diving into the overview.

Why ActivityPub? Increasingly, much of our lives is mediated through social networks, and so network freedom in these spaces -- and thus removing central control over them -- is critical. One thing you may have noticed in the last decade is that many decentralized free software social networking applications have been written. Sadly, most of those applications can't actually speak to each other -- a fractured federation. I hope that with ActivityPub, we've improved that situation. And indeed, you may already be using ActivityPub now without realizing it. Mastodon, the incredibly popular free software microblogging platform with over one million registered users, uses ActivityPub to federate between servers, and many more applications already either partially or fully support ActivityPub. Seeing is believing, and in that vein I encourage you to watch this video, which shows two totally different instances of two totally different codebases (PeerTube and Mastodon) federating. Pretty cool, right?

The standardization of ActivityPub has been a long journey. Three years ago, MediaGoblin contributor Jessica Tallon and I agreed that we wanted to make sure that whatever federation API we used was as broadly compatible with other libre social networking sites as possible, so when we heard about the Social Working Group, we applied as invited experts. "We'll just show up to the hour-long meetings once a week to make sure things are on track as far as our needs go," we thought.



Well, next thing you know, we're both co-editors of ActivityPub. ("Revolutions are run by those who show up," I suppose.) ActivityPub took a lot of time and effort, and not just from Jessica and I. ActivityPub's origins go back to StatusNet (the foundation for what's now called GNU Social) and the experiences of its lead developer, Evan Prodromou, in writing and developing the OStatus protocol and its successor, the Pump API (on which ActivityPub is based). Erin Shepherd converted the Pump API to the first drafts of a standard with ActivityPub, and from there Jessica and I took over, with major help from many community members and long conversations with many different libre social networking platforms, not to mention many hours of effort ActivityPub implementers. Thank you to everyone who has participated!

One other noticeable effect of standardizing ActivityPub is that it has taken up most of my time, so much so that I've been largely absent from MediaGoblin, the project which was the initial motivator for my participation in the standardization effort in the first place. This even includes a long delay in merging our own federation code, which was written by Jessica before and during the early days of the standardization effort. Both ActivityPub and the world of Web development in general changed a lot over the course of these efforts.

Happily, the MediaGoblin community stepped up in my absence (especially thanks to Boris Bobrov who stepped up as co-maintainer or, let's be honest, maintainer over the last few years) and has kept things running. But we're left in the odd position of being behind on our federation efforts because of our work towards standardizing federation. Was it worth it? Well, sometimes you know where you want to go but not how to get there. Advancing federation was one of MediaGoblin's big goals, and I'd say with the work that happened on ActivityPub (which I'm convinced would have not made it all the way without MediaGoblin motivating Jessica and I) and with the adoption we're already seeing, I think so. Anyway, that's all to say that MediaGoblin and ActivityPub have a journey forward together, though it may be worth a bit of time to regroup on next steps. More on that to come. And in the meanwhile, I think ActivityPub itself is a major contribution to libre networks.

I do believe that building libre networks that are viable alternatives to currently popular dystopian systems requires coordination, and sometimes standardization bodies will be the place to do this, as I believe was the case with ActivityPub. Notably, we began the process with the W3C before the extremely unfortunate decision to effectively endorse DRM through EME. I am glad we finished the work we started and saw through the W3C process, and I have had the good fortune to work with some incredible people through that organization and surrounding communities. However I do believe the standardization of EME was counter to the W3C's mission. What can we do to make sure that the organizations which are meant to be stewards of network freedom are able to stay true to these goals? I don't know, though I think there is more to be examined in that space in the future.

Meanwhile, I am proud to see ActivityPub reach the W3C Recommendation process. It's been a long road... but the most interesting journey is ahead. And you can help, by building or contributing to an exciting ActivityPub project of your own. And if you do? You should talk to us about it!

Happy hacking on libre networks!