DEV Community

Cover image for Open Source Contribution for beginners πŸ”₯
Jane Tracy πŸ‘©πŸ½β€πŸ’»
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Posted on • Updated on

Open Source Contribution for beginners πŸ”₯

How I got started with open source

Let me be honest, when I first heard about open source contribution when I was learning CSS, I thought it was for experienced programmers. With me learning what is CSS specificity or the difference between label and input elements, I didn't want to contribute. As a code newbie, I thought I was not good enough or experienced enough to contribute to anything (feared that my code will be rejected). Thus, I didn't contribute at all until recently. I guess, I didn't believe in myself as much but if you are a code newbie, learn from my mistakes. Don't wait until you are 'good enough' to contribute to projects, just get started and you will learn along the way.
Most project maintainers or owners of open source projects are kind and are willing to link resources that are useful to solve the issues. If you see an issue that you want to fix but don't understand fully, comment below the issue and they will guide you.
Don't be afraid to ask for help from the maintainers or owners. You know way more than you think, just believe in yourself.
I will guide you to resources you can use as a code newbie who wants to contribute and learn in the process. I will not use complex terms to sound 'fancy', I will make it simple and clear. I got you !! πŸ’•

Believe in yourself gif

What is Open Source software and closed source software πŸ‘©β€πŸ’»

Open-source software is a software that contains source code (code in general like HTML,CSS, js, python, etc) which is publicly available or accessible for people to read, change, improve/enhance and share.
Closed source software is a software that has source code that only one person, a team, or an organization, that can change, edit or share with each other.

Why should a code newbie contribute to open source projects

If you are wondering why is it important for you to contribute even though you are a beginner, I will list a few reasons of what I have learned so far.

  • You get to learn more about programming.
    When you are on your coding journey, you only learn the specific language or basic syntax but it might difficult for you to see how it's applied in real-world projects. By raising an issue or contributing to solving one, you are able to apply what you learn in your coding courses. This makes you understand the concept better and on a deeper level. Some maintainers will write links to resources you can use to solve the issue.

  • Get code reviews from senior developers.
    By contributing to other people's project your code will be reviewed by someone more experienced than you. Through this process, they can be able to tell you what you need to improve in your code. Thus you can improve your skills and learn more about dry code(don't repeat yourself) etc.

  • Learn how to use Google properly.
    When you are stack when solving an issue, you can google and read through different resources to get solutions. Learning how to use resources like stack overflow, developer mozilla, and language documentation to solve the problem. Googling is an important skill to learn early in your journey since we can't remember everything about a language. Unless you have a super memory or you are a genius(I wish I was 😁).

  • Experience in collaboration.
    An open-source contribution is a great place where you can collaborate with other developers by improving their code or correcting them. When you go through other developer's code you learn how to write code in different methods. Like how to use arrow functions, declaration, or expression functions. Most importantly, through the comments, you can chat with other developers if need help or more clarification on the issue you want to solve.

  • Rewarding.
    The feeling you get when your pull request is merged and your code is used in the main project are amazing. I remember when I contributed to my first open-source project, I was so happy. Finally, people will see the resources I have included and even use it. Just remember no contribution is too small to be celebrated. As a beginner, each contribution is an achievement and is worth celebrating. Plus you get the motivation to contribute more as you are learning.

How to get started

Open source contribution requires you to know basic git commands and also knowing how to navigate your way on Github. You can check out my post about Git and Github for beginners, to get the basics.

Resources to learn git include:

Learning Github resources

How to contribute

1) Find projects to contribute

Search for GitHub projects that are open source and have issues that are been labeled good-first issues, beginners-friendly.

Websites that show you beginner-friendly open source projects
Creating a pull request

It is always good to show a real example for you to see how easy it is to create a pull request. I will go on GitHub and find an open-source project with a good first issue that I can do.

1) Read the readme file and contribution file

The readme file is where the creators put details about the projects and some additional rules of contribution. It's always good to understand what the project is about and the technologies used. The contribution file (CONTRIBUTING.md) contains rules or guidelines to follow in order to create a successful pull request(a request created to the original project with the changes you have made.) You can also go through the code of conduct file that shows you how to respectful as you are contributing. After understanding the rules, go and check out the rest of the folders/files to be familiar with the project.

2) Find a good first issue

The issue tab on Github repositories is where you can search for labels written bugs, good-first-issue, beginner-friendly, or feature enhancements that you can work on.

issue-page

3) Read the issue carefully

Read the issue and understand what is required of you. If you find that you don't understand it fully, ask for help from the maintainers or owner in the comment section. Just click on the issue and you will see it in detail and what you are expected to do. Write a message in the comment section, click the comment button and your message will be displayed.

issue-comment

4) Do your research

When I come across an issue that I don't understand or it's something new to me, I use my best friend Google(that includes stack overflow). With that, you can get different websites that explain the problem you are trying to solve. If you want something more visual, Youtube will be your wise uncle. There are amazing youtube channels with great content that will help you.
For example, the issue that I tackled was creating an issue template. I have never done that before, I did my research and got my solution.

4) Fork the project in your Github account

I always try to find a solution before forking the project because I want to do something that I can actually solve. Plus It's always good to comment that you are interested to tackle the issue in the comment section. The maintainers will assign the issue to you.
Forking is done by clicking the fork button on top of the page. This will create a copy of the repository in your own Github account.
forking image from github

If you want to see how to clone and to create a branch remotely on your computer check out my first post. I have created a detailed step to follow from using git to clone the project to create a pull request.

5) Creating a branch

For example I am going to show you, doesn't require me to clone the project to my computer. I will create a branch in the Github repository under the feature flag. Example feature/issue-template that's the name of our branch. The branch will be similar to the main/master branch which is the default branch.

create-a-branch

6) Let's create the issue template

I will show you how I solved the issue to give you an idea of how to solve others on your own.
Go to the setting tab, check the issue checkbox, and click on set up templates button in green.

part-1-2

7) Select the template you want.

In this case, the issue template will have a bug report and a feature template. Let's do a bug report first. Click on the bug report button and GitHub will generate the template for you.

part-3

8) Creating a bug report and feature request

Already GitHub has created the report you, just click on the preview and edit button.

part-4

View the report and edit it to your liking. You can also leave it as it is, it's all up to you.

part-5
After editing it, save it, and let's create a feature request template. Click the preview and edit button, edit it and save it.

8) Creating a pull request
  • Click on the proposed changes button in green.

proposed-changes

  • Write a commit message Write a commit message and additional information that is descriptive. The maintainers need to know which files you added and some additional info about what you created inside the files. Let's make the life of the maintainers easier even if you are a beginner.😊

commit

Choose the branch you created don't select the main or master branch. Click the commit changes button in green to create the issue templates. Github will update your changes and you can now create a pull request.

pull-request

Congratulations you created your first pull request.

The owner or maintainers will now review your changes and see if they want to merge it into the project. Be proud you have learned something new, you are amazing. Start with these small contributions as you prepare for Hacktoberfest 2020 which is next month.

Congratulations gif

Conclusion

This was long, woohoo!!! But I hope you learned something new. If you want a step by step guide to clone the open-source repository on your computer and get a basic git command guide, check out my post on Git and Github for beginners
PS: You can apply for the Outreachy internship remote program. The program is based on contributing to open source projects plus you will have amazing mentors to guide you along the way. All the best in your application.

If you find this post useful share it with your peers or beginners who want to start open-source contribution. You can also buy me coffee. πŸ™‚

Buy Me A Coffee

Top comments (27)

Collapse
 
gadgetsteve profile image
Steve (Gadget) Barnes

It is worth pointing out that you don't have to be able to code in order to contribute. There are many ways to contribute to Open Source projects and in most cases the developers will be happy to have the contributions. Some ways to contribute:

  1. Bug Reports - A well written bug report that includes the exact version and environment that you are using as well as how to reproduce the bug is a bonus for the developers (unless it duplicates an existing on so search first. Of course it is nice if you can also contribute a fix in the form of a pull request but if you have described how to reproduce the problem then you have defined a test case. Just be polite!
  2. Documentation Improvements or examples of usage - saves the developers a lot of time.
  3. Translation Assistance - If you read & write more than one language then you can be a big help in producing translated documents &/or user interfaces.
  4. Beta testing - You wouldn't think it but developers love people who will take a pre-release of their code and then try to break it. It is always better if a beta tester breaks it than 100s of users do!
  5. Feature suggestions - ideally backed up by some effort on your part or of course if you are willing & able to fund the development....
  6. Money is *usually * appreciated as long as there are not strings attached even if it is at the cup of coffee level.
  7. Reviews and Social Media - most Open Source developers want their code to be used.
  8. A simple "Thank-you - I think your stuff is great!" in the newsgroups, at a conference, etc., is a meaningful contribution.
Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Even Use Experience and design can be part of the contribution. Great input Steve. Thank you :)

Collapse
 
afairlie profile image
Ariane

This article is so helpful. I'm looking to make my first open source contribution and you have made this goal feel totally within reach. I'm also REALLY excited to learn about Outreachy - so cool! Thank you so much!

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

That's amazing Ariene, glad you loved the post. I hope you apply for the program. All the best :)

Collapse
 
titanhero profile image
Lex

πŸ‘πŸ˜πŸ‘βœŒοΈ

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Hahha, thanks :)

Collapse
 
rahuldkjain profile image
Rahul Jain

Tired of updating GitHub profile README with the latest features again & again?

If yes, then I have developed a tool to do the same for you in just 1 click πŸ€“

πŸš€ Try the tool: live tool

If you find the tool useful, show some love by giving a ⭐ on ⭐️ repo

GitHub logo rahuldkjain / github-profile-readme-generator

πŸš€ Generate github profile README easily with latest add-ons like visitors count, github stats, etc using minimal UI.

GitHub Profile Readme Generator

GitHub Profile README Generator

github-profile-readme-generator licence github-profile-readme-generator forks github-profile-readme-generator stars github-profile-readme-generator issues github-profile-readme-generator pull-requests join discord community of github profile readme generator

github-profile-readme-generator gif

View Demo Β· Report Bug Β· Request Feature

Loved the tool? Please consider donating πŸ’Έ to help it improve!

sponsor github profile readme generator Buy Coffee for rahuldkjain Buy Me A Coffee

Tired of editing GitHub Profile README with new features? This tool provides an easy way to create a GitHub profile readme with the latest add-ons such as visitors count, github stats, etc. πŸš€ Demo

Try the tool: GitHub Profile README Generator

🧐 Features

Just fill in the details such as Name, Tagline, Dev Platforms Username, Current Work, Portfolio, Blog, etc. with a minimal UI.

  • Uniform Dev Icons

  • Uniform Social Icons

  • Visitors Counter Badge

  • GitHub Profile Stats Card

  • GitHub Top Skills

  • Dynamic Dev(.)to Blogs (GitHub Action)

  • Dynamic Medium Blogs (GitHub Action)

  • Dynamic Personal Blogs from RSS Feed (GitHub Action)

  • Wakatime Stats contribute

  • YouTube Stats contribute

Click on Generate README to get your README in markdown You can preview the…

Contributors are most welcome.

Join Discord Server for more: discord.gg/HHMs7Eg

Collapse
 
pablohs1986 profile image
Pablo Herrero

Amazing post πŸ‘πŸ‘πŸ‘πŸ‘ thanks!!!

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Hope it helps in any way. πŸ’―πŸŒŸ

Collapse
 
banji220 profile image
Banji

Just WoW :)
Keep it up Jane
Need more posts like this in the community ;)

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Thank you Banji. I will keep on writing. πŸŒŸπŸ™‚

Collapse
 
ejallow12 profile image
Ebrima

Another great post.

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Thank you Ebrima :)

Collapse
 
brijeshyadav profile image
Brijesh yadav

thanks for writing somthing very helpfull

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

I appreciate it, Brijesh. πŸ™Œ
Thank you

Collapse
 
brianokanga_5 profile image
Brian Okanga

Good readπŸ‘Œ

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Thank you, Brian :)

Collapse
 
95mazedul profile image
Mazedul Haque

Thanks for sharing

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Thank you for reading :)

Collapse
 
umavictor6 profile image
uma victor

Wow...nice post Tracy.πŸ‘Œ

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Thank you Victor. πŸ’―πŸŒŸ

Collapse
 
ryan_perry_aa806d7a49198e profile image
Ryan Perry

Amazing post!!! I recently discovered dev.to and I created an open source project where we're looking for some contributors: github.com/pyroscope-io/pyroscope

Collapse
 
ragini24creator profile image
Ragini kishor

Amazing post , thanks !!!

Collapse
 
laragiuliana profile image
Lara Giuliana

It was so helpful to me. Thanks Jane πŸ‘ΎπŸ₯°

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

Glad it was helpful, Lara πŸ™ŒπŸ’•

Collapse
 
rahowlll profile image
RΜΆaΜΆhΜΆuΜΆlΜΆ π“…“

woahhh very helpful mate !!! thanks

Collapse
 
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’»

I am glad it will be useful. Share it also to someone else who will find it helpful. πŸŒŸπŸ™‚