I hope 🙏 every person already has the understanding why you should help open source project. If not here the few reasons that will force you in my opinion:
- Experience in development collaboration
- Skills level-up
- Good GitHub profile
- Ability to give back for things you’re using on daily basis
- Solve personal needs with bugfix, new feature
Yes, contributions will make you a better professional as you could improve professional and even soft skills. It might be the ability to work the best people in our field and understanding internal principles of software. For me, it gives an excellent chance to try something that couldn’t you can’t use on work projects. In summary, it will increase your value in the market (to honest all we love programming, but we want to convert code into money 😎).
What to choose?
The first time the hardest is the choice when you have no idea how to start. My advice is to start with the project you’re using for a long time every day at work, at home, for a side project. First of all, you already know the public API, best practices and code standards (I believe in 🦄). Even better if you found some defect (bug, unexpected behavior, etc.).
Or maybe you got a great idea that will fit full auditory range? In this case, you should ask maintainer for such feature implementation because some modules have a flexible architecture with many extension points. So it might be a topic to create own plugin or extension for it.
The other way (let call it soft) are contributions to documentation, translations, unit testing, such kind of stuff. And don’t think that it some secondary things to do, believe me, they have considerable value for every product. Even if code inside is the genius 🤓 and does magic ✨, nobody will use it if you have no idea how.
And the last, but not least way is to find issues that need your help on special resources/events for that. As a good example, code sprint sessions as standalone or as a part of a conference. Also, you can use resources to find starter issues for your first PR, here are few of such:
How to proceed?
If you’ve found a bug or want to implement a new feature, the first check for closed and open issues, stack overflow pages with some solution or “won’t fix” explanation, and if nothing found you should create the issue for the project by yourself. Try to structurally explain the problem and give all needed details that might be required (library version, your environment details, like OS, browser, etc.) and of course be welcome and polite 🤗.
If the problem was confirmed, explain possible solution from your point (if you know some) and of course ask maintainer, other contributors about it. When the question “What to do” has the answer, you should be familiar with the process used in the project. Many projects, especially big one, have own toolset and flow. Don’t be lazy to find it and read. Usually, it is CONTRIBUTING.md or similar file with instructions or section in README. If you saw nothing, don’t be scared to ask the maintainer about rules. Or here some primary flow:
- Fork the repo
- Clone locally
- Create separate branch for each issue/feature
- Make changes with specific small commits (particular commit message format might be required)
- Install/build all development dependencies and tools
- Run tests
- Create pull request
- Follow PR comments
- Repeat if needed
And always remember to clarify, ask, thank, developers are only humans and wouldn’t like to help aggressive people, don’t have enough time to do everything.
After full process complete you’ll get your first pull request merge. So welcome to the club, trying it once you’ll never stop, open source contribution is a drug-like. I believe that you’ll come back to your GitHub dealer.
It’ll be great to hear about your success or faced problems in the comments below!