Armaan Bhojwani


Published on

The Problem With GitHub

Microsoft's GitHub has become the de facto place for software development, especially in the open source community. This goes against the spirit of free software entirely. Here are just a few reasons why this is an issue, and how to break free.

Monoculture

It's dangerous to have a single hub where all FOSS development takes place.

There is a common misconception among new developers that Git is the same thing as GitHub. This misconception stems from the fact that GitHub sells itself as "how people build software" [1], and is considered the hub for free software. This monoculture gives GitHub entire power over how free software is developed. They can very easily sway the direction of projects and the way that coding happens, for example by pushing Atom (their own text editor) onto developers, make it harder to contribute from certain platforms, or make it difficult to migrate into a different system. None of these are major issues at the moment, but they are all very easy for GitHub to do with the amount of power which has been forfeited to them.

By not using GitHub, you also make it easier for other people to not use it. Today there is an expectation for open source code and developers to be on GitHub. If you don't use it, you become the odd one out. This is changing quickly however, with Codeberg, Sourcehut, GitLab, and other platforms growing rapidly.

Irony

GitHub sells itself as the major FOSS platform, but it itself is owned by Microsoft, and all the GitHub code is proprietary. Microsoft is only interested in GitHub because they can make money off of you. I don't know about you, but I would rather be a part of a platform that doesn't exist just to make money from me, and runs their own software using the principles they stand to profit on.

But isn't GitLab fine then? GitLab does have an open-source core, but the enterprise edition (which gitlab.com runs) is still closed source, and they are primarily driven by commercial interests.

Your voice

If you want to make a change in GitHub, you simply can't. You can contact their support, request features, take to social media, but that rarely amounts to any change. On FOSS platforms like Codeberg/Gitea, GitLab, Sourcehut, et cetera, you can simply write a patch and submit it with a fairly high chance of it being accepted. The administrators are also often active, easy to contact, and open to feedback (although this depends on the platform).

Specifically, why Sourcehut

I recently switched from Codeberg to Sourcehut. My primary reason for this was that I wanted a) a service that works without an account for contributors and b) well-integrated CI/CD. On a self-hosted Gitea or GitLab instance, every contributor needs to create an account when submitting a pull request, submitting a bug, et cetera. This is a bit of a nuisance given the number of decentralized instances there are. On Sourcehut, no matter what instance of it you are using, contributing just requires an email account. Sourcehut uses the classic mailing-list model for submitting patches, utilizing git send-email. The alternative to this which Git{hub,lab,tea} uses involves creating a fork of the upstream repository, committing changes to that, then submitting pull requests via a web form in the browser (or now with the GitHub CLI tool). This is a big pain, especially for one-off contributions, and can put people off from contributing.

The second reason I switched was wanting CI/CD built into the software forge I was using. For some time I was using a self-hosted Jenkins instance to complement Codeberg. This worked fine, but was a bit of a pain, and I could never really get used to the Jenkins workflow for my own personal projects. Sourcehut has a KVM-based CI/CD service that works really well. As soon as I push this article to the Git repo, Sourcehut will fire up an Alpine Linux VM, SSH into my server, run a git pull on the source directory, and regenerate the RSS feed and Gemini content. This process is seamless and easy to setup. Many projects such as Nim and Alacritty use the Sourcehut CI/CD service even though they host everything else on GitHub. So whilst Codeberg offered a really nice service and community, Sourcehut was the better overall package that I was looking for.

References

1 - From https://github.com/about