DEV Community 👩‍💻👨‍💻

Cover image for The Ultimate Beginner’s Guide to Open Source Contribution
Nasasira
Nasasira

Posted on

The Ultimate Beginner’s Guide to Open Source Contribution

Although there’s a wide range of open source projects out there waiting for your expertise, knowing where to find them and how to contribute in a way that is meaningful to the project can sometimes prove to be a barrier for beginner contributors. Therefore, this article guides you on what open source is, who is involved in managing an open source project, myths related to contributing to open source, terms you should know, ways of contributing, programs to participate in and recommended projects to contribute to.
The Ultimate Beginner’s Guide to Open Source Contribution
💡 Fun Fact: The world’s first open source software was the A-2 system, developed for the UNIVAC compiler in 1953.

What is Open Source Software

Open source software is software with source code that can be freely used, modified, and shared by anyone
Open source software plays a huge role in our life and quite often we do not realize that each one of us uses it even when not aware. For example, most phones run on Android Operating System, which is an open source project maintained by Google (Android Open Source Project). This means that if it wasn't for open source, there would be no device that goes from just working to actually making life easier.
Check out my former article to know more about all the basics of open source software and why you should contribute to open source.

Who is involved in managing an open source project

You might be wondering how random people from different backgrounds can add their contributions and have a product like Andriod running on your smart phone that you carry every day. Seems un coordinated right!
Well, almost every open source project has some structure which varies depending on the project, but these are some commonalities in who is involved when managing an open source project.

  • Leaders: These are people responsible for making the final decision about features, releases, and other activities. In some cases, this is a single person, while in other projects, there may be one or more committees responsible for various aspects of a project. For example, Apache Software Foundation project management committee (PMC) is a committee charged with responsibility and governance for their top level project.
  • Maintainers: These are people who are responsible for maintaining specific parts of the project, and in large projects, these maintainers may also delegate to people who are responsible for subcomponents of their portion.
  • Committers: These are people who have contributed to the project and are seen as trusted members of the community.
  • Contributors: These are people who contribute to open source projects. The contribution can be code or non-code contribution and it is reviewed by a committer or maintainer before being included.
  • Users: These are the most valuable people in an open source project since they are the ones that use the product and help it grow. They also provide feedback about features, bug reports and more. It is also important to note that to be a contributor or maintainer, you have to be a user of the product too.

Myths related to contributing to open source

As you start out your open source journey, you will hear various misconceptions about contributing to open source and I hope that after reading these you’ll give this amazing open source world a try.
“I must have it all figured out to start”

  • You don’t need to — you can figure it out along the way! “My contribution has to be huge to actually make a difference”
  • Smaller contributions also lead to significant value. “I need to have a lot of experience”
  • All experience levels matter in some way or the other. “It is extremely complicated to contribute”
  • Start small and ask for help — the community is there for you. “I need to have a technical background”
  • Non-technical contributions also exist.

Preparing To Contribute

Well, not so fast! Before diving deep into contributing, you will still want to be sure if the contribution is welcome. The contributor guide might vary depending on the open source project, but here are a couple of ways to prepare to contribute:

  • Check the license: open source licenses can tell you a lot about a project
  • Check README: a project’s README is much like a manual, and has a wealth of information you should get familiar with.
  • Check issues and pull requests: check for pending issues. It’s also a good idea to look for active discussions surrounding these issues.
  • Check the contributing docs: while the README provides a general manual, the contributing docs or guide will specify the contribution process, and which contributions are needed. For example, Apache APISIX has an amazing contributor guide.

Ways of contributing

You may now be wondering exactly what ways to contribute based on your background, but the good news is that the open source world is for everyone.

Contributors can be classified into two categories (code contributions or no-code contributions). While the way in which you contribute may vary by project, here’s some general ideas of contributions

Fix a Bug
Bugs are small errors in code that may be debilitating to software and produce unexpected results. Therefore, you can contribute your knowledge to solving a bug.
Propose a Feature
Open source projects benefit from a diversity of thought and your personal experience and opinion on how to improve a project can be invaluable.
Write Some Documentation
This is an example of a no code contribution that does not require a technical background. Contributions to documentation can revolve around providing editing help to an existing doc or authoring new pages within the documentation.
Writing
You can also use your skills to write or edit blogs, tutorials, guides (for developers, users, newcomers) and other relevant collaterals.
Designing
You contribute by adding missing elements, designing a brand style guide, icons, logos, improving the UI/UX of the website
Hosting events
You can host talk shows and invite engineers from the project to talk about the project or even talk or learn about the project yourselves. For example, to hold a contributor workshop with Apache APISIX, email keer@api7.ai
Translating
This is a no code contribution but very important. You can start by translating your favorite blogs to your own languages so that they can be accessible by anyone in your region and easier to read for them
Videos and Tutorials
You can contribute by making YouTube videos or tutorials, creating blog video walkthroughs which help with content creation and advocacy of the project

Terms you should know

GitHub: GitHub is a web-based version-control and collaboration platform for software developers.

Git: Git is free and open source software for distributed version control.

Public Repository: A public repository can be viewed by anyone, including people who aren’t GitHub users.

README: A text file containing information about the project in a repository — with instructions, help, or details about the patches or updates.

Documentation: A set of information that describes a product to its users, including what it is, how it operates, and how to use it.

Clone: A clone is a copy of a repository that lives on your computer instead of on a website’s server somewhere, or the act of making that copy.

Fork: A fork is a personal copy of another user’s repository that lives on your account — helping you freely make changes to a project without affecting the original upstream repository.

Issue: Issues are suggested improvements, tasks or questions related to the repository. They can be created by anyone (for public repos)

Label: A tag on an issue or pull request. Repositories come with a handful of default labels, but you can create custom labels.

Merge: Merging takes the changes from one branch (in the same repository or from a fork), and applies them to another.

Branch: A branch is a parallel version of a repository. It is contained within the repository, but doesn’t affect the primary or main branch, so that you can work freely without disrupting the “live” version.

Pull request: Pull requests are proposed changes to a repository submitted by a user and accepted or rejected by a repository’s collaborators.

Commit: A commit, or “revision”, is an individual change to a file (or set of files). They usually contain a message which is a brief description of what changes were made.

Read more: https://docs.github.com/en/get-started/quickstart/github-glossary

Programs to participate in

There are many open-source coding programs that you can participate in.

  • Google Summer of Code (GSoC) GSoC is a global program focused on encouraging more student developers to do open source software development. Students work with one of the selected open-source organizations for 3 months and get a handsome stipend on completing the project. Students need to propose changes that they want to work on to get selected.
  • MLH Fellowship The MLH Fellowship is an internship alternative for software engineers. Selected candidates contribute to Open Source projects that are used by companies around the world and are paid a competitive stipend during this tenure.
  • Outreachy Outreachy (previously the Free and Open Source Software Outreach Program for Women) is a program that organizes three-month paid internships with free and open-source software projects.
  • HacktoberFest HacktoberFest is a month-long celebration of open source software carried out in October. You can sign up anytime between October 1 and October 31.
  • Rails Girl Summer of Code Rails Girls Summer of Code is a global fellowship program aimed at bringing more diversity into Open Source. Successful applicants are paid a monthly stipend, from July-September, to work on Open Source projects of their choice.

Recommended projects to contribute to

Apache APISIX
Apache APISIX is an open source, dynamic, real-time, high-performance cloud native API gateway. APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.
Official website
https://apisix.apache.org/
GitHub projects
APISIX (the core): https://github.com/apache/apisix
GitHub - apache/apisix: The Cloud-Native API Gateway
GitHub - apache/apisix-dashboard: Dashboard for Apache APISIX
GitHub - apache/apisix-website: Apache APISIX Website
GitHub - apache/apisix-docker: the docker for Apache APISIX
GitHub - apache/apisix-go-plugin-runner: Go Plugin Runner for APISIX
GitHub - apache/apisix-java-plugin-runner: APISIX Plugin Runner in Java
GitHub - apache/apisix-python-plugin-runner: Apache APISIX Python plugin runner
GitHub - apache/apisix-helm-chart: Apache APISIX Helm Chart
GitHub - apache/apisix-ingress-controller: ingress controller for K8s

NebulaGraph
NebulaGraph is a popular open-source graph database that can handle large volumes of data with milliseconds of latency, scale up quickly, and have the ability to perform fast graph analytics.
Official website
https://www.nebula-graph.io/
GitHub projects
https://github.com/orgs/vesoft-inc/repositories
https://github.com/vesoft-inc/nebula

Apache SeaTunnel (Incubating)
SeaTunnel is a very easy-to-use ultra-high-performance distributed data integration platform that supports real-time synchronization of massive data. It can synchronize tens of billions of data stably and efficiently every day, and has been used in the production of nearly 100 companies.
Official website
https://seatunnel.apache.org/
GitHub projects
https://github.com/apache/incubator-seatunnel

Wrap Up

If you are a first-time contributor to a project, you might consider finding a mentor or an experienced project member who can review your work and provide you with some feedback as you prepare your first couple of contributions.
Personally, I would recommend these amazing mentors.

After you are ready to get started with open source, check out Apache APISIX to make your first contribution.

Top comments (1)

Collapse
 
michaeltharrington profile image
Michael Tharrington (he/him)

Excellent post, Nasasira. Thanks for sharing this awesome resource!

50 CLI Tools You Can't Live Without

The top 50 must-have CLI tools, including some scripts to help you automate the installation and updating of these tools on various systems/distros.