Gitless Ameliorates Git Design Flaws

Although Git is one of the most popular and widely used version control systems among software developers, many users agree it has a steep learning curve and isn’t easy to use. The Computer Science and Artificial Intelligence Lab (CSAIL) at MIT has come up with an experimental solution to Git’s most frustrating aspects it calls Gitless.

Gitless is what its developers call a “veneer” running on top of Git to simplify it by modifying its basic concepts. First, it eliminates Git’s staging area, which many users found confusing and CSAIL found unnecessary. To compensate for some of the functionality lost with the staging area, the commit command was given more, making saving changes to repositories less complicated. Gitless developers admit that there are a few less common tasks that Git’s staging area makes easier to accomplish, but Gitless is fully compatible with Git, so users can switch to Git when practical. In fact, if you have co-workers who prefer using Git, they don’t even need to know you’re using Gitless on the same project; there are no migrations needed to use Gitless in a Git repo.

The second issue Gitless addresses is the difficulties with branching. Gitless makes branches completely independent of one another, allowing users to save uncommitted working versions of files to current branches when switching branches, rather than committing unfinished versions to the repo or stashing them to prevent conflicts.

 Third, Gitless introduces a “more general untracked concept,” according to the related report on Gitless by Santiago Perez de Rosso and Daniel Jackson. Gitless converges Git’s “untracked” and “assumed unchanged” statuses into just the former, permitting users to both make new, untracked versions of previously committed files and find them easily, neither of which can be done in Git.

CSAIL developers created Gitless to test their theories of effective conceptual design. They first identified the problems with Git through their own experience with the system, and then by analyzing 2,400 questions to do with Git in Stack Overflow. They decided that these problems were, indeed, conceptual design issues, and set about building Gitless with their own design criteria. According to the follow-up paper by the same authors, they feel that this method of criteria application can be used in “identifying, analyzing, and fixing design problems” in any number of software systems.

It’s always interesting to us at Syncfusion when development tools are improved with new approaches. CSAIL seems to be receiving mixed reviews on their Git veneer, though. Do you share these complaints about Git’s UI and design? Have you ever used Gitless, or do you want to give it a try? Let us know in the comments below.