Saying goodbye to GitHub

2025-12-29

TL;DR: As of December 2025, I've moved all my GitHub projects to a self-hosted Forgejo instance at https://git.notthebe.ee/

Why?

There are many reasons for that, and unless you've been living under a rock (if that's the case, I envy you), you've also been following a slow but sure enshittification and ensloppification of the platform.

GitHub Copilot presentation

This includes (but isn't limited to):

...and it's (now former) CEO even going on record to proclaim that "just as GitHub was founded on Git, today we are re-founded on Copilot" or even "Either Embrace AI or Get Out of This Career".

Personally, I want no part of it.

Now obviously, GitHub has its benefits. It's not just a code hosting platform, but a social network first and foremost. Millions of people use it to discover and contribute to other people's projects - which means that it's also easy for your projects to get discovered and contributed to. And the more eyes there are on an open source project, the better.

GitHub Sponsors also presents a convenient way for open-source developers to fund their projects without relying on a third-party service like Patreon for donations

Vulnerability scanning is another great feature, especially for developers with fewer resources.

Finally, your GitHub profile doubles as your career portfolio, a place where you can easily present all of your open-source work to a potential employer or client.

These aspects of GitHub make it nearly impossible to move away from it for some of its users.

That being said, I am lucky enough not to be affected by these factors. I don't rely on GitHub Sponsors for donations and don't maintain a big open-source project with many contributors. Most of the projects I host on GitHub are small programs or NixOS modules, as well as IaC for my personal machines.

Besides, it's only when people actually move off the platform that the network effect starts to diminish. Nothing will change if everyone stays on the GitHub while complaining about enshittifcation and bemoaning the lack of alternatives. And seeing as I have an audience online, maybe I can convince some of you to also pull the plug.

Forgejo

Instead of moving to another managed code hosting service such as GitLab or Codeberg, I decided to self-host a forge on my own NixOS infrastructure.

I chose Forgejo as a forge for multiple reasons:

I was able to set it up in a weekend, which included rewriting Github Actions workflows for several of my projects – even thougth act is mostly compatible with the GitHub Actions syntax, I didn't want to keep relying on some reusable workflows that are hosted on GitHub, e.g. https://github.com/DeterminateSystems/update-flake-lock. Running a (free) self-hosted Actions runner also allows you to use your own container images – which means that I can simply pre-build a Docker image with Nix already pre-installed instead of relying on reusable workflows.

In my opinion, act's (and by extension, GitHub's) Actions system does not feel as mature and fleshed out as GitLab CI - especially reusable workflows. That being said, for smaller deployments, Forgejo's modest resource requirements definitely outweigh its shortcomings.

As for the "career portfolio" aspect, Forgejo's UI is very similar to GitHub, which means that I can simply send my self-hosted Forgejo instance to a potential employee/client instead of my GitHub profile.

Forgejo UI screenshot

Besides, hosting my own Git infrastructure has to count for something in terms of technical skills.

That being said, there's nothing wrong with moving to a hosted/managed platform - not everyone is able to (or even wants to) self-host.

One of the obvious choices is Codeberg, which is led by the same team that develops Forgejo. The platform itself obviously runs Forgejo under the hood. If you rely on contributions of other people, hosting your projects on Codeberg or a similar managed forge might make more sense than self-hosting.

What now?

As you're reading this, the contents of most of my GitHub projects will have been replaced with a single README.md file containing a link to this blog post. You can find up-to-date code for my active projects on https://git.notthebe.ee/

I will not be removing my GitHub account altogether, and will continue using it in order to contribute to open source projects that are hosted exclusively on GitHub.

As for incoming contributions, unfortunately, there is no easy way to create an issue or a pull request in one of my projects. Federation functionality is currently being worked on by the Forgejo team, but there's no ETA. If this becomes a problem in the future, I will consider moving to Codeberg or another managed forge platform.

If you're using one of my NixOS modules (e.g. AutoASPM) in your flake.nix, simply replace this:

{
    autoaspm = {
      url = "github:notthebee/AutoASPM";
      inputs.nixpkgs.follows = "nixpkgs";
    };
}

...with this:

{
    autoaspm = {
      url = "git+https://git.notthebe.ee/notthebee/AutoASPM";
      inputs.nixpkgs.follows = "nixpkgs";
    };
}

If you've discovered a serious security issue or a bug in one of my projects, please contact me at wolfgangschannel@mailbox.org.