I'm starting to learn Go. At work we're splitting out some parts of our architecture into a few microservices, and our Chief Architect decided we should write them in Go, instead of our usual PHP.
I've been enjoying learning it. It's been a long time since I've really tried to learn a completely new thing (as opposed to a new framework or whatever).
As a project to get myself into this, I've been thinking about building my own Fediverse server in go. Architecturally, I want it to be a lot like microblogpub, which I currently use. I actually want to be able to have a clear migration from one to the other.
Like microblogpub, my new project (which I'm tentatively calling gopub) will be a single user instance, intended to be easily hosted on your own computer, with a fairly simple sqlite database, and focused on broad ActivityPub and IndieWeb compatibility.
But I've got some ideas for a few features that I haven't seen elsewhere.
For example, I was thinking it might be cool to have alternate handles for a single user, to only follow certain things. E.g., if I'm [email protected], and somebody wants to follow me, but not see any boosts from others, instead of following [email protected], maybe they instead follow [email protected]. Or, if they only want to follow my posts that include a particular hashtag, they can follow [email protected].
Similarly, a single user with multiple handles would be nice. I think Friendica has this, but I'm considering including it in my project as well.
And one thing I really want to add is location check-in. Basically, the Fediverse equivalent of Foursquare. ActivityPub already has the vocabulary for this, but I haven't seen it implemented anywhere.
I'm still at the very, very early stages. Who knows if I'll ever get it in a usable state. And I'm working on it during my extremely limited free time. But I'm excited to start a new project.