Haskellist on Git Code

Linux’s current version control system is git, which was written by Linus himself, and which, like Linux itself, has many enthusiastic fans.

Like Linux, git is considered to be extremely fast and powerful, but also arcane.

Like Linux, git has many tutorials written about it on the internet, telling people that it’s really very easy once you get to know it, and it lets you do wonderfully powerful things by means of very terse command-line incantations, and most of all, it’s very, very, very fast.

Like Linux, git has many detractors who maintain they have enough spare time to deal with slower-performing systems with less terse but more comprehensible interfaces, but not enough spare time to read dozens of tutorials on the internet trying to attain the level of familiarity with the system that permits them to issue those terse commands, and spend the time they just saved on command-typing writing tutorials to bring others into the fold.

A Haskellist who dug into the Git code while trying to reimplement some of it in Haskell as a personal project, had the following to say —

evan_tech — gat, a git clone in haskell: “Git is a jumble of random nearly-commentless code, full of globals and strange state and not at all clear control flows. On the other hand, it’s also much more Unixy than the code I’m used to reading, doing all sorts of tricks like using mmap() instead of read() (because the latter just involves an extra copy, y’know?) and forking. I am simultaneously impressed and terrified of what’s likely going on in my kernel.”

(Via Programming Reddit.)

For the record I don’t have the chops to confirm or deny his impressions.