Sorry, but as a free software advocate, this really bugs me.

>Before 2007, the way to participate in Open Source was fragmented. Each project had their own workflow, patches circulated in emails, issues were reported in a myriad ways, and if anyone wanted to contribute they had to figure out every project's rules.

And now we have a monoculture. Monoculture is bad, folks.

This letter paints pre-2007 as something bad because everyone used their own infrastructure for their projects, but this is actually a really great thing. It meant that more projects had autonomy over the infrastructure that they rely on. So, rather than needing to beg a for-profit corporation for features that they want, they could actually change the software they used to work for them. Monoculture is more convenient for the masses, but trading freedom for convenience is a bad deal in the long-term.

The web is becoming more centralized every day, to the detriment of all Internet users whether they know it or not, and when SaaS apologists thank GitHub for helping it makes me upset. A federated, free software source code hosting tool could solve the barrier to entry problem without relinquishing control to a company who ultimately does not care about you.

And how about GitHub's ToS? Has anyone read it? Probably not. I didn't when I signed up. Did you know that changes to the ToS can happen any time and without notice? Even if you did read the terms, by agreeing to them, you agree that they can completely change them. Who would reasonably agree to that if it were not buried in legalese? You also surrender your rights to a fair trial by defending and indemnifying GitHub. For further reading, see "Why I don't support or contribute to GitHub repositories" [0] or read the ToS for yourself.

Now, on a technical note: GitHub encourages bad development practices via hooking people on their web interface. The Pull Request interface is the biggest offender. It encourages unclean commit history because it's scary to rewrite the patch set of a pull request. If you rebase fixup commits, you have to force push the changes. You cannot even do the safer route of deleting the remote branch and pushing the new branch because GitHub will automatically close the pull request with no way to re-open it. So, most people just pile on fixup commits that never get squashed into decent patches. And that's not all! The Pull Request interface makes it difficult to comment on individual patches by encouraging reviewers to look only at the aggregate diff of all patches. This leads to lower patch quality because it leads to a bunch of terrible patches that look okay squashed together to enter the Git repository. When your patch history sucks, it reduces the utility of blaming and bisecting to find issues or otherwise learn about the code. Reviewing patch sets on a mailing list is, despite being "low tech", a much better experience for me. I'm not forced to use a web interface, I can just use the email client of my choosing, and Git already knows how to do an email-based workflow. There's a reason why a huge project like Linux still does patch review via email.

In conclusion, GitHub is a company that receives almost nothing but praise. Most criticism is dismissed because they have a nice UX for a certain group of users (not me). I think GitHub has harmed the free and open source software community both ethically, legally, and technically. I no longer use GitHub for hosting my personal projects. I write all of this in the hopes that more people will recognize this and work on real replacements for GitHub.

[0] https://wubthecaptain.eu/articles/why-i-dont-support-github....