news ·
tour ·
community ·
donate ·
documentation ·
wiki (legacy) ·
bug tracker ·
bug tracker (legacy) ·
CI·
code
gmg serve and gmg celery commands to simplify
deployment. These commands may change in the future and are not yet recommended
in the deployment documentation. If your deployment is already running smoothly,
there's no reason to switch at this stage.
Thanks to Rodrigo Martins, Marco Pessotto and Jgart for their contributions in
this release. Thanks again to Charlotte for allowing us to feature her artwork.
To join us and help improve MediaGoblin, please visit our getting
involved page.
Hello everyone!
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
ActivityPub
(formerly ActivityPump).
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:
●
Post
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).
●
Email the
social working group comments
mailing list.
●
You can email me directly.
Email cwebber AT dustycloud DOT org, and include "ActivityPub" in
the subject.
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
implementing ActivityPub!)
Thank you!
This is Pubstrate,
an implementation of ActivityStreams and ActivityPub for
GNU Guile.
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.
Pretty nerdy!
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
made available.
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?
TPAC demo room photo by
Aaron Parecki
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
group.
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
see it?
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.
(Whew!)
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
the group.
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
Aaron Parecki
... er, right.
Not just goofing off! :)
"The Three Goblineers" by Christopher Allan Webber (pen and ink)
and Morgan Lemmer-Webber (colored pencils).
Licensed under
CC BY-SA 4.0.
This release is called The Three Goblineers, because we are finally fully
embracing Python 3!
You could even think of this release as Py-oneering, which it definitely
is.
Many traditional web service tools are less-than-ideal for federation and
so we've had to do a lot of rebuilding and retooling.
This release represents lots of intense behind the scenes work to make
the user experience smoother, as well as some key improvements for
MediaGoblin developers and deployers.
Federated services use databases in a some fundamentally different
ways.
We had to make a traditional (rigid) database more friendly for more
flexible relationships.
The result is similar to the generic foreign key implementation used by
Django, but optimized especially for federation.
Jessica Tallon did the lion's share of this work and was aided by Andrew
Browning who did extensive testing.
We also updated how we handle comments and media collections.
On a multi-media service, people will naturally want to reply to comments
with videos and to ASCII art with songs so we had to make our commenting
function support all the available media types.
Also, the media collections aren't just for your personal gallery
anymore; they're also used now in federation and the API as the backbone
of a user's "inbox" and "outbox" feeds.
Also, to make life easier on those uploading whole albums of content, if
your user has some collections available, these will be presented as a
dropdown option while submitting media.
In the less visible but equally important department, we updated OAuth
and created a "graveyard" system.
We updated our code to make better and more secure use of OAuth so that
my server and your server can be really sure we are actually talking to
each other.
The "graveyard" system uses tombstone icons to let you know that an
object was removed by it's original poster.
This makes it easy for users to remove media they no longer want to
share, while creating as little confusion as possible for other users.
* *
* * _. *
* * * < '.
* ) ) *
* <_.' *
* * .-------------.
.' '. *
* | | *
| TOMB OF THE | *
* | UNKNOWN | *
* | ACTIVITYSTREAMS |
| OBJECT |
.^. | |
_ .+. _ |~| | ????-???? | .+. .-. _ .-.
| | |~| |=| | | | | |=| |~| | | |"|
``'`'`''``'`'`'`'``'``'`'`''``'`'`'`'``'`''``''``'`'`''
Developers will be happy to know that we are keeping pace with the larger
Python community and now have complete support for Python 3.
We had
early
and experimental Python 3 support in 0.8.0
but couldn't quite recommend it for production use.
That work is finished!
Now you can choose to hack in Python 3 or Python 2 and your code will be
totally compatible with the main codebase.
Since Python 2 won't be supported forever, Python 3 is the future.
And we are all about the future.
We also switched our migration system over to
Alembic.
Previously, we'd been using
sqlalchemy-migrate,
but it also wasn't as good for updating the database layout when you upgrade,
and lots of dragons be there.
We think Alembic will make it less terrifying to update your MediaGoblin
instance so you can stay current and without spending lots of time trying
to sort what happened in the database.
Alembic is also newer, fresher and better maintained!
Another thing that makes updating a little persnickety is finding out that
the dependencies have changed.
We are collaborating and experimenting with the
Guix community to fix
this issue.
Cleaner packaging will help people upgrade without fear, using
deployments they can trust.
Watch this space for a future post on how to use Guix and MediaGoblin
together for worry-free upgrades.
For users upgrading from previous versions, as always, check the
release notes for instructions on upgrading!
Our work to overthrow the red eminence of the centralized web continues!
Between Python 3 support and laying down foundational changes to support
federation, this release brings us much, much closer to our long term
goals!
Thanks to all our Goblineers and Py-oneers without whom this work would
not be possible!
Give a round of applause to Andrew Browning, Ben Sturmfels, Berker
Peksag, Boris Bobrov, Christopher Allan Webber, Daniel Krol, Deb
Nicholson, Duncan, jerome, Jessica Tallon, Loic Dachary, Sebastian
Spaeth, Tom Fay, and 宋文武!
You all helped make it happen!
And if you want to make it happen in our next exciting release, we'd love
to have you get involved!
Visit us in IRC;
#mediagoblin on freenode.net!
Or sign up for regular updates
on our mailing list.
Got ideas or questions about our work?
Email us at press@mediagoblin.org
-- we look forward to hearing from you!