GitHub is an Absolute Mess

2022-05-23 | 4 minute read | 826 Words
 #tech
 #writeup

Introduction

If you have been a developer on the internet for more than 10 seconds, you will probably have heard of Github. If you have been living under a rock (I envy you), Github is a proprietary git hosting service owned and operated by Microsoft. Not only is it a horrible experience for using git (or any distributed vcs, which Github only supports git), but it promotes a lot of bad practice, incorrect philosophy, and centralization.

The Git way of collaboration.

If you have ever been involved with contributing to Linux, PostgresSQL, Wayland, et-cetera, you will be familiar with git’s patches and send-email workflow. This workflow operates off of these three basic “steps”, if you will.

Its deceptively simple, you just interact with your repository copy as normal, writing code and making commits, until you have done what you want. Then, generally you’ll rebase changes and fixup some of those uglier commits. Finally, with send-email, you select the commit range which you made changes (for instance: HEAD~10), then send off the email with a brief description of changes. The main reason(s) I think its this way is for these main factors:

Decentralized by nature

The biggest reason why this makes the most sense as a way to contribute since email by nature is distributed. There are many services for email and its trivial to self-host your own email server. Thus the barrier of entry for a email-oriented system is very low, as about 99.99% [citation needed] of people on the internet have an email address.

Fully offline

While some my question the value of a ‘fully offline’ workflow, the value of such, in the eyes of git, is extremely valuable. Because git is a distributed vcs, it should not (inferring it does not) rely on any centralized service. (ie. your email service provider). Being that most modern email clients allow you to locally download emails for offline access, you can just use it as a way to report issues, suggest code changes and other things, because fundamentally, email is just text and so is code.

“Social Coding” workflow

Github decides to be the different from the git workflow, and introduce its own additions to code development: Pull requests.

For the uninitiated, pull requests are simply a way to contribute code to a Github project via forking the repository. So you clone your fork of a project, then make local changes. Once you are happy with changes, you can push commits to your fork, then open a pull request to the main project. Of course this assumes you have an account for Github, because you need one to open pull requests. Not only are there about five more steps for contributing to a project, there is also no encouragement of using security features such as GPG signoff.

Github’s pull requests are also really terrible in the fact that a Github account is required to contribute anything to a project at all. Thus promoting vendor lock-in, which is not a great look for a decentralized revision control.

GitHub isn’t free software

Now as a free software developer, I have a very strong opinion on software licensing and ethics. Github does not make that mark, rather, it strays far from it. Github has no intentions of being or becoming a free software project. I think this is a big reason to avoid Github, since there is no telling how much surveillance and control Microsoft exerts over the platform.

Microsoft

Quite possibly one of the most concerning features of Github (if you can even call it that) is that it is owned and operated by Microsoft. This should be the driving factor in free software devs moving away from the platform. If you have heard of Microsoft’s catchphrase Embrace Extend Extinguish, you can already see my sentiment. Github adds a lot of platform-dependent tooling, pull requests being one of them, that rely solely on the web frontend. Not only this promotes vendor lock-in, but it takes away from a lot of other solutions to get the same thing done.

How you can Transition from GitHub

So Github isnt great, what else is there then? Well for starters, you can get up and running quickly with these git services:

If you are one of those people who wishes to self-host things, here are some tools for hosting git repositories.

Final notes

If you are a free software developer, I implore you to move away from Github and to something better. There are a host of amazing projects out there that don’t rely on Github, much less amazing alternative to github in general.

Next =>

Liked the article? Send it to a friend!