Make sure you know about the following topics.
Git and GitHub
What is open source?
Open source projects are a type of project that is open and free for everyone so anyone can view, use and modify it.
Benefits of Open Source contribution
Gain real-world software development experience and skills.
Learn from other developers.
Network with worldwide developers.
It will increase the value of your career profile.
Give back to the community.
Guide to Contribute
1) Choose a project
Choose a field
Open Source is an ocean. Accept the truth, you can't contribute to every project out there. Choose any field. For example, Android, Web Dev, Cyber Security etc
Find a niche in your field
Now you have chosen a field but it may contain a lot of sub-fields further. Let's say
Android - It has Android custom ROM development which includes the device-specific, android framework, kernel and so on, and app development which includes app UI, and libraries like custom views, utility etc.
Custom ROMs like LineageOS,
App Development - Open-source apps and libraries.
Web Development - It has two parts - front end, back end and so on.
For example, react.js projects, node packages, and whatever.
Other fields - Every other field has open-source projects that you may be interested in and choose it.
Note: You can contribute to many projects at a time. For beginners, I recommend sticking with one good project to learn.
Consume open-source projects
I always say - "First, consume then contribute" In your niche, maybe there are handy tools, libraries, and so on. Go and try them. Maybe you are using some projects already without knowing it's open source. Make a list.
Pick a project
→ Obviously yes, Pick one which you like the most from your list.
Two types of projects:
1) Big project
2) Small project
→ Pick one big project you like, join the community, learn from the community, and contribute to the project.
→ It's always good to be in a community so you can find mentors, seek help and learn from them.
→ FAQ: Where can I find the community?
Check the project README or project website. You can find the community discord or slack link easily
→ So, Pick one big project and STICK to it.
→ Play the long-run game here.
Keep the above points aside. let's get into the small projects.
→ I didn't say don't contribute to small projects. You can start with small projects but ensure you are in a community-driven project for the long run.
Tips to pick:
Go for projects in which you have a real use case and consume it. You will know how it works clearly. (User-wise) As much as you consume, you will get ideas and will need more improvements/features in that project.
For example, you may be using an app daily, a Money Manager app. In that case, try to find an open-source alternative, consume and then contribute.
2) Involve and find areas of improvement in the project
→ Clone/Download the project.
→ Compile or run yourself.
→ You can find errors or warnings. Fix it and contribute to the project.
→ Read the docs. You can find typos and grammar mistakes in the docs. Correct them and contribute to the project.
→ Check the Pull Request of the project. Help the maintainers by:
- Test, verify the patch, and comment in the PR - CodeReview
→ Check the issues of the project.
- Try to help if you know the workaround or try to fix it on the project side.
→ Help in your language translation to the project. Check the README or Project website to know "How to".
Points to remember:
Don't go for random repo which you don't use but do just for the sake of the word "open source contributions"
Be specific in choosing the project
Join at least one community-driven project for the long run.
Stick to ONE in the beginning. START TODAY.
You will contribute as much as you consume the project. Simple
If you loved the project but don't get any ideas, No worries check the issues tab, try to fix them and contribute to the project.
3) Learn to track the code
Imagine, You have chosen a project which fulfills your needs. You have used it enough to know how to use it and how it works from the user mindset. You got some improvements in your mind or took issues from the issues tab.
Now get into tracking the code For example, You want to update a print line (Output) in a CLI tool. In this case, you can easily track the part of the code responsible for printing by doing a quick search for the string in the project.
If you want to track the code for a logical part, let's say a logic or a dynamic content part, you can't track it easily since you can't find the exact words in the output as in the code.
In this case, you have to find the static part associated with the dynamic part. Let's say the title, header, or logs part (Typically strings). Once you find this part in the source code, you can find the dynamic part or logical part in the code easily.
Sometimes tracking is a bit time-consuming and harder when the projects are big and consist of many packages/modules. In this case, one part of the code points to another and another package/module. You need PATIENCE here.
4) Learn to read the code
Now you tracked the code successfully, What's next?
You have to read that part of the code and understand how it works. Here you don't need to read and understand the whole project source code to contribute. That's COOL, right?
You have to understand the specific part which you are going to modify. If you are familiar with the project tech stack/language, you can read and understand it easily.
if you are not familiar with it, Don't worry I got you.
→ Since you tracked the code, take that part of the code and google it (Syntax wise). I am sure you can understand it if you have basic programming knowledge. Sometimes it takes time, Be PATIENT!
Note: Use documentation if the project has one.
5) Learn to change
You know what are you going to do and what that piece of code is doing there. Now, what's next?
Add your part there. if you are familiar with that project tech stack/language, you can convert your idea into code easily.
if you are not familiar with it, Don't worry I got you again
→ If you have basic programming knowledge, your mind can visualize how you can convert your idea into programming logic.
→ Google the syntax of the language in which you have to write the code
→ Sometimes you have to learn some basics about the framework/stack.
→ Sometimes you have to learn much more. Yeah, depends on your change. if you had come this far, you could have managed this. :-)
Using the above things - Write the code - Run - Verify
→ Commit the change and push it to your forked repo.
→ Make a Pull Request to the original project repo.
→ Wait for the maintainer.
Make sure you followed the contributing guidelines of the project if it has one.
It's good to get feedback about your idea from the maintainers before implementing it. So you will be aligned with the project goals and your contributions have more chances to get accepted.
For example, If you want to redesign or refactor some parts of the project, ask the maintainer, get the confirmation and then start the work.
Note: There are a lot of guides on 'How to use git?' out there. Please refer to them.
Open Source wouldn't have come this far without collaborations among great minds. If the project that you are contributing to, has a large user base, sure it will have a common online platform where the users and developers interact.
→ Engage with the community members.
→ Talk more about the project.
→ Get help. Give help
→ Make friends. Make friends
→ Learn from them
Points to remember in a community
→ Don't expect a spoon feed from the community members.
→ Avoid asking things that you can find by a simple google search.
→ No "Hello" and "Hi". Ask your question directly.
→ Prefer the common chat over DM. Seek help in public. So you will get help from more people and others will learn from your convo.
→ Learn to wait. People have their own life to live - value others' time.
→ Be kind to others.
Sound rude or not friendly? Trust me, follow the above points blindly. You will see the magic in your community. You will realize soon why it's important.
8) Final Note
→ This article is written for BEGINNERS to help them to kick-start the open-source journey.
→ Here I used changing a string as an example to make the beginners understand it clearly. You can do big stuff.
→ This article is more focused on contributing with code, but you can also contribute open-source in other ways like helping in translations.
→ OpenSource is for EVERYONE. Just start. Learn on the go.
ALL THE BEST.
OpenSource is <3
I hope it adds some value to you.
Thanks for reading.
Did you find this article valuable?
Support Dhina17 by becoming a sponsor. Any amount is appreciated!