Considering fossil instead of git

written on 2026-05-05

Recently there has been a lot of negative press around GitHub.

Sure, these articles are a small subset of the "programming" community, but it was still enough to get me to dive down a rabbit-hole.

I've used git and GitHub for years without any thought. It's just what you use. I picked it up in school, learned some good workflows, but I've never really considered what git is actually giving me. I've never looked into alternatives (I've heard of jujutsu, I didn't find it compelling enough to switch). What does git do for someone who is mostly a solo developer building in silence? Do other tools actually exist. I understand that git is not GitHub... but why stop at GitHub if I'm re-thinking my development practice around backups and private repositories.

In the reaction to these articles I've seen people recommend switching to GitLab, Tangled, or self-hosting something like Gitea. These give you things like issue trackers, social communities, pull requests, and a bunch of nice features on top of git. But I'm not really using them. All I really want is a todo list, commit history, issue tracker if I ever make something public, and some other statistics about my projects.

When reading through more and more comments (a completely healthy habit...) I read few comments about a tool called fossil. A single binary using sqlite to track commit history, project management, and easy self-hosting. SQLite itself actually uses fossil.

I am going to give fossil an honest try. I like to explore and I've been looking for a project. The rest of this post will mostly be the steps I took to set it up and eventually some thoughts on what I like or dislike about it.

Installing Fossil

You can grab the latest source / binaries from https://fossil-scm.org/home/uv/download.html. Once downloaded and either built, you should add the fossil binary to your path.

First project

It's recommended to keep your fossil databases separate from your actual project locations. I decided to put my first database at ~/fossil/hello-world.fossil and keep my project at ~/projects/hello-world/. To do this I ran the following:

mkdir ~/fossil/
cd ~/fossil/
fossil init hello-world.fossil
mkdir -p ~/projects/hello-world
cd ~/projects/hello-world
fossil open ~/fossil/hello-world.fossil

You should now have a blank fossil project! Let's create a file and save it as hello.txt

Now we can add this file to our project.

fossil add hello.txt
fossil commit -m "hello"

This file is now permanently added. Every time we commit any changes to this file will automatically be recorded. We don't need to do a fossil add every time like git.

I think from this point I will have to revisit this post in the future to truly give it a fair chance. You can see if my fossil server is still running at fossil.nomatoko.com