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
- Bluetooth temperature logger
- Build a simple radio
- Setup an MQTT server and a few nodes
- Solar powered IOT hub for agro industry
That’s a week!
- Pradeepa