We have a lot of news to cover, but I'm going to jump right into the
thick of it: we've been working hard on a new federation (as well as
client to server) standard called
We've made tremendous progress, and I was just recently at a face to
face meeting at TPAC,
the W3C's big technical conference.
The good news: ActivityPub is aiming to hit Candidate Recommendation
status by October 11th.
(That's less than a week away!)
However, in order to enter that stage, we need your review!
If you have any interest in the decentralized web, you can help.
All you have to do is
read the latest editor's
draft and provide feedback.
(The earlier the better... maybe a fun weekend project?)
You can do this by any of the following:
issues on the issue tracker
(yes, I think it's ironic and problematic that we're using GitHub,
I picked my battles here, whether right or wrong).
social working group comments
You can email me directly.
Email cwebber AT dustycloud DOT org, and include "ActivityPub" in
Note that I will be publishing your comments publicly, probably
on the Social Working Group wiki!
If you have feedback, we want to hear it!
(From anyone, but especially from those who are interested in
Note, the rest of this post is a bit of a dive into behind the scenes
decisions and activity in MediaGoblin and ActivityPub... there's no need to
read this part to submit a review!
I'm kind of traveling through time in all the wrong order in this post...
but it's worth jumping forward a bit to see the results of what we've done.
Over the last many months there's been a huge push on ActivityPub as a
standard, as we'll talk about.
But in order to succeed, I also needed implementations, both of client to
server and server to server.
Well, I'm happy to say that those did come together...
This is Pubstrate,
an implementation of ActivityStreams and ActivityPub for
Sorry for the sappy embedded love-note, though what's nice about this
is that it's the first demo I gave to someone else of the client to
server functionality working in Pubstrate.
But wait, what was the client?
This is soci-el,
an ActivityPub client written in... you guessed it... emacs lisp.
You can see the rendering of the user's outbox here as well as the
buffers from which the message was composed.
I don't expect everyone to be using emacs as an ActivityPub client of
course... I hope to see various desktop, web, and mobile clients
But, Emacs is the most fun for me, and I was time pressed, so
there we are.
Everyone loves seeing screenshots, but maybe not all of this stuff
makes sense without context.
What does this mean for MediaGoblin?
So what's been going on?
It seems a recurring meme in MediaGoblin land to say "we've been quiet, because
we've been busy" (or maybe historically on every tech blog ever), but I guess
I can't resist repeating the mantra.
Though the weight of my focus has been shifted from where I expected it to be.
over the last year, you would be right to anticipate that the main thing I would
be working on would be merging the
federation code Jessica
and getting 1.0 out the door.
That was the plan, and we're still working towards that, but
priorities shifted as we realized the opportunities and time
pressures we were under with ActivityPub.
After the Social Working Group
face to face meeting in June,
Jessica and I sat down and talked about what we should do.
Jessica had recently started working at
Igalia (great people!) and
was busy with that and other transitions in her life, so we discussed
whether we thought it was most sensible to focus my energy on MediaGoblin
or on ActivityPub.
It was clear that ActivityPub was shaping into a solid specification,
but it was also made clear that the Social Working Group's charter was
running out by the end of 2016.
We both think ActivityPub is key to MediaGoblin's success and didn't want
to see our invested time go to waste, so decided my immediate focus
should switch to ActivityPub so it could successfully make it as
Which isn't doom and gloom for MediaGoblin!
MediaGoblin development has continued... the community is good enough that
people have been able to work while I've been busy.
I'm happy to say we also appointed longtime contributor Boris Bobrov as
co-maintainer to help reduce me being a bottleneck.
(Thank you Boris, and congrats!)
Other contributors have also stepped up to the plate.
I'm especially thankful of Ben Sturmfels for hosting MediaGoblin hackathons
and being so responsive to community members.
(And of course, there are many others to thank, too!)
Anyway, I'm not going anywhere, I've just been shifting focus to standards
work for a bit... but it's all for the greater good of MediaGoblin.
(Well, and the greater federated social web!)
Soon, we'll be putting the work we're doing on ActivityPub directly
When we merge Jessica's work on federation, we will also retool it so that
the first federated release of MediaGoblin will be blazing the trails with
Both ActivityPub and I personally got a significant boost by a happy visit
from friend and Social Working Group co-conspirator Amy Guy.
Amy dropped by for an intense four days of standards hacking and scheming,
and came up with several significant ways to restructure and improve the
With her help, we now have much clearer distinction between the use of
ActivityPub as a client to server protocol (think mobile applications and
desktop applications connecting to your server) vs the server to server
Both of these are now clearly intertwined in the document, but are distinct
enough where they can be used and understood separately if desired.
We also more clearly established the connections between ActivityPub and
the linked data community by explaining ActivityPub's relationship with
Linked Data Notifications.
Amy has a gift for composing standards language, something I'm still
struggling to learn (but hopefully getting better with over time).
ActivityPub is much better with her hard work.
Thank you Amy!
In addition to the standards side of things, in order to get ActivityPub to
the next level, we needed to be able to present real live demonstrations
of the standard in action.
Hence the work on Pubstrate and soci-el mentioned previously.
For most of the months before TPAC, I was working furiously day and night
to get things ready to show...
And then, it was time to head off, and hope it was good enough...
TPAC demo room photo by
Fortunately, all that hard work paid off.
The Social Working Group kicked off TPAC with live open-viewing
demonstrations of the various standards we've been working on.
We got in a really solid set of demos from everyone in the
From my end, I managed to demo all the core parts of the ActivityPub
spec: I wrote a note in my client (soci-el), fired it off to the server
(Pubstrate), where it rendered successfully.
Then I explained, well, what if you want someone on another machine to
So I had another user on a separate Pubstrate instance, added
the user over there to the recipients list on my message, shot
the message over to the server, crossed my fingers and hey!
The live demo of federation succeeded.
In the actual main Social Working Group meeting, we hammered things
forward pretty nicely.
As said, ActivityPub was positioned to move ahead towards
Candidate Recommendation by the 11th.
Again, your feedback is most valuable at this time!
Oh, one more thing.
On the second day of the main Social Working Group meetings,
at Amy's suggestion (apparently she was impressed when I showed her
at her visit), I showed off the MediaGoblin campaign video to
Apparently I had never done so previously, so it was really nice
to hear the reaction: "Holy cow, this is describing exactly the
type of stuff we're working on in the working group!"
Yep, exactly... all that stuff you see illustrated in that video,
we're working on putting into code and standards.
The dream lives!
So, all this Social Working Group stuff... things are happening!
We're not just goofing off!
Super serious TPAC group "photo" by
... er, right.
Not just goofing off! :)