A few weeks ago, I wrote about a new feature we added to the Jetpack plugin: a “Share to Mastodon” button.
Nice, right? Mastodon is getting more and more popular, and it makes sense to let your readers easily share your content with their community of friends, wherever that community may live.
Here is the thing though: Mastodon is just one service among many, a software used to host a decentralized social network. That network, also known as the Fediverse, isn’t just a group of Mastodon servers: it’s a federated network of hundreds of servers. Each one of those servers may pick their own software, among the dozens of solutions currently available to interact with the federated network.
That diversity is a very important concept for the overall idea of a Fediverse. It allows for a wide variety of communities to thrive. Different software can cater to different interests, integrating features needed by each community. If video is your media of choice, a video platform can be born. If your community wants to communicate by sharing pictures, a new Instagram can rise. If you prefer to be part of a smaller community, software with adapted moderation tools can be built.
Ideally, I would have wanted to develop a “Share to the Fediverse” button and not a “Share to Mastodon” button; that would have been useful to more people.
Unfortunately (or fortunately, depending on what you’re looking for), each Fediverse service is different, and each one comes with a different feature set.
Some, like Mastodon, include a fully-fledged web interface. This is why it is possible to implement a “Share to Mastodon” button. Its interface includes a
/share route that allows you to pre-fill a message input from.
Others, like GoToSocial (that’s the service I personally use) are mostly headless services; the only way to compose your toots is to use a third-party client like Tusky, elk.zone, or Semaphore.
That stops us from easily implementing a “Share to Fediverse” button, since there is no single common way to post something to the Fediverse.
What if such an option existed?
I dream of a future where we can all come together: the ActivityPub protocol for ideas, and web browsers for the implementation.
Each web browser could support a new
activitypub: URI scheme, followed by each one of the actions available with the protocol. Web browsers and apps would recognize that URI scheme and build on top of it.
On the web, you can write
<a href="mailto:[email protected]">Send me an email</a>. Clicking such a line will open your email client of choice, be it on the web or in an app on your computer or smartphone. You can even add extra details like the email subject.
Let’s apply this to ActivityPub events:
<a href="activitypub:share" data-url="https://jeremy.hu/the-case-for-native-handling-of-fediverse-actions" data-text="Check this interesting post I just read!" > Share to the Fediverse </a>
What would you expect this to do?
Ideally, clicking on such a link would open whatever your Fediverse client of choice is: maybe it’s the Mastodon app if you’re on a smartphone; maybe it’s the Mastodon web UI for your instance; maybe it’s a desktop app.
How about this one:
<a href="activitypub:follow">@[email protected]</a>
This should avoid all the copy and paste one has to do today whenever they want to follow someone that’s not on the same instance: click the link, and your Fediverse client opens with a prompt to follow.
How about Liking?
<a href="activitypub:like" data-url="https://jeremy.hu/the-case-for-native-handling-of-fediverse-actions" > Like on the Fediverse </a>
Now, I can’t be the first one to think about this, so I’m sure there have been proposals to make this a reality, proposals that are a lot more thought out than mine. :)
Does anyone know about such a proposal, and where we could join the discussion, show support, and help? I browsed socialhub.activitypub.rocks, but couldn’t find a related discussion.
11 replies on “The case for native handling of Fediverse actions”
Do you mean something like Issue #1 in fediverse-ideas?
Not sure if protocol handlers actually would support something like data-url, one will need to dig into quite a bit of details to get a good proposal.
Today I learn about fediverse-ideas, thanks a lot! That’s exactly it, indeed!
@jeremy +1 for activitypub:follow
@jeremy though I do love the idea of a "share on fediverse" mechanism. I do think there's a big issue with naming.How many, besides the "nerds" (myself included), know about the "fediverse"?Most people just have a Mastodon, or pixelfed, account, not a fediverse account.Clicking "share by email" means sharing though your email account . "Share on Facebook", means sharing through your facebook account. "Share on Fediverse". Would people understand what that means?
@[email protected] That’s very true. “Fediverse” would have to become mainstream before “share on Fediverse” means anything.
In truth, “Share on Mastodon” is most likely going to mainstream first.
But what about three other two thirds of the Fediverse and the people who want to post to their accounts there? #tallship #Fediverse #FOSS #ActivityPub ⛵.
@[email protected] I’m not sure I understand your question, sorry. What I’m discussing above is something that would work for everyone on the Fediverse. Do you have a specific part of the Fediverse in mind, that would not benefit from this?
@jeremy I think the "web actions" is the word hat has been used for this: https://wiki.mozilla.org/WebActions
@[email protected] ah yes, thank you!
@jeremy there is a mechanism for websites to register for protocol handlers with user confirmation, though I suspect they're a bit clunky to use for the user and may not be universally implemented. I kind of assume there's a reason it's not more widely used tbh. Doesn't even require going through a standards process to register one prefixed with "web+", though. https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler
[…] developers) The case for a native handling of fediverse […]