20. My first open source contribution

I always wanted to contribute to an open source project that I’m passionate about. The most natural option is to try and contribute to the Linux kernel. However, I never used Linux frequent enough to motivate myself to try and contribute to that project.

Recently, I started teaching product design to 3rd year University of Peradeniya students and I started designing PCBs using KiCAD. After designing a few PCBs, I was amazed at how good the tool is and decided to go through the source code and understand how it is implemented. It’s not easy to understand such a big tool. Therefore, I thought may be I’ll pick some simple open issues and fix try to fix them.

With that in mind, I looked at open issues tagged as ‘starter’ and started working on an issue related to changing the ‘dialog copper zone properties’ dialog. KiCAD uses a framework called wxWidgets to design the UI. Some of the seasoned developers pointed me towards a tool called wxFormBuilder and suggested changing the GUI through that tool.

Initially, I changed some simple changes to make sure that my build works and I can actually see the changes I make in the built binraries. That went smoothly. Thereafter, I dived into the fix and did a kind of a big change related to how the net filtering happens inside the dialog.

The main issue that I faced was the build time. It’s painfully slow. It took me almost 15 minutes to build the code base and that simply makes things very difficult to change. I asked in the mailing list for some pointers to improve the build time, but those pointers didn’t work either.

However, after developing the fix for almost a week, I managed to fix the issue and submit my fix to the main code base. I felt really happy about my contribution and decided to try and contribute when ever I can!

The link to my first ever commit is here

What am I reading?

 - C++ Programming Language (360 / 1279 = 28.8 %)
 - Clean Code (26%)
 - Clean Architecture (8%)

Any new learnings?

Started working with a PIC IC after a long time

Backlog

  1. Bluetooth temperature logger
  2. Build a simple radio
  3. Setup an MQTT server and a few nodes
  4. Solar powered IOT hub for agro industry

That’s a week!