A Rant About Git

( This is a modified version of a rant that started on Twitter and ended up on Mastodon )

When Github goes down, FOSS effectively stops right now. It's tragic that we've allowed a single company to gain such control over the open commons.

I recognize that we are in this situation mostly because the 'distributed' side of git is only usable by experts. And I recognize the niche that GH fills (ticketing and PRs in lieu of emailed patches)

The end result here is that the technical deficiencies in git create a barrier to non-experts which has led us to grant an american corporation exclusive control of vast swathes of the FOSS commons. This will not end well.

I'm not here to besmirch the good name of Github or its people. There are lots of good folks there doing what they think is best. But they are a US company within the reach of the US govt who should always be viewed as a bad actor. Now that we are starting to erode the safe harbor exceptions around user-generated content, there are any number of laws that could shut Github down forever and probably send their execs to jail.

I really don't even think Github itself is the problem yet. I also don't think Gitlab or Gogs or the addition of ActivityPub federation are the magic solution either.

My problem is git itself. Let's look at a couple of use cases. A very common use case is "I want to put my code where you can see it and then merge it, if you think that's fine." Git solves for this with 'git format-patch' and the use of mailing lists. You can also use 'git request-pull', pointing at your public repo, again via email. Both of those solutions suck and GH and GL fill that gap with a central website.

Following on from that, a common use case is "I want to review the code you sent me, comment on it, and merge it". The git idiom is to get a patch in email, apply it to a local branch, and then respond in email. This is all well and good for small patches. You can always be a terrible person and top-post your comments. But for large patches? Forget about it. If you want to comment on specific lines of the patch, you get to battle how email clients are going to format your inline comments in the middle of a goddamn diff. And then you expect folks to dig through that email? GH and GL solve this use case with a central website and lots of UI.

The TL;DR is that git's mode of collaboration was built around email, personal local repositories, and about the contributors being smart enough to figure out git's ridiculous UX. This is not the world we live in nor should it be. git has a lot of great innovations around merge methodologies. And it's so much better than SVN. But it simply is not built for our current world, our current users, and our current use cases of bringing new developers and writers into the fold.

I also really dislike that we separate code from ticket tracking. If GH or GL or whatever eats itself, I'll have the code locally, sure. But I've lost all history of the tickets that were filed, any responses, the conversations around the merge requests, and why decisions were made. Email is better for this, since I can keep a local archive, but that ship has kinda sailed, been hunted down by submarines, and sunk without the location being recorded. I'd love a way to keep ticket tracking and the like inside the repo itself. Ticgit provided some of this functionality but it was clunky and far from an ideal solution.

To close out this rant for now, I don't have a solution to present. I know that's a disappointing end to a 400pg rant. While federated-hosting of GH-clones is certainly better than nothing, it doesn't solve the problems that git itself creates.

Maybe it's time for a different SCM that's built around our current use cases.