I’ve used open source every day for years, starting with Linux, but I only started contributing seriously a few months ago. The first project was OpenTofu.
It started with a problem of my own. I use OpenTofu with Terragrunt Stacks, and the plan output for units with no changes was too noisy, so I opened an issue.
A while later I asked if I could fix it myself. The maintainers assigned it to me, reviewed my PR and merged it. It was a small fix, but it fixed my problem.
After that I tried something harder: a panic in the SSH communicator when an HTTP proxy fails the CONNECT handshake. That one got merged too.
A few things made it easy to keep going. The repository is well organized, and the issue labels tell you what’s ready to pick up. Asking to work on an issue is simple. The community Slack is open, and people there helped me find what to work on next.
I’m at four merged PRs now, and I’ve started on tofu-ls, the OpenTofu language server. My first PR there is in review.
I’m learning a lot from it. I’m writing more Go, and I’m getting to know a big codebase from the inside: how a change in one place affects others, and which patterns the maintainers prefer.
OpenTofu asks contributors not to use AI coding assistants, for copyright reasons, so I write all the code myself. I think that has helped me learn the codebase much better.
If you want to start contributing, pick a project you like and start with a problem you actually have. Read the contributing and development guidelines and follow them. Open an issue (or find one), ask to work on it, and wait for a maintainer to say yes before you start.
Thanks to the OpenTofu maintainers for being so welcoming.