dammIT

A rantbox by Michiel Scholten

Jumping the GitHub ship


When I joined GitHub in 2012, it was for developers, made by developers. It felt good, and it felt like an open community.

That ship has long sailed.

Rats fleeing the GitHub ship Rats fleeing the GitHub ship - yes, generated by AI, as I thought that would be funny

You probably know why people are leaving GitHub already, though generally feelings center around CoPilot and other generative 'AI' incorporating their work, and conversely being forced down our collective mouths, whether they asked for it or not. It does not help that Microsoft made the illuminated decision to fold GitHub into their CoreAI organisation. Apart from having the LLM scrapers incorporating my work into their body - which likely is in violation of the licenses under which I release the respective projects - the whole course that Microsoft is taking just leaves me feeling icky, and has so for years. I do not want to be part of their openwashing operation, be on a platform that facilitates ICE, or does not even support IPv6 in $current_year.

Also, an organisation of that size that does not care to fix a trivial bug in the CI/CD code for so long (YouTube link), costing people quite some money in some cases, for no reason at all, baffles me. This was a coding error that I ran into myself. When I had been coding for a few months. That is, as young teenager back in the early 90's... This ultra-rich company just refused to even merge a simple fix for years.

On top of that, it is very telling that someone even thought that asking money when running Actions on your own hardware (YouTube link) was a good idea. An organisation so disconnected from both reality and their users does not deserve users.

(Go watch 'The PrimeTime' if you have a bit of time, he's both entertaining and on the nose).

You can find even more reasons to move away from GitHub in this article.

Anyway.

I have always been hosting my own source code, but I like sharing too. Sharing like how I do here on my weblog, and sharing of my coding work as open source as I like to be able to help others and maybe even be inspirational now and then, just like I encounter the works of others online that shape my being.

Why move to Codeberg? The participatory governance model mostly; it is run by a community and does not seem to be waiting to sell out and make the next billionaire. I am hosting my own Gitea instance (and could host Forgejo myself), but LLM scrapers make me afraid to open it up, and I also am not looking forward to dealing with opening up account registration to facilitate people creating issues and maybe even pull requests, while also inflicting a lot of spam on me and my systems.

Codeberg seems to have both challenges under control (for example by using Anubis (source), by Xe Iaso to counter LLM scraping), which makes me sleep a bit easier and not having to worry about my own servers going up in smoke.

I am a proponent of building things that last and are stable, be it websites with links that continue to work for more than 2 years, (re)usable code, or information that stays online instead of disappearing after a while. That is why I host my own websites, including this weblog, on domains that I own. That is also why I chose Codeberg. (It was also why I started using GitHub...)

People have moved quite a bit sooner than me, but I finally set down and migrated my (active) projects to Codeberg. The repositories on GitHub are being locked, with a reference to their continuation on Codeberg, or being deleted completely (which feels very wrong for me, but maybe it is time for some good cleaning).

My process is to migrate a repository, add a clear note in the README about the move to the new location and to not mirror to GitHub, then moving webhooks away from the old repo's and to the new ones on Codeberg and finally archiving the project, making it read-only. For a few projects, I need to update the listing on pypi and do a minor release to bump the README's with the updated links.

That leaves me a lot of checkouts on my various computers, for which I have to change origin and in some cases directories and accompanying IDE settings. Also, webhook handling in webhaak on various servers. Chores, but also a good opportunity to dust away some cobwebs from older projects or nooks and crannies that generally are not touched that often.

Also, if someone knows how to for example let Snyk periodically scan for vulnerabilities, that'd be appreciated :)

I am sad to leave this community, but I hope we foster a new less-centralised coding landscape this way (if we don't all just blindly move to Codeberg, that is). Actually, I'm not even completely leaving GitHub, as I will stick around to contribute to the projects still there.

Bonus

A little script that helps with updating checkouts, based on a snippet by Janik von Rotz:

#!/bin/bash

OLD_URL="git@github.com:aquatix/"
NEW_URL="git@codeberg.org:diginaut/"

for REPO in $(find "$HOME" -maxdepth 2 -type d -name '.git'); do
    DIR=$(dirname "$REPO")
    cd "$DIR"
    CURRENT_URL=$(git config --get remote.origin.url)
    NEW_CURRENT_URL=$(echo "$CURRENT_URL" | sed "s|$OLD_URL|$NEW_URL|")
    if [ "$NEW_CURRENT_URL" != "$CURRENT_URL" ]; then
        git remote set-url origin "$NEW_CURRENT_URL"
        echo "Updated origin URL for $(basename "$(pwd)") to: $NEW_CURRENT_URL"
    fi
done
article header image