Nota: this article is way longer than expected, sorry :). You may need to grab some coffee before reading it…
I guess noone here needs an introduction about what the Fediverse or Mastodon is anymore, there have been so much content about that in the past couple of weeks since EM took over the birdsite that is has been hard to avoid them (trust me, I tried…). Even “mainstream” media talked about them in France and elsewhere, more or less correctly.
I have been on the fediverse for some time now. My account on the framapiaf instance indicates “Jan 23, 2018”, but I was part of the fediverse before that. I used to have my own Mastodon instance (that I called minidon, because it was only for 3 users…). Funny enough, I really can not remember if I selfhosted it or used a hosting provider… But that’s not really important anyway :).
I moved from my own instance to a managed one for multiple reasons, but the main ones where:
- Mastodon was (I’m guessing still is?) a heavy piece of software to run. I can understand why the complexity if you run a big instance, but didn’t (and still doesn’t) make sense for a single user
- I was going back and forth between liking and hating mastodon, so there was long period where I didn’t use it or even updated it, which is a really bad thing to do with exposed services^^
- I didn’t care much about privacy on the Fediverse, because a/ I trusted (and still do) framapiaf and b/ I only share things I don’t mind being public, even in DM. PSA: The fediverse is not a place for private discussion ;).
So why burden myself with maintaining an extra software that was using a good part of my server resources…?
The choice of the framapiaf instance was easy as I have been supporting them (and still am) for some time. I trusted them with my Fediverse “data” (as said above, nothing private there anyway).
4 years later, it seems I might be changing my mind again and have been hitting at reinstalling my own instance even before all the recent noise…
Owning my fediverse space again
Anyway, here I am… Wanting to own my fediverse space again… As usual, it is due to a mix of reasons more or less valid, but being the only one deciding my own federation choices is a big one. I’m not saying I disagree with my instance rules, not at all, but the future of the Fediverse might become weird, where silos might be imposed to users “for their own good” sometimes a bit too strongly. I’m not going to argue more about this here, but feel free to contact me if you want to discuss this topic :].
Back to square 1, I needed to select the client / server I wanted to use. Not like in 2017, there are different choices now:
- Mastodon1: Still too heavy and too complex for a mono user instance, at least for me, so I didn’t tried it. Provides backend, frontend and APIs to use with other clients.
- Pleroma2: That was my first goto choice. It has been around for a while and have been used for a long time by some people I follow. I even pinged Lord3 on IRC to discuss his intance a bit. Thanks again for the feedback. I couldn’t compile it (using docker) on my instance and that made me realize that it was written in a language I didn’t know anything about: Elixir and Erlang… I admit this made me a little scared about the maintenance. Provides backend, frontend and APIs to use with other clients.
- Snac24: Written in C and minimalist, it provides both a backend and frontend. Not sure about APIs, but I don’t believe so. No database, no JS, no cookies needed, which is pretty cool :). I didn’t like the frontend part though with the threaded and moving views of toots. Looking at @email@example.com example was helpful.
- Honk6: I must admit I had a really hard time understanding what it does and doesn’t based only on their documentation. Looking at the author own instance7 was helpful. Minimalist in the implemented features too which can be both great or frustrating depending on what you are looking for, as it removes things like favs, polls or even being able to see who is following :). Also written in golang.
- GoToSocial8: Writen in go, focused only on the backend part and provides APIs for other existing clients. Still miss a lot of features and is young but with already a clear roadmap of what’s to come. In the long run, it might be a great server for both small and big instances.
I even thought about a more POSSE9 approach where my blog (or part of it) would become my fediverse presence. It means writing first on your blog and then syndicating to the Fediverse. It is based on the indieweb10 ideas. While I really like the idea, I felt like mixing blog posts with small thoughts (“toots”) was not a good idea for me (and even worth the potential discussions with others would) and would “pollute” a bit this blog…
At the end of the day, it was mainly between Honk and GoToSocial.
I decided to go with GoToSocial as a first try to re-own my fediverse space, because:
- I really like the full backend/frontend decoupling. I’m not a fan of having a web page always opened anyway. So having only my preferred clients available without having a “default” web UI was good. I wouldn’t say the same for a multi user instance, but for my personal use case I feel it is a plus.
- Between Honk and GoToSocial, I was more attracted to the roadmap of GoToSocial and where it was going than Honk. Honk seems more ready to use now than GoToSocial, but the limited scope (again, good and bad depending on your need) was not aligned with what I wanted, at least for now.
- It is in golang and being a human makes me subjective (that argument was true for Honk too) :)
No solution is perfect, and even if I installed GoToSocial, it is still lacking some of key features for me (it might miss a lot more for others):
- Hashtags: that is the key missing thing for me. Right now my usage of mastodon UI is mainly following my home (only the people I follow) and pinned hashtags. It means for me loosing the main way to find interesting content on mastodon, my home timeline being more to read news about people I know or enjoy following. This is the key problematic part right now.
- Moving account: While I can do without, it might be painful if I want to migrate for real. That being said, that would be a 1 time thing and might help me clean a bit my timeline and enjoy a slower timeline, as it has became crazy lately.
Some things I can leave without but will be happy when they will be implemented: Polls, Mute, Revoke credentials via UI, Filters.
All other missing things like lists are stuff I don’t really use so don’t care much :].
If you are interested, I suggest you read the roadmap file11 on their repo :).
Ok, so it’s nice to select GoToSocial because it has a strong decoupling between back and frontend… But that means searching for the right frontend too!
I started with Pinafore12, the “official” web client. I’m saying official between quotes because it is not developed by the GoToSocial community, but is indicated as one of the 2 clients of choice (with Tusky for android). So I decided to start there. While I couldn’t built it on my small server (need more than 1GB memory), I used it on my laptop and on the official web page. It works pretty well I must say! I’m not a big fan of the UI but it is fast and snappy! Way more than the default Mastodon UI. It lacks the feature of pinning hashtags, but GoToSocial as a backend doesn’t manage them yet, so it isn’t a real problem for now.
Then I moved to TUI clients, because that’s what I enjoy using the most. I tried the 2 I knew: toot and tut.
Tut13 is my favorite one. I managed to connect it without any problem and it displayed my home timeline and notifications just fine. But looking at the logs on my server, I noticed that it was spamming hard my server. I was seeing in the logs more or less every seconds the following line:
[…] method=GET statusCode=404 path=/api/v1/streaming/user msg=“Not Found: wrote 858B”
I didn’t investigate more but this is the only client I tried that did this… Not sure why, the
/api/v1/streaming endpoint has normally be fully developed in GoToSocial… I’ll probably try to understand more in the future because tut is my favorite TUI client.
I also tried toot14, which worked well as well for the home timeline. But trying to display the local or federated timeline end with an exception being raised…
Finally, I went on the official joinmastodon.org website that listed a few clients I didn’t know yet.
Sengi15 is a TypeScript / electron app. Normally, I avoid application based on electron, but the limited choice of client made me install it via snap quickly to check it out. It connected to my account and worked as expected to display the home / federated timelines or the notifications. I must admit that I really didn’t like the UI, which is very subjective I know, so I stopped using it. I didn’t do much tests but what I tried (based on what is available on the GoToSocial backend of course) seemed to work as planned.
I also tried Whalebird16, another TypeScript / electron app… The UI is based on Slack UI. I’m not the biggest fan, but I’m so used to it because we use slack at work that I’m ok with it. It seems to have some issues with notifications being repeated, but because I remove all notification anyway, I don’t really care. Works fine even though refresh is manual.
Other I either didn’t manage to install/run or didn’t want to try:
- Tokodon17: Couldn’t manage to run without crashing.
- Hyperspace18: But is now archived and not maintained
- The Desk19: another TypeScript / electron app. The UI on the screenshots seems very complex and messy. Didn’t try (yet?).
Where did I end up? For now, I’m using Pinafore, and sometime whalebird.
What’s next then?
Well, that’s the question, isn’t it. So far I really like having my small instance… The 2 main issues are:
- Lack of hashtags. The workaround for this would be to keep my old account while waiting for hastags timeline to work. That could be a solution, while painful in principle, not too complex to do…
- Bugs with tut… If I have time in the coming days/weeks, I’d like to investigate the bug with tut to see if I can help fixing it… We’ll see!
The other thing is that I want to see how my server manage being part of the fediverse. So far, I’m very impressed at how little resources are required to run GoToSocial. Right now my instance is federated with 75 others. It runs on the cheapest digital ocean droplet (1vCPU, 1GB of RAM) with other services running on it. Since I installed GoToSocial, CPU average usage has raised from 2% to … ±3%… I can see a lot more “spikes”, even though these spikes are below 15% of CPU usage… Load average is still low and average RAM usage has grown from a ±50% to ±65%. So the server still have a lot of headroom. I’m curious to see how storage will evolve, but for now it didn’t move much since the start.
I’m going to keep this instance alive until at least the end of the year to see how everything evolves, but I’m optimistic about at least partially moving to my own instance. The part 2 of this blog will cover this at the end of the month.
Many thanks to the GoToSocial team, as well as all person involved in the different clients or the fediverse in general!