Contributing to open source projects as a new developer can be difficult for a number of reasons, including feeling under skilled for the currently open issues or feeling overwhelmed by the size of a project and I’m no stranger to either. If you want to contribute to a project and there doesn’t seem to be anything you feel comfortable with, there are still a number of things you can do to help a project whether it be with code contributions or even outside PRs!
If you feel like you’ve read that before, you’ve probably read my post on closing a two year old Cucumber Ruby issue. I repeat it here, too, as it’s applicable and instead of saying I’ll cover things in another post, I’m going to cover things here!
We All Start Somewhere
As a developer, you may get the bug to contribute to an open source software(OSS) project, pick one you want to help, get SUPER jazzed up to do something, and then when you look at the Github issues, you end up like our friend John here when looking for something that fits your skill level:
Don’t worry! I know the feeling! While I’ve now managed to get a couple hundred commits merged across the Cucumber ecosystem, I can also say:
There are more ways to help than just code! If you’re not ready to help with code that may come in time, don’t sweat it! Let’s go over some things you can do to help out that are just as valuable. (Some may also have the added benefit of helping get you ready to tackle some code changes in the future, too.)
Some of these points are taken directly from my personal history with the Cucumber team and its ecosystem, but really are applicable in other projects. :)
Join the Community!
If your project has a Slack environment, Gitter chat, IRC, Google group, or something else, join it!
Don’t stop there though: Have conversations, answer questions if you can, ask your own, and so on. You may feel overwhelmed by seeing folks you may call experts in there. Please know you don’t have to be an expert to help! You may happen to have knowledge about a particular part of a product that someone who’s lost is missing. Perhaps your asking a question could be a catalyst for someone much more experienced to make a new connection in their knowledge due to your fresh set of eyes. You may even find a mentor or perhaps a future coworker all because you’ve made yourself part of a community.
I had an experience or two (Sorry Cucumber community!!) where I was trying to help and actually prompted those much wiser than me (:cough: Aslak :cough:) to step in and set things right. I would advise you to try to be as certain as you can be before trying to help, but if things start to go sideways, there are those around who can help you get back on track helping others.
In time, with your increased knowledge, you could also end up looking like an expert in someone elses eyes!
Whatever you do, know that being an
active and supportive part of a community
helps make it a much more vibrant place, and we’re all made
better for it.
Ever Written Documentation?
No? That’s okay, too; I’m sure you’ve got experience using documentation that’s frustrating, confusing, or otherwise been challenging, right? Right. Here’s your chance to help make one corner of the internet a better place and do so in one of
the most valuable ways I can think of.
Seriously. Documentation is one of the most important things and can help make or break a project. Think about it. If you’re new to a project and want to know how to use it, where’s the standard place to look? The documentation. It’s a project’s ambassador and if it’s too sparse or difficult to use, users will get deterred and go somewhere else.
You don’t have to know a project inside and out to help with documentation, either:
- If you find something that’s missing, add it.
- If the tutorial you’re following is out dated and you can figure it out, (which is
reallycommon on the internet) update it so that others after you can benefit. (Side tangent: if you write tutorials, try to include data around the version it works with to help inform future users!)
- If there’s spelling errors, fix them.
- If you find confusing phrasing, rewrite it.
- Ask team members about aspects of the project that are non covered or are coming up and could us write ups.
All of these things may seem small and insignificant when you look at them in isolation, but together they can help make some pretty awesome documentation and help it stay that way!
How About Writing Of Another Type?
If documentation isn’t your thing or you’d prefer to help in another way, why not do what I’m doing here and elsewhere write about something? It could be a tutorial, it could be a recap of something you did/used at your job, or something else. You could chronicle your journey of learning a new tool for others to follow along with for instance. Learn a new trick that you think others could benefit from? You know what to do.
Write about it! Answer a question for someone? Chances are likely they’re not the only person who has or had will have that question, so share the knowledge you have.
The available topics are near limitless, you’ve just gotta decide what you want to do!
Roll Up Those Sleeves and Dive In!
If the time comes for you to take a crack at some code,
have fun! If you’re working on a branch or a fork and you get lost, mess things up, or somehow manage to delete your code directories, that’s okay! (I don’t recommend the last one. Just… trust me on this.) Projects being in version control systems mean that you have a safety net in case you suddenly realize you’re not in Kansas any more and need to get home.
What if you want to contribute code but you’re not sure where to start? Try one of these:
- Tried and true: Check the issue tracker for the project you’re working on and see if there’s anything that looks like you could do it. It’s common to see tags on issues like “good first issue” that mark issues the team thinks could be a good entry point into the project. That’s how I got into committing to the Cucumber Ruby project!
- Tests! There’s probably always some part of a project that could use more tests or perhaps fixing test builds for specific operating systems. Tests not only help get you familiar with a project, but in some cases can also have a lower barrier to entry.
Tests are great!
If you find that you’re stuck somewhere don’t be afraid to
ask for help and
ask questions! A lot of people would love to help others learn and contribute to a project but they can’t if they don’t know you need help. I actually asked to do some pair programming to get some more info around a code change I had volunteered to do and I got it! It was
What Will You Try?
If you’ve been wanting to help contribute to a project but have been stuck, try something above and let me know by leaving a comment below or reaching out via an alternate method what you did and how it went! If you’ve got some additional ideas about ways to contribute, let me know too!
Thanks for reading and help a community today!