I’ve always enjoyed using open-source software because it lets me learn from people that know more than me and I can easily change code to fit my projects.
But after all the benefits I’ve gained from these free tools, I felt it was time to give something back.
So I decided to find a project where I could contribute something myself.
The first project that came to my mind was Linux. I use it all the time and have always wanted to learn more about OS development. Plus, it has one of the largest open-source communities, making it a great place to learn and contribute.
I started reading Linux contribution guides and realized the process is a bit different from most projects. Patches are submitted by email, and emails need to be sent in plain text, because HTML formatting can mess up patches, making them unusable for maintainers.
Most people suggest using mutt, an email client that’s been around for nearly 30 years. But I chose a newer client called aerc, because it looked a bit more user-friendly.
After a few days of setup, I got everything working in aerc, including configuring notmuch for indexing and mbsync to download emails. Everything was running great, except for one thing. Every time I used autocomplete for aerc commands, they showed up as cryptic options like -p, -a, -H, -m, and -T. Figuring out what each option meant was a pain because it required me to constantly check the manual.
That’s when I thought, I’m looking for an open-source project to contribute to, so why not implement a feature that displays a short explanation for each command option? This would make aerc easier for me and other new users too.
I pulled down the aerc code and ran into a few issues since I’d never used Go before. But after some trial and error, I finally got something working locally and I could see explanation text for the command options!
I rebased my changes, made sure the commit messages were clear, and, just like with Linux, sent my patch through email.
A few hours later, I got an email from Robin, the maintainer, he thanked me and offered some helpful feedback. After refactoring with his suggestions, I sent a new patch. It was merged into the main branch a few days later 🥳! No more switching to the manual to understand command options.
This whole process was challenging but incredibly rewarding and fun. I learned a lot about Go, became more familiar with aerc, and experienced what it’s like to be part of an open-source community.
If you’ve ever thought about giving back to open source, I highly recommend it. You don’t need to be an expert to start, just curiosity and willingness to learn.
Find this post helpful? Subscribe and get notified when I post something new!