As I got into the ActivityPub side of the Fediverse I ended up hosting my own instance. Fediverse after all. But I wanted something I could easily operate and run which meant Mastodon was out and most Elixir-based solutions aren’t entirely simple to deploy and manage. Thankfully I stumbled across GoToSocial which is written in Go and has a fabulous community to boot.

GoToSocial’s niche is small or single-user instances running on low-powered devices, like single-board computers or old laptops repurposed as home servers.

Our focus is on providing lightweight software which is simple to install and maintain, and has good security and sensible defaults out of the box.

Since then I’ve been trying to get up to speed and start contributing changes, especially around observability. The first such change now landed thanks to a lot of help from Kim, one of the GTS maintainers. This change allows us to track each request with the help of a request ID through GTS. Now when log lines are emitted it potentially includes a requestID key if the function that called the logger was triggered as a downstream from an incoming request.

This isn’t really tracing in the capital T Tracing sense, but it’s a great start. Now that we’ve got that in place and a better sense of how to carry this kind of information throughout the code I can start looking at integrating something like OpenTelemetry. I also want to spend some time getting some metricss in for the federation and client APIs.

GTS is already very easy to operate and hopefully with these changes we can make life even easier. This should also prove very helpful when debugging issues.