Fossil vs Git

Why Fossil over Git?

João Duarte Pinto
3 min readMay 5, 2021

Git does not provide good situational awareness

Using Fossil as VCS in a project, to know the status of the entire project, just go to the timeline, and in a single screen you can see a summary of the latest changes to the project, in all branches. Using Git, it is necessary to use third-party graphical viewers in order to have the detail and ease of visualization.

Git makes it difficult to find successors (descendents) of a check-in

”Git lets you look backwards in time, but not forwards. Given some historical check-in, you can see what came before, but it is challenging see what came next.”

It is not impossible, but it is extremely difficult to find descendants using Git.

In contrast, Fossil has the option to display all check-ins that are derived, for example, from the last release.

The mental model for Git is needlessly complex

”The complexity of Git distracts attention from the software under development. A user of Git needs to keep all of the following in mind:

The working directory

The “index” or staging area

The local head

The local copy of the remote head

The actual remote head”

”Git has commands (and/or options on commands) for moving and comparing content between all of these locations.”

”In contrast, Fossil users only need to think about their working directory and the check-in they are working on. That is 60% less distraction. Every developer has a finite number of brain-cycles. Fossil requires fewer brain-cycles to operate, thus freeing up intellectual resources to focus on the software under development.”

Git does not track historical branch names

Fossil is able to clearly show the history that happened in old branches, where it started, the merges and the relevant information. Git, using third-party GUIs, is unable to clearly show what happened in the past.

Git requires more administrative support

”Git is complex software. One needs an installer of some kind to put Git on a developer workstation, or to upgrade to a newer version of Git. Standing up a Git server is non-trivial, and so most developers use a third-party service such as GitHub or GitLab, and thus introduce additional dependencies.”

In turn, Fossil can be installed just by placing the binary in the $PATH. With just one binary, Fossil has the functionality of Git and GitHub/GitLab.

Regarding the hardware needed to run a Fossil instance, a free (or cheap) virtual private server or a Raspberry Pi can be used, whereas GitLab and similar require better hardware.

Git provides a poor user experience

https://imgs.xkcd.com/comics/git.png

Image from: https://xkcd.com/1597/

”Designing software is hard. It takes a lot of focus. A good version control system should provide the developer with assistance, not frustration. Git has gotten better in this regard over the past decade, but it still has a long way to go.”

--

--