Wakapi: my first contribution to the open source

Wakapi: my first contribution to the open source

I have been using Wakatime since 2017, but I stopped using it in recent years because the free plan, which only provides a two-week range report, is not very helpful. I primarily relied on it for the yearly report to see how much I coded over the past year, just for fun.

I realized that I was freely providing my valuable coding statistics to them; as a free service, I became the product. I’ve been searching for alternatives and found Wakapi. Wakapi is an open-source project that sends data to your self-hosted server using the same plugins and protocols as Wakatime. It’s quite an ingenious solution. Additionally, since the Wakatime plugin is open-source, we can modify it to send data anywhere we want, and that's perfectly legal.

I set up my server and used it for a while, and I found it fascinating. I'm thinking of contributing to it. Noticed several small problems with this alternative, such as performance issues and a lack of features. So, I found a good first issue from the list to start with:

https://github.com/muety/wakapi/issues

I'm not familiar with the codebase yet, so working on an issue that requires me to walk through it would be a good starting point, rather than just updating the README. The code is written in Go, and Go developers tend to utilize the standard library as much as possible.

In line with the preferences of the repository owner, I think I can do some refactoring, and I found a suitable ticket for that. The issue isn't difficult, but it does involve a lot of changes. Specifically, it requires replacing the logbuch library with slog. Structured logging was introduced in Go version 1.21, making many structured logging libraries obsolete. Therefore, replacing third-party libraries like logbuch is an obvious choice.

I picked this issue: Migrate from logbuch to slog #480

Collaborating with the repository owner fascinates me as well. After a few back-and-forth PR updates, the pull request was merged. Yay 🎉🎉

Follow up by a few more discussion and additional pull request, the issue is resolve.

Contributing to this issue alone makes me the 9th/50 most significant contributor to the project, possibly due to the LOC changes 😜

Thanks to Ferdinand Mütsch, who is such a nice guy. I still use Wakapi every day and have found many improvements I can implement. I just need to find the time.

My take away to start contribute to OSS

  • Journey

    Let’s dive into your project. Identify the challenges you face and seek open-source solutions. Utilize these solutions and pinpoint areas for improvement. If you’re familiar with the tech stack, consider reviewing the issue list or submitting an issue ticket to start collaborating with others.

  • Expertise

    To begin contributing, you need a certain level of expertise. The open-source software (OSS) you develop will be used by many people, potentially thousands or more, running the code you write on their own infrastructure or computers. We don’t want to create issues for them with any new bugs.

  • Be Proactive

    The time frame for a pull request (PR) should be within a few weeks; otherwise, we risk losing context. While it's great that we are using our free time to create open-source software, maintaining a professional approach is what everyone expects in a collaborative environment. Be proactive and assist the maintainer when needed.

That's all for today. I hope you find inspiration to start your journey as an open source contributor. Here is my GitHub profile; let's connect for more interesting projects: https://github.com/finnng