What is Fix?

Fix is a toy project. It is meant to become an issue tracker with a quirk: The issue database is stored alongside the code in your Git repository. That way, when you fix a bug in your local branch and close the issue, it remains open on every other branch - until the bugfix is merged, and the state change of the issue with it.

I’ve come across the idea a couple of years back in a version control system named Veracity that has since been discontinued. I know, that does not look promising regarding the feasibility of the project, but I’m fine with that.

Why is Fix?

Fix is meant primarily for me to practice things I have not done extensively in the past months and to learn new things I have not done at all. I also will take topics I encounter during development and blog about them. In addition, there’s a developer diary, as an experiment to document my thoughts and development process.

The topics I want to practice/learn include, but are definitely not restricted to:

  • Test Driven Development (TDD). Yes, I know. I should have this down by now, but there’s always something to learn in that area. Besides, in the projects I have been working on at work recently, TDD was not really much of a thing. I want to get into the habit of doing htis automatically again.
  • Behavior Driven Development (BDD). Think of it loosely as test driven, but on the feature and requirements level. (I’ll probably be called out for that). I’ll use the Behave framework, which means writing some Python which I want to practice, too. I have written about BDD and behave in the past.
  • Domain Driven Design (DDD). I know the basics in theory, but never actually used it in projects. I’ve used elements of it, but not properly with bounded contexts, hexagonal architecture and all the bells and whistles. I’ll probably commit mistakes especially in this area, so point them out to me, I’m eager to learn.
  • C++20. I haven’t been able to use more than C++14 in the last years at work, I’ve done some C++17 tinkering on the side, but C++20 is mostly new to me.
  • CMake. There’s always more to learn in that regard. I know the basics here, as well. With this project, I hopefully have a reason to dig deeper.
  • Frameworks and libraries I haven’t used before or not in a long time. Like Catch2 for unit tests, and who knows what I will use for other purposes.

Where is Fix?

The project itself can be found on GitHub, together with the dev diary. The dev diary will also be published on my blog. More detailed blog posts about the topics I encounter will be published exclusively on the blog, but I might link to them from the dev diary.

If you look at the link to the BDD post above, or into the project history at GitHub, you’ll see that I started this approximately 5 years ago. This is a complete restart, from scratch, and I hopefully stick longer to it than last time.

Who is Fix?

You mean, why the name? Back in the day when I was looking for a name I already knew it should be integrated into Git repositories. So it was “… in Git”. Or “…ing it”. Ah. “Fixing it” seemed good for an issue tracker, so it will be “Fix in Git” when it’s done and actually integrated - and Fix until then.