R.I.P 2019-5/31/2023
Update May 12th: Guppe will live on
Thank you for the all the support for Guppe! It feels great to know that you all value this tool so much. As of now, we have enough supporters on Open Collective to cover the server costs. I would still like to have enough to cover the labor costs of maintaining it, adding fixes for compatibility with new Fediverse platforms, and adding new features like democratic moderation using polls, but, with the immediate costs covered, we have more time to try to reach those goals.
Original post
I never expected Guppe Groups to live this long. I was studying ActivityPub, the W3C specification for decentralized social media that powers interoperability in the Fediverse (Mastodon, Pleroma, Pixelfed, Lemmy, and many other projects), because I wanted to build something very different with it – a social network for virtual worlds where each world is totally unique with its own local community, but people from each world could visit every other world, make friends across communities, and share their online locations with friends to meet up in new worlds. That project exists now and is called Immers Space, but, back in 2019, I had a small epiphany when studying the ActivityPub spec: I could add a feature that that the Fediverse was sorely lacking, the ability to expand your network around topics of interest with groups, as a standalone service that would “just work” with existing platforms without any changes on their part.
I created Guppe as a purely server-to-server app or interactive service. Rather that going to anther website to create yet another account and further fragment your social graph, you use Guppe by sending it messages from your Fediverse platform of choice. Search for a group and, if it doesn’t exist already, Guppe will create it for you. Follow the group and Guppe will send you all of the group posts. Mention a group in a post, and that post is sent to all the group members. This is almost the entirety of the Guppe app, these three simple rules on top of an ActivityPub-compliant base server. It’s a common question how this differs from hashtags. The difference is a hashtag is a passive tool, it helps you organize posts from within your existing network, while Guppe is an active tool, it actively distributes posts across the fediverse in order to help you grow your network.
For me, the purpose was experimentation and education. I saw a need for it, but I didn’t really expect people to use it that much. But they did. For the first year or so, it hummed along fine on a $5/month barebones hosting plan, so I didn’t mind paying for it to keep it going for those who found it useful. Then 2022 happened. After some growth early in the year, it needed an upgrade to the $20-$40/month range. Not pocket change, but it seemed to make people happy. In the fall, with the massive influx of people in the Fediverse, Guppe was being absolutely hammered. I spent dozens of unpaid hours refactoring it to a scalable infrastructure, optimizing the code, and upgrading plans to keep up with the demand. It finally settled with a setup that required 2 servers, 8 replicas of the Guppe server, and 25 replicas of the delivery process – to the tune of $200/month. That was a cost I could not ignore.
Meanwhile in Immers Space, we’d been developing a new model to make Open Source software even more trustworthy and responsive to the needs of the people why rely on it: Open Governance. A cooperative model where those who financially support a project get real governance power over the project in exchange for their contributions. I thought this would be a perfect fit for Guppe, and any funds raised beyond server costs could be used to finally implement some of the requested new features, with the supporting members deciding what to implement. In November of 2022, the Immers Space Syndic Council voted to adopt Guppe into the organization and set up an Open Collective fundraising page and Loomio governance forum for it.
I’m grateful to the 14 people who have contributed financially to Guppe, and who have already directed us in making important decisions about server moderation and responsible use of Guppe’s reach to market Guppe membership, but we are currently raising only about a quarter of Guppe’s hosting costs and none of the administrative labor cost. To try to help cover costs while developing membership, we applied for a grant from NGI0, which funds several Fediverse projects, to develop a system for democratic group management using polls, but it was not successful.
Regretfully, then, we are left in the unsustainable state that the value Guppe provides to its community is insufficient to cover the cost of providing it. As a final opportunity to preserve Guppe, we have reduced the minimum contribution amount to join the Guppe Platform Cooperative to $2/month or $19/year. If Guppe cannot reach a level of funding to cover all of the hosting and a couple hours of administrative labor per month, then service at a.gup.pe will shut down on May 31st, 2023. Guppe’s source code is available if anyone would like to operate their own server in its stead, or you might also want to look at Lemmy or chirp.social for alternative federated group services. So long and thanks for all the fish-themed groups.
-Will Murphy, Syndic
Sometimes it’s a pricing issue, sometimes it’s just a matter of marketing the product and getting the word out there. Either way it looks like you’re sitting around $440 a month which hopefully is good news for the service – will you post an update?
I wonder if you might also ask your financial backers if they’d be happy for some kind of marketing feature where you can push a post out via the groups themselves if you need more resources down the line?
Our members did approve a limited marketing campaign with messages sent from the groups, but the response to these messages was virtually non-existent.
Can you share a bit just how much traffic (number groups, subs/group, post volume, …) you got that brought you to this point?
What’s the primary bottleneck that required you to get more expensive hardware?
Usage peaks at 4,000 incoming requests per minute last I measured. At that rate, the database can struggle to keep up, a backlog on the database means the web server starts taking longer to respond to requests, and eventually it leads to a death spiral situation where all requests are timing out, which triggers the other servers in the network to retry their requests, which increases traffic…
Fascinating that the bottleneck is on the incoming leg. I had been guessing the outgoing leg, as presumably there are 10x or more messages going out than coming in, some of the servers won’t be there etc.
Ty!