I was scared of open source thinking all projects are super complex and required advanced programming skilled or languages I didn't know. Yes, don't get me wrong, there are open source projects that do require skilled programmers but there are projects that are beginner friendly too. You can go to GitHub website/app and search for projects that have
good first issue/ beginner friendly issue. Also you can filter them with the languages that you know, Html, CSS, JS etc.. Good tip, if you are completely new to open source, get 3-5 friends that you code with and create a project that you can contribute. There is no need to make it super complex, you can get free web design templates on dribble or Figma, customize them to your liking and start coding it. Create a slack group or discord channel for your team to communicate and boom, you made the first step. If you want to participate in hacktoberfest 2021 you can follow the rules created from their official site. Frankly, that's what I did when I started out and It was amazing and being part of the outreachy contribution phase helped to get experience on how to contribute in big projects.
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.
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.
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.
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:
- Basic git commands by Atlassian documentation
- Git handbook
- Start using git command lines
- Resources to learning Git
Learning Github resources
Search for GitHub projects that are open source and have issues that are been labeled good-first issues, beginners-friendly.
- Great for new contributors
- First time only
- First Contributions
- Up for Grads
- Good First Issues
- Triage Open Source Issues
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.
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.
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.
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.
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.
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.
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.
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/PR-template that's the name of our branch. The branch will be similar to the main/master branch which is the default branch.
- To make the template visible in the root of the repository name it
- To keep it in a hidden folder/ directory you can name it
Go ahead and commit your changes and boom you have created your first pull request. The maintainer of the project will review the pull request and give you feedback when needed. PS: Remember to be respectful when you communicate, if the maintainers give feedback to do some changes, do it. Don't spread hate in the comment section.
As a beginner you can contribute and participate in the hacktoberfest. It will be amazing if you gather your fellow friends who are beginners and create an open source project to contribute. Use the resources you have a create issues for others to participate in. Even adding an issue to create the about page or make a page responsive to various devices is still valid. If this is the first time as a maintainer and you want to opt in to hactoberfest and follow the FAQ section and the rules.
For more info check out the code newbie post about hacktoberfest and how to get started.