User not logged in
User not logged in
Luke Southern 4kcgeb7kt4k Unsplash
Luke Southern 4kcgeb7kt4k Unsplash

Care for some open source with your career?

Added on

Contributing to an open source project

Open source software powers much of the tech world we rely on. From operating systems to developer tools, it’s built by communities of people. You can be part of it. Why would you want to?

Why contribute?

Contributing is a great way to:

  • Learn new skills: Work alongside experienced developers and see real-world projects.
  • Build your portfolio: Demonstrate your abilities with tangible contributions.
  • Become part of a community: Connect with people and build relationships.
  • Make a difference: Improve projects you use and love.

Humanising the process

  • Every issue, pull request, and comment is written by a real person. Treat every interaction with kindness and respect. Think of it as a conversation and be open to suggestions.
  • Be kind: This is crucial. Avoid negative criticism, and give constructive feedback, if invited to, with empathy.
  • Avoid ad hominem: Focus on the code, not the person. On the flip side, build on suggestions rather than take them to heart.
  • Don’t expect your contribution to be accepted: Open source isn’t about deadlines. It’s about learning. Rejection or silence can be frustrating but is a learning opportunity.

It can feel a little odd and isolated interacting with people you’ve never met, especially when you haven’t had the chance to build a real connection, the kind where you’ve shared a laugh, a drink, or just spent time at work / uni together. They’re probably feeling the same way.

My advice? Relax. Remember this isn’t work; there are no deadlines or high-stakes pressure. I catch myself feeling the same stresses you get at work. This is a natural side effect of being human. Try to recognise those feelings and use them to fuel your enthusiasm, not your anxiety.

Making Your First Contribution

Start small. You don’t need to rewrite everything. Here are some starting points:

  • Documentation: Fix typos, clarify explanations, add examples. This is invaluable.
  • Bug reports: Report bugs clearly and concisely.
  • Small bug fixes: Look for “good first issue” or “beginner-friendly” tags.
  • Testing: Even without coding expertise, you can test different scenarios.
  • Simplifying: Make documentation easier? Refactor code for readability? Simplicity helps.

Some of my best experiences from making contributions have come from learning about how people work, how they document, learning new build / testing frameworks, not the contribution itself.

One of my proudest contributions was to the dapper dotnet project. I got to delve into the minds of some hyper intelligent developers and see how they build stuff. In my head my solution was the cleverest thing ever. It never got accepted or even acknowledged, but I didn’t mind (especially as the project I needed it for never saw the light of day!). It was still a great learning experience.   https://github.com/DapperLib/Dapper/pull/1756

Important Concepts

  • Breaking changes: Understand how your changes impact users. Be mindful of compatibility.
  • Testing: Thorough testing is crucial. Ensure your changes don’t introduce bugs.

The Journey

Contributing is a journey.

Don’t be discouraged by rejections. Focus on learning, connecting, and having fun. Every contribution, big or small, makes a difference.

Take the plunge, connect with others, and start contributing.

What next / future pondering

Blog idea: The role of frustration in design / creation.

Activities: If there is interest we could explore an open source contribution by doing one as a mentor pair / group activity.

Photo by Luke Southern on Unsplash