OpenBSD on Git

5 October 2020

Stefan Sperling and other OpenBSD contributors are developing a new version control system, Game of Trees:

Game of Trees (Got) is a version control system which prioritizes ease of use and simplicity over flexibility.

got uses git repositories underneath, so you can use git and got on the same repository. Why are these developers spending their time on developing this new tooling? The project’s first line about prioritisation is diplomatic, but software is often written to solve a problem. Git, like all software, has problems.

Steve Bennet wrote:

What a pity that it’s so hard to learn, has such an unpleasant command line interface, and treats its users with such utter contempt.

The command-line interface of Git is so confusing that you might think that these manual pages are real.

When you are onboarding yourself to a new codebase you’ll ask “how do I contribute?”. Does the project use git-flow? GitHub flow? GitLab flow? You arrive and sometimes there’ll be a mix of all those. And more. A branch with a fix from John who doesn’t even work here any more. A “dev” branch that hasn’t been updated in a few months because now we deploy direct from “main” (or “master”). I’m met with surprise when I tell people the Linux kernel and git itself is managed totally differently; plain-text patch files are sent via email (more info).

What should we be doing? From the official git project website:

Because of Git’s distributed nature and superb branching system, an almost endless number of workflows can be implemented with relative ease.

Since the tooling itself does not recommend a workflow, we end up relying on large, complicated server-side software to steer us towards one. GitLab requires at least 4GB of RAM on the server it is installed on. GitHub is a huge closed-source service that is a hard dependency of some developer tooling. There’s an opportunity here for software with some sane defaults to come along and demonstrate that you don’t need all this extra stuff for things to be easy to use.

That’s where got comes in. Is got going to change the entire distributed version control system landscape? I wish it would, but it’s not intended to; its target audience is OpenBSD developers. But there’s something happening. Got is being developed (see the mailing list) and sourcehut is profitable. It’s exciting to see where things are going.

EDIT This got posted on Reddit by someone so I kinda finished it.