I’ve mentioned Mastodon on a number of occasions on this blog. It is the only social media platform that I use, but for a new user it can be fairly confusing, as it doesn’t work like other social media sites.
A new member of my Mastodon instance, Fosstodon, wrote their first post stating that they’re not really sure how it all works on Mastodon. Being the dutiful admin that I am, I pinged them back to let them know that I would find decent guide an post a link. To my surprise, I couldn’t find a decent guide anywhere, so I decided to write one.
I’m going to try and cover all of the basics of Mastodon in this post, as well as the details of how it all works. By the end of this post, you will hopefully be a Mastodon expert. So, settle in and get a coffee, as this is going to be a long one I think.
Toot Toot
Let’s start with the basics; Mastodon basically works like Twitter, but with a few differences:
- A “Tweet” on Mastodon is called a “Toot” and you have a 500 character limit by default.
- You can set the privacy of a Toot to be public (default), unlisted, followers-only, or direct.
- You can also @mention other users, as well as add media, links and hashtags to your Toots.
Reply
You can, of course, reply to any Toot that you can see – after all what’s the point in having a social network if you can’t have a conversation.
Boost
If you come across a Toot that you like, you can Boost that Toot. This basically re-shares that Toot to your followers. However, unlike Twitter, you cannot add your own commentary to a Boosted Toot. This is by design so that a person’s Toot is only Boosted in a way that gets the message they intended across.
It’s basically a way of preventing people being trolled via Boosting. E.g. you can’t add “This Kev Quirk guy is a complete moron” to one of my Toots that you have Boosted (although many would probably like to).
Favourite
You can also Favourite a Toot. Which basically means that you support or agree with a Toot. It’s the same as a Facebook like, or a Twitter heart.
All Toots have a set of icons below them that allow you reply, boost or favourite. The icons look like this:
The Fediverse
If you read about Mastodon, you will often hear about The Fediverse, or Federation in general. This is a completely unique concept to Mastodon when compared to more mainstream social networks, like Twitter and Facebook. So many new users are likely to find this confusing. Let’s clear things up, shall we?
When you sign in to Twitter, you have a single timeline that is made up of the Tweets from people you follow. Mastodon is different, as it has three timelines – Home, Local and Federated.
Each of these timelines has a different function that I will explain later on in this post, but for now let’s look at how the Mastodon network works; the different timelines should then make more sense. Here’s a quick video that introduces the concept of Mastodon’s federation:
To explain Mastodon federation a little better, I’m going to use email as an analogy through this explanation. Hopefully this will make things easier to digest.
The Mastodon network is made up of individual servers, called Instances. If we use our email analogy; think of Mastodon as email as a whole. So if Mastodon is “email”, then an Instance would be an email provider. For example, Gmail, Fastmail, or Office 365. They’re all completely different servers that are run by completely different companies or people, but Gmail, Fastmail and Office 365 can all send email to one another.
Mastodon is the same. My instance, Fosstodon, is run my myself and my friend Mike. Yet we can Toot with thousands of other Mastodon servers around the world that we do not run.
If you want to Tweet someone on Twitter, you @mention them. It’s the same on Mastodon. If I want to Toot to my friend Mike, I can simply add his handle (@mike) to my Toot. But what if I want to Toot someone else on another Mastodon instance? Well, I would use @handle@instance.name to mention them.
For example, I follow the great Chris Were on Mastodon, but he’s on another instance called LinuxRocks.online. So if I want to mention him in a Toot, I would add @chriswere@linuxrocks.online to my Toot. If Chris wanted to mention me, he would add @kev@fosstodon.org to his Toot.
Don’t worry about having to remember people’s handles and Instance names though, as Mastodon has an auto-complete feature that helps to populate a person’s handle/Instance once you start typing an @mention.
How Do Instances Connect?
If someone decides to start a new instance, how does the rest of the Fediverse know that they’re there and to start communicating with that them? Well, this is where the community and federation comes in.
There are thousands of Instances all over the world, and all Instances are connected by their users. So let’s go back to our email analogy. If I’m on Fastmail, I may not be aware of Gmail and all the users that are using Gmail. However, if I email someone with a Gmail email address, my Fastmail server then becomes aware of Gmail, so I then know where Gmail is and how to communicate with their servers.
It’s the same in Mastodon; Instance A may not be aware of Instance B, but if a user on Instance A follows a user on Instance B, Instance A then knows that Instance B exists and they will start communicating with one another. Furthermore, instance A may not have known that Instance C existed, but B did. So via Instance B, Instance A is now aware of Instance C too!
This process goes on and on, which causes a snowball effect of exponential growth of the Fediverse.
The Timelines
Ok, now we know how the Fediverse works, lets go back to our three timelines and take a look at what they do:
- The Home Timeline – This is a simple one. It’s basically the same as your Twitter timeline – it’s the Toots from all the people you follow from across the Fediverse.
- The Local Timeline – This is all of the Toots from your Instance only. So whether you follow someone or not, you will see all of the activity that’s going on within your Instance. This is a great way of finding new people to follow locally.
- The Federated Timeline – This is a timeline of all Toots from all Instances across the Fediverse. Again, this is a great way of finding new people to follow as it literally contains Toots from thousands of people, but be warned – the Federated timeline can contain posts that some users may find offensive.
Moderation Tools
If you do find something you don’t want to see in Mastodon, there are a number of ways to moderate what you see. You can even report Toots to the staff of an Instance; they can then review the report and take appropriate action.
You can see all moderation options using the three dots icon below any Toot. Within the menu, you have a number of moderation options:
- Mute – This will stop you seeing any of the Toots from that particular account.
- Block – This will prevent that account from being able to interact with you. It will also Mute their Toots.
- Report – This will send a report to the staff of an Instance. They should then review the report and take appropriate action. This can be no action, a warning to the user, or banning them from the Instance.
Don’t worry Alex, I’m not going to block you! 🙂
Why Mastodon?
So you now know the basics of how Mastodon works, and how to use it. But why would you want to use it over something like Twitter or Facebook, and why do I use it? Here are some of the reasons why…
It’s Open Source
It’s open source so what, right? Well, no actually. Open source means that anyone can see the code that makes up Mastodon. You can’t do this on many other social networks, so you have no idea what the site is doing in the background.
Of course, many of Mastodon’s users aren’t software developers so they won’t know what Mastodon’s source code does (myself included), but there are hundreds, or even thousands of developers out there that have seen the code for Mastodon. If it was doing anything nefarious, trust me, we would know.
Being open source gives us the reassurance that our data is not being harvested, or that we’re not being spied on. Plus, if the main developer of Mastodon, Gargron, decides to hang up his keyboard, someone else can take his place and fork the project’s source code.
Chronological Timeline
This may seem like a small thing, but for me it’s one of the most important features of Mastodon. You see, Facebook and Twitter have “clever” algorithms that are designed to change the content’s order on every refresh. This is designed to give the perception of new content and keep you on the site longer.
That isn’t the case with Mastodon. On Mastodon all three of the timelines are always chronologically displayed. So you can easily see what people have Tooted from when you were last online. This means it isn’t specifically designed to take over your life (although it does, because it’s awesome!) It just allows you to see what has been going on since you were last online, then go about the rest of your day.
No Adverts Or Tracking
That’s right, NO ADVERTS! No sponsored posts, no “we think you might like this” and no tracking! Mastodon is designed to bring people together, not make money. It’s that simple.
Having said that, most Instances do have Patreon pages, as running a Mastodon instance can get expensive. So if you use Mastodon, and enjoy it, I would urge you to contribute whatever you can to your Instance of choice. In my experience, the money is often used to improve the project.
On Fosstodon, we use any donations over and above our ongoing fees to make donations to various open source projects. Which projects we donate to is decided by those who donate.
No Single Owner
Because Mastodon uses a collection of Instances, you’re not at the beck and call of one site owner. If you don’t like the direction an Instance is taking, you can pack your virtual bags and go. Mastodon even has an import/export tool that allows you to migrate the people you follow from one account/instance to another.
Interest Specific, But Not Really
The beauty of having different Instances is that many of them are underpinned specific to one interest. For example my instance, Fosstodon, is specific to Free and Open Source Software (FOSS), hence the name. However, we encourage the users of Fosstodon to talk about all sorts of interesting things, not just open source software.
So although all the members of our Instance have a common interest (FOSS), there are lots of topics that get discussed regularly. There are also many generalist Instances that you can join if you wish. These are more like Twitter in that they don’t have a specific interest underpinning them.
Remember, you can also follow people who have different interests on other Instances, so your home feed can be extremely diverse – I know mine is!
Finding An Instance
There are thousands of Mastodon Instances across the Fediverse, so how do you find the right one? Well, finding the right one is very difficult, so here are some recommendations:
- Fosstodon– Selfish plug. Linux/FOSS focused Instance.
- Linux Rocks – Another great Linux/FOSS focused Instance.
- Floss Social – A third Linux/FOSS Instance (is it obvious what I’m interested in?)
- Mastodon Social – The original Mastodon Instance. It’s a general instance that is run by Mastodon’s creator.
- Mastodon Technology – A generalist Instance for anyone interested in technology.
If none of the instances above work for you, you can take a look at Instances.Social which is basically a search engine for Mastodon Instances. However, I’ve always found the site awkward to use as it doesn’t have many filtering options.
Mobile Apps
There are a number of mobile apps available for Mastodon. I have tried many of them for both Android and Apple iOS. My recommendations for the best Mastodon apps would be Tusky for Android and Tootdon for iOS.
However, if you want to check out all the other apps that are available, including desktop apps, take a look here.
Final Thoughts
Mastodon is awesome. It’s full of friendly, interesting people. There are very few trolls that I have come across, no tracking and no adverts. It’s just a great place to be.
Hopefully this guide will help get you started with Mastodon, but if you have any other questions that this guide doesn’t cover, feel free to leave a comment below and I’ll do my best to answer.
Finally, if you’re already on Mastodon and want to follow me, you can do so here.
Thanks for the basic tutorial! Some of us have never used any social media, so all of this is new.
Very good clear and concise info. Thanks so much!
How can I find out how to trasport a written article from Quanta Magazine, or a news article onto my Mastodon page?
This is one of the best introductions to Mastodon that I’ve read so far. Well done!
I’m making no promises here, but… would it be OK for you if I “forked” this post and translated it into Spanish, for my contacts to read? Attribution would be kept, of course.
Thank you for the kind comment. Of course, feel free to translate the article and re-post. You can find more information about how I license my content on this page. All posts on this site are licensed under Creative Commons Attribution. So as long as you provide attribution, it’s all good.
Thanks.
Nice article, but I’m not really sure about this bit:
Of course, many of Mastodon’s users aren’t software developers so they won’t know what Mastodon’s source code does (myself included), but there are hundreds, or even thousands of developers out there that have seen the code for Mastodon. If it was doing anything nefarious, trust me, we would know.” <<
Yeah it’s open source and everything, but how can I tell that an instance is running an unaltered version of mastodon that isn’t doing something fishy in the background anyway? Is there some sort of mechanism to ensure the integrity of an instance?
You can never know for sure, but at least there the source code is out there for people to see, which is better than not having any idea what’s going on under the hood. A la Facebook, Twitter etc.
I’m curious, re: federation.
If I spin up a new instance of Mastodon, it’s going to run all on its lonesome until I connect to a user in another instance, correct?
Can I, as an admin, force a connection to another instance without connecting to any users there?
And! If suddenly my little community gets wildly huge, and my users are connecting to random people all over the place, my federation is going to get massive and potentially out-of-control. Is it possible to remove an instance from the federation, in order to keep your federated stream still somewhat curated?
In other words, if you’re wanting to just keep everything some what FOSS-related, can you trim out federated instances that aren’t on-topic? That way, your federated stream is (for the most part) focused on FOSS, and your local stream is fine-tuned to the specific topics and community you have created?
I hope this makes sense. Great write-up!
You can create follow bots on your instance that will go out and systematically follow everyone it comes across (unless users opt out of engaging with bots), this will allow for federation without you having to follow on your personal account.
You can stop federations with an instance by silencing or blocking them at an admin level, but that effective for all users on your instance.
The federated timeline is almost impossible to curate, don’t even try. I don’t remember the last time I even looked st it. You have the local and home timelines which are far more controlled and full of people who’ve you find interesting.
If you try and censor the fed timeline, it’s likely to be done globally and it will piss your users off.
As far as I’m aware the Federated Timeline are follower toots from the people you follow. Users can also block instances if they go to another user’s profile page.
If I were to admin an instance I’d find very little need to block whole instances. Users have a lot of control.
That’s actually incorrect. The federated timeline is all public Toots from all users on the remote instances your local instance is federated with.
Hi! When I register I have to choose the instance I will be in? Or an instance is like a usar meaning that I can just follow it? Can I belong to more than 1 instance?
You pick and instance, then sign up. You can be on more than one instance, but you will require a separate account for each.
It has been really great to focus on Mastodon and let my other social media fall away. To log in and read posts that I actually find interesting made by like minded people is awesome. It also feels really nice to leave a social media “session” feeling more inspired and excited about trying new things instead of feeling simultaneously jaded and overstimulated. So far, keeping social media more minimal or at least more focused has helped me view it in much healthier light. Plus… FOSS!
The bridge doesn’t work.
Bridge?
Mastodon says it will add people who are the same on Twitter and Mastodon so you don’t have to add them manually but it doesn’t work.
That’s something I have no control over, or knowledge of. Sorry.
Nice summary!
Regarding your last point, about picking an instance: I’d suggest going through Mastodon users you know or are a fan of. In my case, an artist I’d been following for a while – someone who seemed like a stand-up person and reasonably tech-savvy – turned out to be running an instance with a good code of conduct. Absent that, I’d probably have asked someone I was friends enough with to ask, “Hey, what’s a good Mastodon instance to join?”, and checked out their suggestions.
Hi. Good article however I’m not very fond of e-mail analogy… i know that you want to get point across but… this is not how email works 😉 and what’s worse – I though that mastodon would also relay on SRV records of sorts instead of auto-discovery by users.
The email thing was a deliberately simplified analogy to help get an idea clear in a new user’s head, as email is familiar to most. The details of how email fundamentally works (MX records, DNS, SMTP etc.) are not relevant to the article.
The concept of multiple providers communicating over a standardised platform was the point.
after pondering it more – using this as analogy is kinda bad – but it’s only because IMHO mastodon federation is also kinda bad – you may end up on a node that is kinda blind to some node feed just because no one before had any interaction with it
What confuses me about Mastodon is search. Are the results from your instance only? If not, where does the index live? Does every instance have to build it’s own index of all the Toots across the Fediverse? That seems highly inefficient. My searches return very few results, so I am guessing that Instances have their own indexes that only contain toots from instances they are aware of. I know Google can index Toots, but how would you search Google for a toot specifically when all instances have their own domains, and Google doesn’t understand Federation presumably.
Hey Jesse, basically, yeah, each instance does create its own index of media and accounts that it federates with.
When searching, account results are from all instances that your instance federates with, whilst hashtags etc. are local only, I believe. If your instance isn’t federated with many other instances, that may explain why you’re not seeing many results.
you can easily do a site specific search on Google (or DuckDuckGo), you simply have to use the correct syntax, which is:
site: “search string”
So, if I want to search my instance (fosstodon.org) for the string “kev quirk” my search query would be:
site:fosstodon.org “kev quirk”
Hope this helps.
Thanks for writing this. My big question is why when I visit someone’s profile, I don’t actually see all of their toots. Sometimes there are only one or two even when I know the person has tooted many times. I experience this both on the web and on Tootdon. Do you know the reason for this?
Hey Steve, thanks for the comment. I’m actually not certain of why this happens, but I always assumed it was when an instance was newly aware of an account and hadn’t built up a cache of that account’s Toots.
Thats just my best guest though, as I haven’t looked in to it. It is frustrating when that happens though.
Posts don’t reach your server unless someone on it follows that account. Old posts aren’t fetched, only new ones. If you want to load an old post, you can copy its URL into the search bar!
So, if no one on your instance follows my account, even if you go right to my account’s page at https://mastodon.oeru.org/@stevefoerster you won’t see all of my public toots? Really? :-/
You’ll see the posts from that web page, because that’s public. But when you log into an instance where no one has ever followed you, then they need to look you up by searching for your profile/address. Once any one person follows you, your posts will reach that new instance, but your old posts will have to be manually fetched by copying the URL and pasting it into the search bar.
From that link we do, but when logged in and not federated, we don’t.
For example, my instance isn’t federated with your instance yet, as no one on my instance follows anyone on your instance.
If I go to the URL above, I can see all your public toots, as I’m visiting your instance. However, if I log in to my instance and look up your profile, I won’t see them.
If I then follow you, our instances will federated and after a short while,everyone on my instance will see all your toots.
That’s why there are things like follow bots, that stop this kind of thing from occurring.
Excellent article. The one thing I would have added is more information about the columns, and how to use search to create new columns.
I think that becomes self-explanatory once a person starts using the UI. I deliberately didn’t go in to the minute details of every aspect of Mastodon – the article was long enough already. This is a good starting point, I felt.
Given how good this introduction is, I for one would welcome follow-ups from you that cover additional topics like this, if you’re so inclined. 🙂
Thanks Steve, happy to. Do you have nay particular topics in mind?
Well, what the columns are and where they come from would actually be a good one. Stephen is right that they’re not as self-explanatory as one might think. More sophisticated folks probably won’t have trouble, but it is still a barrier to adoption.
I’ll add it to the list. Thanks for the feedback, it’s always great to get it.
Good explanation, but I’m still confused when I first use the column interface
Confused how? Happy to help, but I need more info.