Open Source
Over the past few months, I’ve been diving deep into the world of open source by contributing to Linutil, a project by Chris Titus Tech, as well as other projects. This experience has been a fantastic way to learn not just about the code itself, but also about the tools and workflows that make open source possible.
Why I Love Open Source
One of the things I love most about open source software is the transparency. I trust open source because I can actually see the code for myself. There’s something empowering about knowing exactly what a program is doing on my system. If I have questions or concerns, I can dig into the source and find answers. This openness is a big reason why I’m happy to contribute my time and effort to these projects. It feels good to give back to a community that values collaboration and transparency.
Learning Git and Pull Requests
Before this, my experience with Git was pretty basic—just enough to push and pull changes for my own projects. But contributing to linutil has taken my Git skills to the next level. I’ve learned how to:
- Fork repositories
- Create branches for new features or bug fixes
- Submit pull requests (PRs)
- Collaborate with other contributors through code reviews
It’s been a bit intimidating at times, but seeing my contributions merged into the main project is incredibly rewarding.
Using Git for My Own Projects
I’ve also started using Git more seriously for my own web projects. Whether I’m building a blog in Astro, Nuxt, Next.js, Hugo, or Svelte, version control has become an essential part of my workflow. It’s made it so much easier to experiment, track changes, and roll back when things go wrong (in my previous blog about my blog… I discussed that from now on, I’ll be using Astro just to keep things simple!).
Scripting and Linux Distros
Another big part of contributing to linutil has been learning how to write and use scripts. I’ve been exploring different Linux distributions, testing scripts across environments, and making sure everything works as expected. So far, I’ve tested on Debian, Ubuntu, Arch, Fedora, openSUSE, Solus, Void, Alpine, and NixOS. Testing is a huge part of the process—sometimes it feels like I spend more time testing than coding! But it’s worth it to make sure the tools are reliable for everyone.
My past blog post shared my thoughts and experiences with each of these distros.
Tools That Help: Cursor and Beyond
I use Cursor to help with some of the coding and navigation, but I’m also becoming more comfortable reading code directly. I’m starting to get a feel for what “good” code looks like, and I’m learning to spot things that don’t quite fit—even if I can’t always explain why at first.
One thing I’ve noticed is that “vibe coding”—just going with what feels right—can lead to mistakes. It’s easy to overlook edge cases or miss best practices if you’re not careful. I’m learning to slow down, review my work, and rely on testing and feedback from others.
Final Thoughts
Contributing to open source has been a challenging but incredibly rewarding experience. I’m grateful for the opportunity to learn from others, improve my skills, and give back to the community. If you’re thinking about getting involved in open source, I highly recommend it—just be ready to learn a lot along the way!