How To Make the Least-Worst Mastodon Threads

(An opinionated guide) (for the perplexed).

The mastodon mascot tangled in a snarl of thread.
https://www.gnu.org/licenses/agpl-3.0.en.htmlEugen Rotchko, AGPL, modified Apr 15 2023

Everyone Can Change Mastodon

Mastodon is great. I love it. I love that it’s based on an open protocol, ActivityPub, which is designed to prevent lock-in and thus enshittification.

Now, that doesn’t mean that I agree with every decision that went into Mastodon’s design, and that’s okay. Unlike, say, Twitter, if I don’t like Mastodon’s design, I can change it, by creating a new client or a server extension, or by convincing someone else to do so. Mastodon is an open, generative platform, built on software that is free-as-in-freedom —everyone can modify it.

Now, it’s true that “everyone can modify Mastodon” is a statement with a lot of baggage. “Everyone” in this case, is “everyone with the skills to write software” or it’s “everyone with the capital to hire engineers.” That may be everyone, but it’s not anyone.

However, it’s a much larger pool that “all the people with the power to modify Twitter.” That’s a pool composed of a single individual — a mercurial narcissist who is speedrunning the enshittification cycle while lighting tens of billions of dollars on fire.

Billions of bytes of text have been posted about the public dismantling of Twitter, but one factor that has gone largely unremarked-upon is the change in the relationship between Twitter users’ innovations and Twitter management.

Twitter was the original “minimum viable product,” a tool for posting 140 characters of text for delivery over SMS or an API. That made it a blank slate onto which users could project their own choices.

For example, users invented retweets. They typed “RT” and then pasted in the text of a tweet they liked. The practice became so widespread that Twitter turned it into an official feature.

Quote-tweets were created by Twitter users, too: they typed a commentary on someone else’s tweet, then pasted in the URL of that tweet. Voila, the quote-tweet was born.

And users invented tweet-threading: the first Twitter threads were created by posting a tweet, then replying to your own tweet, then replying to the reply, etc, etc, until the thread was done.

In each case, Twitter listened to its users, formalizing digital desire-paths. Contrast this with the current Twitter management, who are actively hostile to user innovation, actually sabotaging the measures they take to improve their experience, even banning users for innovating.

This is absolutely characteristic of end-stage enshittification. It’s how John Deere went from a company whose product improvements came from touring farms to understand how their customers were modifying their tractors and integrating those improvements in future lines, to a company that threatens and blackballs customers who mod their tractors.

Twitter is a neat illustration of the problem with benevolent dictatorships: they work well, but fail badly. Because they are property — not protocols — they can change hands, and overnight, you get a new, malevolent dictator who wants to retool the system for extraction, rather than collaboration.

By contrast, ActivityPub-derived services like Mastodon are open protocols. Users who want new features, or changes to existing ones, can either unilaterally implement them (if they have technical skills or capital to hire technicians); or they can appeal to others to implement them.

This is clearly still a two-tier system. People with skills or capital can make the changes they want, while people lacking both have to appeal to others to take up their cause.

But whatever the defects in this system, it is still vastly superior to the way Twitter works, both pre- and post-Musk. In the pre-Musk era, users could only make changes by appealing to a largely benevolent — but thin-stretched, opaque and inconstant — dictator. In the post-Musk era, users can only make changes by appealing to a dictator who is thin-stretched, inconstant and opaque — and malevolent.

Contrast this with Mastodon and other ActivityPub-derived systems: users have the option of directly implementing the features they desire (by their own hands or by hiring technicians). But they also have a whole constellation of people to appeal to if they desire a change they can’t make on their own — anyone with the technical skills or capital to effect a change. And then there’s a third, emerging category: forming user cooperatives that pool their capital.

So yes, even if Mastodon isn’t a system that anyone can change, it’s still a system that everyone can change.

Be the First Person To Not Do Something That No One Else Has Not Done Before

Like every good designer, Mastodon’s designers are opinionated. They have ideas about what parts of Twitter and other social media platforms are worth bringing with, and which ones should be left behind.

For example, Mastodon does not have a system-wide search. There’s no built-in way to find all the mentions of a given term or phrase on all of Mastodon. Instead, the system demands that users deploy #hashtags as a way of designating phrases that everyone can search for: if you type “Donald Trump,” it won’t show up in others’ searches, but typing #DonaldTrump is a way of opting into systemwide search and a discussion that includes all comers. There are lots of people who like this, and lots of people who don’t.

Mastodon also lacks the “native” threading tools that Twitter developed based on its users’ jerry-rigging of threading into the system. To post a thread on Mastodon, you make a post, then you reply to that post, then the next and the next.

Most Mastodon clients (apps used to read and post to Mastodon) treat these threads the same they would any discussion —no different from a busy back-and-forth between a large group of users, notwithstanding that the “conversation” is just a single user posting replies to themself.


The Problem With Threads

If you follow someone who posts long threads, this presents a problem. Threads show up in your timeline out-of-order, crowded amongst the “conversational” posts made or “boosted” (Mastodonese for “retweeted”) by the other people you follow.

This is a direct consequence of the lack of a built-in Mastodon threading system. There are lots of potential ways to handle Mastodon threads that would allow them to more peacefully co-exist with other kinds of Mastodon content — for example, any time a client identifies two or more consecutive replies from a user to themself, it could “collapse” them into a post that has a little arrow to “unroll” the thread.

I am a threader. I’ve been posting threads to Mastodon almost since its inception, and over that half-decade, I’ve spent a lot of time discussing, disputing and experimenting with ways to post threads to make life easier for people who read threads.

I have concluded that the best approach is to use content warnings to tag threads.

Every Mastodon post can be labelled with a “content warning” that causes it to be “collapsed” to a short headline (e.g. “Long thread /3”).

Using content warnings for each post in a thread reduces the amount of vertical space it takes up, and thus the number of other kinds of post it displaces.

This approach also lets readers make use of Mastodon’s built in filters: users can create filters that hide posts that include the phrase “Long thread /”:

The add filter dialog from Mastodon, prepopulated with the settings to filter out posts containing “long thread /”

These users can then read your posts via a list:

A Mastodon list heading entitled “People who post long threads.”

Beyond repurposing content warnings in this way, there’s another, more ambitious technique for posting long threads on Mastodon: posting them somewhere else, too.

Every thread I post to Mastodon is simultaneously published as a blog post, an RSS feed, an email newsletter, a Tumblr post, a Twitter thread, and, of course, a Medium post. Some users might want to read the content of your threads, but not in thread form. Syndicating in all these different forms is a lot of work, but for me, it’s worth it as a way of meeting my readers where they are (provided, of course, that they aren’t on Facebook or Instagram — I do have some standards).

Because Mastodon threading is an improvised set of practices rather than a technical feature of the system, reading Mastodon threads requires some work as well. Here are some tips for being a better reader of Mastodon threads:

  • Put threads in order with one click: Posts from a thread show up out of order in your timeline, which is confusing! But clicking any of those posts will switch to a properly ordered view of the thread.
  • Expand every post in a thread with one click: A thread that uses content warnings will show up in your timeline as a series of one-line headers (“Long thread /1,” “Long thread /2,” … “Long thread/n”), and any graphics associated with them will be rendered as blank rectangles. This is by design. To expand all of these posts with a single click and unmask their graphics, just click the little “eye” icon in the top right corner of your screen.
A Mastodon screenshot highlighting the “show/hide posts” eye icon.
  • Unfollow and switch to another feed: Mastodon doesn’t have algorithmic boosting. The only posts you’ll see in your home timeline are posted or boosted by people you explicitly follow. If you don’t like Mastodon threads, consider unfollowing users who post them. No one is obliged to read anyone else’s feed! This is especially good advice if the person you’ve followed offers their threads in another medium, like a blog with RSS. Just switch from following them on Mastodon to following them via RSS.
  • Use lists and filters: If you want to follow someone who posts threads, you can filter out those threads (provided they use consistent content warning labels), and follow thread-based accounts via a list. That way, you can read the threads when you’re in the mood for them, but they won’t show up in your main timeline (see above for details on how to do this).

Unlisting Doesn’t Work the Way You Think It Does

Mastodon has an extremely confusing “unlisting” feature. When a post is “unlisted,” that means that it won’t show up on “local” timelines (the list of posts from users on the same server as you) or “federated” timelines (the list of posts made by people followed by the other users on your server).

This is useful for servers that are primarily closed discussions among the server’s users, but not for people who want to be part of a federated discussion among all Mastodon users.

Here’s what unlisting doesn’t do: it doesn’t hide the posts you make from the people who follow you. A writer can’t make threads “collapse” for their readers by publishing an initial post and then unlisting the subsequent posts. It would be fantastic if this was the case, but it’s not.

This misunderstanding about how unlisting works is so prevalent among Mastodon users that it might just be the first urban legend of the Fediverse. There are even beginners’ guides for new Mastodon users that repeat this misunderstanding and insist that unlisting your threaded posts is a considerate thing to do.

That’s just wrong. What’s more, it’s counterproductive, because hashtags in unlisted posts are also hidden. Remember, by design, Mastodon doesn’t have a search function — instead the way you include a post in the federated discussion of a topic is by opting in with a hashtag.

Unlisting the posts in a thread won’t make your thread less intrusive for your readers — but it will rip the hashtags you include out of the public discourse, even though you’ve followed the Fediverse’s best practice for making them a part of that discourse.

Perhaps someone with the capital or technical know-how will make the technical changes needed to make unlisting work the way that everyone intuitively assumes it works (maybe this post will even contribute to that decision). But until and unless someone does, unlisting doesn’t work the way you think it does.

Really.

People message me all the time to tell me that I’m wrong about this. They are supremely confident that unlisting works the way their intuition tells them it should. Their intuition is perfectly reasonable — but they are perfectly wrong.

No True Mastodon User

There is no Right Way To Use Mastodon. All online services have norms that are dictated by their users and evolve over time. Twitter didn’t have RT or threading or many other features until users invented them.

Mastodon isn’t meant to be a place where threads don’t exist. It’s also not meant to be a place where they do. Mastodon is a protocol, not a product, and it belongs to its users.

A few very obnoxious people decided — entirely of their own choosing and without my asking them to, let alone forcing them to— to follow me on Mastodon, a service where I exclusively post long threads, solely to complain each time I do so that my threads were “clogging their timeline.”

When I pointed out to these users that they were following a thread-posting account, and explained where they could get my essays for free, without ads or surveillance, under a Creative Commons Attribution license that let them reproduce (and even sell!) my essays, they said, No, I’m going to keep following you here solely so that I can complain every time you post a thread, in order to make sure you know you’re using Mastodon wrong.

“An anonymized Mastodon reply. Text reads “It’s not about the content it’s about the form. A microblogging platform like Mastodon is not meant for long-form content or you wouldn’t have to work around it with content split over multiple posts. Long form content has its place in blogs. Both writeFreely and Plume are blogging platform and both federate via ActivityPub as well. But since you obviously couldn’t care less ‘cos having 40k subscribers apparently validates you and you prefer to feign ig
“The food here is terrible — and the portions are so small.”

This isn’t criticism, it’s harassment — it’s coming back for seconds of free ice-cream solely to complain that you don’t like ice-cream.

What About High Character Limit Servers?

The fact that Mastodon is protocol-based means that every server can have different conduct rules and different technical constraints. Out of the box, Mastodon servers can be configured to support posts of up to 5,000 characters (the default is 500).

Many of the problems with threading can be resolved by opting for a server that has higher character-limits.

But character-limit isn’t the only reason to choose a server. I’m on mamot.fr, a server hosted by the French digital rights group La Quadrature Du Net, which has a long history of standing up to censorship and surveillance demands.

I’ve been writing the web for more than 20 years and have been sued, threatened and attacked for what I write, so being on a server whose administrators have my back is more important than being on a server with a high character limit. Choosing a server based on its technical characteristics, rather than its censorship-resistance, is one of those things that works well — but fails badly.

I’m in the process of setting up my own server — or rather, my amazing sysadmin Ken Snider is — but we need some new hardware because his machine is getting long in the tooth, and that will have to wait for his next visit back to the city where the system is hosted.

Even once I have higher character limits, I’ll still post threads. That’s because there’s another downside to high character limits: they are monolithic in a way that threads aren’t. Threading an essay requires the author to compose it in stanzas, each of which is a standalone, complete thought — and that means that readers can engage with each though separately, by replying to just that stanza.

For me, that stanza-by-stanza discussion — a kind of pro-fisking structural affordance — is the most interesting and powerful innovation of the social media thread. I’m sure that there will be times when I’ll appreciate a much higher character count, but I’m still going to compose (and publish) in stanzas.