The Stochastic Game

Ramblings of General Geekery

Writing old school C code is both weird (when you come from C++) and strangely liberating…


Pierre-Yves David, core Mercurial dev, just announced that they have a prototype for Mercurial support in Gitlab. This is amazing, I hope it lands on Gitlab master! https://gitlab.com


The Missing Element in the Fediverse

Today, Eugen, the creator of Mastodon, the Fediverse’s probably most popular instance implementation, tooted this:

He’s basically quickly explaining to newcomers how to find someone whose account lives on a different instance – something that might be understandably foreign to people used to silos like Twitter or Facebook. But then he adds:

It’s very similar to how e-mail addresses work.

That’s something that’s been bothering me for a while about the Fediverse: it’s not clear how a Fediverse service like Mastodon relates to someone’s online identity. The added element of having multiple instances to choose from is often compared to e-mail, where people can choose between Gmail and Hotmail and Yahoo and thousands of other providers, while still being able to communicate… but the important difference is that email lets you decouple your identity from your service provider. You can be john@doefamily.com, with your email hosted with Google or Fastmail or whoever else you want. And if you want to switch providers, you can do so without having to tell anybody: they still email you, and receive emails from, the same address as before.

That’s not the case (yet) with the Fediverse. If you’re @johndoe@mastodon.social but want to move to pawoo.net, you’d have to migrate your profile and tell people to follow you over there.

I suppose that a technical solution is possible, and might follow the same model as e-mail, where mail servers first ping the receiver’s domain’s DNS table and ask for the actual mail server via MX records. There’s also some other more complex stuff on the receiving end to prevent spam via other DNS records like SPF and DKIM. Mastodon, or any other Fediverse server, could similarly ping doefamily.com and see that @john@doefamily.com is hosted on pawoo.net, thus sending a notification to @johndoe@pawoo.net.

The question is: should it?

I have no idea. That’s the other thing that bugs me: the Fediverse seems still unsure about what it is – it’s only sure about what it’s trying to be and not to be.

For instance, someone proposed recently that the term “instances”, which comes from a rather technological background, be replaced with the term “communities”, to show that this is more about finding a place where you feel “at home”. Since the whole point of the Fediverse is to be able to communicate with other instances, it might seem odd to have to pick an instance based on other factors than price/performance1, but the reality is that instances have different moderation policies, might block other instances, and, more importantly, the UX (at least with Mastodon) gives a prominent place to your instance’s Timeline compared to the rest.

As such, Fediverse instances look to me like Twitter’ified versions of internet forums where you can also reply to threads from other forums. Maybe you’re @ilovepikachu@pokemon.social and you talk about Pokemon all day long, but sometimes you also talk politics by replying to someone on anticapitalist.party… but does that even make sense? Wouldn’t you just have a profile on each instance/community, using each profile appropriately, the same way we’ve had different accounts on a handful of forums since the late 90s?

The answer, of course, is often a vague “it depends”. The Fediverse is what you make of it… or something. But for a technology predicated on “taking back what’s yours” from the evil Silicon Valley corporations, the Fediverse doesn’t seem to have a good story about how you can own your identity and your data. I guess that’s what the IndieWeb movement is trying to address more directly.

In the meantime, I maintain my own Mastodon instance – something I don’t need to do for my e-mail.


  1. Who would pick an email server where all customers are into Anime?! ↩︎


It occurred to me that here I am on Dog Mountain, and I’m wearing my Dog t-shirt!


Announcing SiloRider

Lately, I’ve been spending my free time making PieCrust (the static website generator powering this blog) support Indieweb things like Micropub and (incoming) Webmentions. But while being on the receiving end of things requires intimate knowledge of a CMS’ storage format, other Indieweb concepts put your website on the sending end, and that generally doesn’t rely on anything else than the final HTML markup… it’s therefore CMS-agnostic.

To implement that side of the Indieweb coin, I decided to write a new tool, independent of PieCrust: it’s called SiloRider1!

What it does right now is let you adopt the POSSE model with your website. After you’ve published a new article or post, you run SiloRider and it will syndicate (or “cross-post”) that out to “silo” services – right now it supports Twitter and Mastodon.

For instance, this recent update from my blog was syndicated like this on Twitter and like this on Mastodon:

In the future, it will probably send Webmentions out to websites you’re replying to, and other such things that can be done by parsing the just-published pages on your website.

In PieCrust, I integrate SiloRider simply by making my default publisher run a script that bakes the website, rsyncs it to the publicly served folder, and invokes SiloRider – this way, it works whether I post from a client app like Micro.blog’s iOS app, from the PieCrust admin panel, or after pushing my blog repo to my server (since I have a hook that runs that same publisher). You can similarly run it after your Hugo deployment, or whatever it is you use to make your website.

As with all my other projects, the documentation is up on BOLT80, and the code is available on GitHub and Bitbucket, depending on whether you prefer Git or Mercurial.


  1. It’s named like this mostly because I’m bad at naming things, and after
    spending a long time trying to come up with a name, I suddenly became very
    frightened I might take longer to name it than to code it, so I picked
    whatever popped in my head next. ↩︎