Back to all

Why Vikunja is moving from Gitea to GitHub

2025-04-01

If Vikunja is useful to you, please consider buying me a coffee, sponsoring me on GitHub or buying a sticker pack. I'm also offering a hosted version of Vikunja if you want a hassle-free solution for yourself or your team.

Today, I want to share our experience with self-hosting Gitea and explain why we're making the switch to GitHub. It's been a journey, and there are some valuable lessons we've learned along the way.

The Self-Hosting Dream vs. Reality #

A few years ago, when Vikunja was just starting out, I knew a lot less than I do today. I had this idealistic vision of keeping open-source projects truly independent by hosting our own Git platform. The logic seemed sound: "How hard could hosting a Git server be?"

I already had the Gitea server at that time and was using it mostly because GitHub back then didn't have private repos unless you had a paid account. So, the decision to use Gitea to host Vikunja was quite natural.

It turned out to be harder than I thought.

The Spam Nightmare #

One of our biggest challenges emerged when spam accounts started flooding our Gitea instance. The pattern was always the same: They created accounts (sometimes hundreds per day), filled the profile description with spam links and sometimes created issues with spam content. It seems like they are trying to rank certain websites in Google.

To combat this, we first added a captcha, but ultimately had to manually approve new accounts. While this stopped the spam, it created a new headache: every new user had to manually request access.

To this date, they are still creating new accounts daily. My guess is that these are click farms who are paid by the number of accounts they create.

Right now, there are 18k accounts on the instance, 11k of which are not enabled. That also tells you many accounts slipped through and were created before we restricted new sign-ups. For comparison, the forum has ~700 members; that's more likely the actual size of the community.

The AI Crawler Challenge #

Then, around 2023, the AI wave hit, and with it came web crawlers. To a web crawler, a git repo on the web looks like a massive website: you can view every commit and for every commit, you can browse files. That's a lot of links very fast. These web crawlers will visit each possible link, and because these are expensive endpoints like git blame, will use up a lot of resources.

In the beginning, the most aggressive crawlers were OpenAI, Anthropic, and Meta. These were easy to block because they identify with an actual user agent and do not try to obfuscate things.

However, for the past few weeks, there have been increasingly more Chinese bots masquerading as regular users, making them nearly impossible to filter effectively. They sometimes crawl from a wide range of IP addresses.

Let me be clear: I'm not anti-AI. I use AI tools myself and even build products with them. But there's a right way and a wrong way to collect training data. Hammering a small self-hosted instance with endless crawling requests seems like the wrong way.

The Hidden Costs of Self-Hosting #

What we've discovered by now is that hosting a Git platform is like an iceberg—there's so much more below the surface than you initially see:

  • Small Scale: Works great! Hosting for a handful of users is manageable and even fun
  • Large Scale: Opens up a whole can of worms with:

I want to build software, not manage infrastructure. I want to support users with Vikunja, not manage their access to Gitea.

As someone who was previously a Gitea maintainer, it kind of hurts to admit Gitea might not be the right choice for hosting even a mid-sized project like Vikunja.

The GitHub Advantage #

Here's the thing about GitHub—it's popular for a reason. The platform offers:

  • A proven, reliable infrastructure
  • A user base that already exists (no new accounts needed!)
  • Excellent integration with the wider open-source ecosystem

But Microsoft is evil! #

You might be thinking: "But GitHub is owned by Microsoft, and that's problematic!"

It's a fair concern. Using GitHub does mean relying on a large American corporation at a time when US-EU relations have their challenges.

But we can always move to other platforms if that becomes an issue. We've already proven how this could work. If circumstances change, we can always migrate again. But right now, the practical benefits of GitHub outweigh the advantages of self-hosting.

What about GitLab? #

GitLab is often suggested as an alternative, and it does offer a more feature-rich product than Gitea. But self-hosting GitLab would leave us with the same infrastructure challenges we're trying to escape. Moving to GitHub means we can focus on building great software instead of managing infrastructure.

As for GitLab.com's hosted option? It's a valid choice, but GitHub simply feels more like home to me. I've used both platforms, but GitHub's interface and workflows are more familiar.

The GitHub ecosystem is also more extensive, especially for CI/CD pipelines. And practically speaking, more developers already have GitHub accounts, which lowers the barrier to contribution.

What about Codeberg? #

Codeberg represents another path we could have taken - a community-driven, free and open-source Git service built on Forgejo (a Gitea fork).

I have a bit of history here. Back in 2018, when I was a Gitea maintainer, I participated in early discussions about creating something similar to what Codeberg eventually became. Our goal was to establish an entity that would support Gitea's development and ensure its long-term sustainability.

That initial effort stalled when we couldn't reach consensus on key details. Later, some members of that original group went on to create Codeberg.

While I respect what they've built, I never quite connected with the project after that early false start. That's admittedly a personal bias, but it's part of the decision-making calculus.

More practically, Codeberg inherits many of the same product experience limitations as Gitea, which we're trying to move beyond.

The Impact on Open Source Contributions #

Together, these make contributing to Vikunja harder and harder. That's not what I want. Vikunja has never received as many contributions as some other open-source projects, and I would guess this has something to do with it. Some people would send PRs to the GitHub mirror only to discover that they had to resend them—sometimes without doing so.

The Bottom Line #

While self-hosting sounds great in theory, the reality is that it can create many more problems for a project of our size. By moving to GitHub, we're choosing to focus our energy on building great software and fostering a community of contributors.

Does this mean self-hosting is always wrong? Not at all! It just means that for our specific needs and circumstances, GitHub is the better choice. We've learned that sometimes the best way to stay true to open-source principles is to use the tools that best serve the community, even if they're not the ones we initially imagined using.

Here's to the next chapter of our project on GitHub! 🚀

Updated 2025-04-01 17:00: Added more details about GitLab and Codeberg