I recently finished my GitHub year, a year with contributions on Github on each day without any exception. It's now one week since that year ended and time to reflect on it.
What is it all about?
Before we dig into the article, let's talk about the challenge itself. The GitHub one-year-challenge was born out of the goal to get GitHub's contribution bar for the personal profile completely filled. What are contributions? Contributions are for instance commits on the main branches of projects or creating and commenting on issues.
My personal goals
I've seen some critique in the sense of: "Why would you bother yourself with doing GitHub contributions for every day over a year?" Well, while it's possible to do the GitHub one-year-challenge simply for filling the green bar, I strongly encourage everybody to see it more as a secondary motivator and control instrument to keep working on another goal.
My personal goals were to finally start working on my own LCARS themed window manager (lcarswm) and get it up and running, as well as learning more about Test-Driven-Development (TDD). As another side goal, I wanted to get over 1000 contributions for the challenge, with the basic thought that 3 commits per day as a mean are enough to achieve this side goal. I went for commits and no other forms of contributions due to the fact that I wanted to get as far as possible with lcarswm during the challenge time.
How did I get there?
Safe to say, I did not always commit meaningful code changes. While I actually commited whatever I could do in a day over 90% of the time, I sometimes delayed straight forward refactorings and changes to documentation to days where I knew I wouldn't have much time or I didn't have my computer at hand. Take Christmas for instance or days of trips with family or friends. Especially documentation changes can also be done relatively easy on a mobile using GitHubs online editor, where you have some kind of syntax highlighting but not the extensive IDE support.
It is also good to know what it means that GitHub counts the commits on the main project branch. What really counts is not when the commits make it to the main branch but rather when were the commits created. Sometimes, when I didn't have wifi readily available, I could commit locally anyway even over a few days and push the commits to GitHub as soon as I get wifi again.
Well, thank's to perseverence and the patience and support of my wife, I did it. Here's the green bar:
More than that, I have ...
- gotten the window manager to work (although it's not finished),
- understood what is required to create a minimal Xlib based window manager and how it works internally,
- learned about the Inter-Client Communication Conventions Manual (ICCCM) and the Extended Window Manager Hints (EWMH) and partially implemented their contents into lcarswm,
- learned to use Kotlin/native and more Kotlin features,
- learned to use Python with GTK3,
- gotten a better understanding of TDD,
- gotten a better understanding of how to modularize code and
- used and understood other things like signal handling, interprocess communication on Linux/POSIX systems, ...
To sum up, it has been an incredible experience of learning and moving forward. The GitHub one-year-challenge can help a lot to concentrate on project and learning goals over the time of a year and making it a habit to learn and work on projects.