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.