tale, an Experimental Version Control System


This past semester we had to do a software engineering project in university. A friend and me decided to create an experimental version control system called tale.

We wanted to make a VCS to learn how one works and how hard or easy it easy to make one. We drew a lot of inspiration of Git considering the workflow but we deliberately didn't look at the source code or way Git manages its data structure until after the project was done.

We developed tale using Java because we both have a solid understanding of how it works. The problem with Java is, that the startup time for applications is pretty slow, which isn't ideal for a console application. That's why we used GraalVM Native Image to compile tale.

GraalVM Native Image compiles down the Java code ahead-of-time to a standalone executable, which includes all dependencies and a minimal JVM. This way one does not need to install a seperate VM to execute tale. This also greatly improves the startup time of tale.


In the end we managed to make a working application which supported the most important actions you expect from an VCS, except branching and merging. We got graded an A for this project, so it was a success!

If you want to try out tale you find instructions on the GitLab page. Big thanks to Marius Schär which was my partner during the project and did most of the heavy lifting in the code.

Feedback or Questions?

I don't have a direct way to leave comments on posts. But if you want to give some feedback or have some questions you can contact in other ways.

©2019–2021 Severin Kaderli