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?