← Back to context

Comment by imiric

1 year ago

Over the years I've come to the conclusion that all these UIs on top of Git make little sense. Git itself is already distributed, which goes beyond federation. Exposing a Git repo over the network is trivial with HTTP or SSH. It supports code review workflows via email, though I really like the approach of storing reviews inside the repo itself via something like git-appraise[1]. Integrating it with CI/CD pipelines _can_ be simple, if the pipeline can be triggered by pushes.

Instead we've created these centralized UIs over Git, and are trying to get them to integrate with one another. This seems backwards to me since Git is already decentralized.

[1]: https://github.com/google/git-appraise

There's value in quickly browsing files of a project without needing to clone it first -- especially for quickly linking others to specific lines, API docs linking to implementation, etc. That needs to expose content at every commit, for stable links. So, some sort of a "web git viewer" is very useful.

Unfortunately, the more minimal read-only ones have ended up with far worse UX than the Github clones, or are a scary tangle of shell scripts and/or C. :-(

(Anyone want to collaborate on a Rust-based read-only git browsing web UI that aims for great usability? I'm all in, I want one. I know how to make it handle search etc, I'm not great at wrangling CSS to will or getting navigation right.)

I suspect the reason is the same as the use of local git GUIs and TUIs; git has a terrible CLI, so everyone uses its plumbing, but not its porcelain.

I needed something like this 16 years ago at work to manage shared code, tickets, and code review of private code across a team of engineers. Code review for formal quality assurance was the most important need. I started with trac, then Phabricator, then GitHub enterprise. I just checked out git appraise to see how my nuclear and mechanical engineer friends would like it, and from what I see, I'm guessing they would not. We were using eclipse back then so maybe if that eclipse UI plugin still works it could work.