Open source software (OSS) is software that is distributed with its source code, making it available for use, modification, and distribution with its original rights.
Generally, open source refers to a computer program in which the source code is available to the general public for use or modification from its original design. Code is released under the terms of a software license. Depending on the license terms, others may then download, modify, and publish their version (fork) back to the community.
An initiative of Open Source?
The Open Source Initiative (OSI) was created to promote and protect open-source software and communities. In short, the OSI acts as a central informational and governing repository of open-source software. It provides rules and guidelines for how to use and interact with OSS, as well as providing code licensing information, support, definitions, and general community collaboration to help make the use and treatment of open source understandable and ethical.
Mindset & Benefits of OSS
Contributing to open source can be intimidating and confusing depending on the project you’re working on. I commonly hear people say that they'd love to contribute but can't because of three reasons:
"I'm not a very good programmer."
"I don't have much time to put into it."
"I don't know what project to work on.”
There are three core principles to remember as you look for opportunities to contribute:
Projects need contributions from everyone of all skills and levels of expertise.
The smallest of contributions is still more than none.
The best project to start working on is one that you use already.
There are many benefits of contributing to open-source projects. Assess your career and development goals and you might be able to accomplish them by contributing to open-source software. Here's a brief and non-exhaustive list of some of the benefits of getting involved with open source:
Familiarize yourself with Git
Gain experience
Get attention from employers and recruiters
Connect with other developers in the community
What is open source?
Open source refers to source code that is made available to the public to view, use, modify, and distribute under a license. It’s usually developed and maintained collaboratively by a community of its users. Some well-known open-source projects include Vlc media player, MongoDB, Vue, Go, Ruby, TypeScript, Git and much more.
Although the main point of open-source projects is to create valuable and accessible open-source software, individual contributors can get plenty of personal benefits from contributing to them. You help maintain the software you use while honing your technical skills. When you’re applying for jobs, you can point to your work on open-source software as proof of your skills.
By collaborating with others on the open-source you use, you get to become part of a community where you can practice your soft skills like communication, giving and receiving feedback, emotional intelligence, etc. These communities also introduce you to tons of people you can network with, who in turn will open you up to worthwhile opportunities.
How to contribute?
There are a lot of ways you can participate in open source. As a beginner, you could identify and fix bugs in a project. In projects, you can propose, help design, and work on new features. Angular for instance accepts proposals for large features and pull requests for smaller features. Larger features will require greater community involvement, and some communities require you to earn a reputation for fixing bugs before moving to feature development.
Don't wait just start 🤩
How to find projects?
One way to find projects to work on is to look at open-source software you use often and like. Is there a tool, package, framework, or language that you work with regularly and enjoy using? Find out whether it’s an open-source project by checking its license and if it accepts contributions and is active. Working on things you already use gives you an edge when contributing because you’re already pretty familiar with how it works and have experience using it. As a bonus, you can address problems that have been bothering you or suggest features that you want in the software. If you are going to contribute code to the project, be sure you can work in the language it’s written in.
If the above approach may not work for you, try using the GitHub explore page to find projects that are accepting contributions or actively want help. GitHub suggests projects you may like based on people and repositories you follow, star, and watch. Another way to find projects is to use Github’s search tool by entering beginner-friendly contribution tags like good-first-issue, good-first-bug, beginner-friendly, easy, low-hanging fruit, first-timers-only, etc. Filter search results to return issues in open states and in the languages you’d like to work in.
Understand picked Project
Not all open-source projects operate in the same way. Some allow contributions from anyone. Some require you to work your way up to get contribution privileges. Some have multiple people involved in managing a project. Others have a single person in charge, a so-called benevolent dictator for life.
Contribution guidelines help you understand how to approach your participation in a project. It will explain how to reach out about a contribution, provide templates for communicating bugs and suggesting features, list work that is needed by maintainers, project goals, etc.
In addition to contribution guidelines, some projects will have a code of conduct. It usually outlines community rules and behavior expectations. It’s meant to help you know how to be an amiable and professional contributor and community member. for instance, has an awesome code of conduct that lists what they consider unprofessional conduct, their responsibilities to the community, and how to get in contact in case someone violates it.
Big projects may have governance policy and team documents that outline specific roles in the community, teams, sub-committees, contribution workflows, how discussions are conducted, and who gets to commit. These kinds of documents are essential to understanding how the community operates.
Having a good grasp of the technical aspects of the project and how it’s organized is essential to making contributions that meet the project’s standards. To understand the technical parts of the project, consult the project README, wikis, tutorials, and documentation. Angular, for example, has docs explaining their Github process, building and testing, coding standards, debugging, PR reviews, etc. Going a step further, look at past feature integrations and bug fixes in merged pull requests which are full of discussions by other contributors and can be a rich source of context. As the project evolves, pay attention to it, and frequently follow issues, features, discussions, pull requests, and bug fixes to continually learn how it works.
Making contribution
Projects may list the work that needs to be done in task, bug, and issue trackers. As a rule of thumb, start with the easiest and smallest contributions first that take the least amount of work to build up your confidence and credibility before trying harder contributions. Writing documentation and fixing typos is a good place to begin. Look for issues that are tagged for beginners with the tags mentioned earlier.
After you pick a task you think you can finish, do your research. Read documentation, code, and discussions related to the task to get a better understanding of what to do. If you’re stuck on something even after you’ve researched it, reach out to the community and ask for help, clarification, or mentorship. However, make sure that you discuss issues related to the task publicly so that the rest of the community can benefit from what you learn. For example, discuss an issue publicly on Github versus in a private direct message on Slack. Once you feel like you have enough context on a task and know how to go about it, write some code and submit a PR. GitHub has a great checklist about what to check for before you contribute to a project so your effort is not wasted.
How do I contribute to the Layer5 community?
One day I suffer on Twitter and saw a post by Arunima chaudhari sharing about the layer5 community that was the first time I get known. I reach out to her and ask about the community. She explain all about layer 5 then she sent me an invitation to slack. Every Wednesday they conduct newcomer meetings in that community having familiar with community members and managers. Getting a warm welcome from Anita she explain all about the projects and program now I am truly interested in this amazing community getting involved and learning about the work & code base of layer5. I read contribution guidelines and set up the local environment.
Now time for making some contributions first I raise some issues then start by changing the documentation that was my first contribution to the repository then move forward to the Ui/UX side of that repository.
Looking forward to contributing to more Open Source projects.
Conclusion
Open source can seem intimidating. But once you dive into it, you'll see how rewarding it can be and you'll quickly reap the benefits. Here's a quick summary of the steps you need to take when you contribute to open source:
Thoroughly read through the
README.md
andCONTRIBUTING.md
Fork the project repository
Clone the project locally
Create a feature branch for your work
Once you finish make changes, commit and push your work
Open a PR
Once you've done this, you'll officially become an open source contributor! If you'd like to prepare yourself more before getting started.