Meta(
    title: "The Twitter invasion",
    summary: Some("The massive influx of people leaving Twitter is straining the Fediverse"),
    published: Some(Time(
        year: 2022,
        month: 11,
        day: 8,
        hour: 16,
        minute: 0,
        second: 10,
    )),
    tags: [
        "fediverse",
        "social-media",
    ],
)
---
I'm sure we're all aware by now that not everyone is happy about Elon Musk owning Twitter. For those of us on the Fediverse we had the pleasure this week of having a lot of our instances overrun by a huge influx of new accounts. It seems that someone, actually a number of someones, suggested that Mastodon is a great place to move to from Twitter, and the people came. The instance where my account lives saw a doubling of accounts in about two days, before the admin prudently shut down new registrations.

The problem is, as quickly as our admin acted, he probably wasn't quick enough. That second day of the mass influx the server was obviously under a torture test and the hardware must have been running literally flat out to keep up with demand, a task that it was very much failing at as posts on everyone's timeline were running six to eight hours behind. More, in the case of federated content. And our instance was only one of the many that was having issues, with some of them being hit much harder.

Now, as a Geminaut, I'm used to back and forth communication taking a slower pace. I'm actually really cool with that aspect of what's going on, and I'm ok with the influx of people for the most part. I do worry that a lot of them are going to quickly discover that Mastodon is most definitely -not- Twitter and become disenchanted before they realize that it is, in fact, it's own pretty awesome thing. I am not even going to attempt to point out to most of the newcomers that what they're referring to as Mastodon isn't even really Mastodon, it's a Mastodon clinet and server with your timeline having content from the wider Fediverse as well. It's, you know, not worth the aggrevation right now. And in a way, that might be a good thing in the short term because we need a bit of time to let the network recover and to rebalance things a little bit. Some servers might need to upgrade some hardware, some connections might need upgraded. But we likely need to have more instances available to meet the demand, and we also might need to encourage some of those who signed up recently to move to a less crowded instance.

To that end, I'm considering bringing up an instance myself. Probably using recycled hardware, and serving a relatively modest number of users, but still useful to get people connected. More on that in a minute.

## Mastodon (the software) has a performance problem
It's actually kind of horrifying to me to think about what would happen if the Fediverse were to attempt to accommodate a user base rivaling Twitter if they were all using Mastodon. Speaking from an energy usage standpoint this would be a catastrophe. It's not just a matter of sending toots, boosting toots, replying to them, and favoriting them. Every time a user takes one of those actions it then gets federated to the rest of the network. This can exponentially increase the computational demands as the network grows. This is bad. We need this software to be extremely efficient. Right now, it isn't. The fact that so many instances came grinding almost to a halt this week illustrates that point pretty clearly.

Mastodon, which is probably the fastest growing part of the fediverse and is taking the brunt of the exodus from Twitter, is written largely in Ruby on Rails on the backend. If you look at energy consumption for programming languages, without even looking at the implementation, Ruby sits just above Python in energy efficiency. If you look at the link below this paragraph you'll see that we're talking almost 70 times the energy used compared with C. The frontend is largely written in Javascript, which while not great is a significant improvement over Ruby at using around 4.5 times the energy of C. Remember that these figures are just a baseline.
=> https://thenewstack.io/which-programming-languages-use-the-least-electricity/

Long story short, I started looking for alternatives. I was hoping to find something implemented in Go or possibly Rust, but no dice so far. There was a project called Rustodon, but it appears to have stalled out a couple of years ago before reaching full usability. The best option currently for a modest instance appears to be Pleroma, which is written in Elixr. Pleroma is said to run quite happily on a Raspberry Pi 4 for a modest number of users and seems to support everything that I actually care about in Mastodon. It's what I plan to bring up once I get some more hardware set up for it. But that's a short term sort of move, really.

What I want to see as a mid term solution is a piece of software that implements the ActivityPub protocol written in a fully compiled language such as Rust or Go, which emphasizes performance. What I think is a better solution long term might be a rethinking of the protocol itself to move the task of federation from the server to the client. Right now federation happens as messages passed from server to server. Peer to peer would make for a more distributed network, lower the computing resources required to run an instance, and probably make the network more resiliant to massive influxes of people like we saw this week. In fact, massive influxes of people actually improve a peer to peer network. Now understand that I'm not talking blockchain here. In fact I don't really have a clear idea of an architecture. But I'm not sure we can achieve a fully decenttralized network at massive scale if we're relying on the servers to pass all of the messages, at least not without melting down hardware in the process.

## This all makes me even happier with Gemini
All of this makes me appreciate the simplicity and efficiency of my Gemini workflow all the more. This capsule is hosted on a Raspberry Pi 4 over both Gemini and Spartan using Agate and Agis respectively. The same SBC also serves as a Finger server using Toe, runs a Gitea instance and the HitchHiker Linux website over Apache. Nothing in my capsule or the HitchHiker website is generated on the server at runtime, rather both sites are static pages.All of this makes me appreciate the simplicity and efficiency of my Gemini workflow all the more. This capsule is hosted on a Raspberry Pi 4 over both Gemini and Spartan using Agate and Agis respectively. The same SBC also serves as a Finger server using Toe, runs a Gitea instance and the HitchHiker Linux website over Apache. Nothing in my capsule or the HitchHiker website is generated on the server at runtime, rather both sites are static pages.All of this makes me appreciate the simplicity and efficiency of my Gemini workflow all the more. This capsule is hosted on a Raspberry Pi 4 over both Gemini and Spartan using Agate and Agis respectively. The same SBC also serves as a Finger server using Toe, runs a Gitea instance and the HitchHiker Linux website over Apache. Nothing in my capsule or the HitchHiker website is generated on the server at runtime, rather both sites are static pages.

As I mentioned before, I'm happy with the slower feedback loop that Gemini provides. I'm also happy with the likely smaller audience. I think it's good to step away from that instant feedback loop that social media provides. Gemini also gives you a chance to be a little more contemplative and just write for the joy of wrriting. There are so few distractions when it's just you and a text editor. It's a workflow that is so much more suited to thoughtful writing than evtering text into a small box in a browser page. In the browser, you have so many other things in your field of view, and the text box itself is usually pretty small. Add to that the fact that on a service like Mastodon or Twitter there's a character limit. I've actually never seen the appeal of that concept. I make use of it to increase my networking and to announce software releases of my various projects, but I really dislike turning communication into short soundbites.