4 Ways You Can Contribute to Open Source Projects as a Beginner

Learning how to contribute to open source projects as a beginner can be an intimidating task to undertake. As anyone who has delved into computer programming can attest, there is a lot you need to know before you can apply what you’ve learned to a project. Many people learn to code with the goal of making a career out of software development. However, software development is not a solo pursuit. A single person coding a program from the ground up, like an author writing the Great American Novel, is not the way things are done anymore. Software, both open source and proprietary, is built by a multitude of contributors, each with their own set of skills and specialties. It’s a collaborative effort. In fact, the early internet was built by a myriad of programmers working together, adding to source code, checking for bugs and glitches in the program, and keeping careful documentation.

Proprietary, or “closed source,” software is developed as a collaborative effort, its source code and development are protected by copyright and trademarks. A developer working on proprietary software must be an employee or contractor for the company in order to legally copy, inspect, or alter the software. Obviously, in order to be hired for such a position, you must have experience on your resume. You are then posed with the paradox of needing experience to get a job, but needing a job to gain experience.

One of the best ways to gain experience is to contribute to open source projects. In fact, employers often specifically seek out programmers who know how to work with open source software. This is for a variety of reasons, not limited to one’s coding skills. Open source communities are known to promote sharing and progress, and employers view contributors as more effective communicators and as having a greater intrinsic desire to learn, than those without experience in open source. In addition, open source contributors learn flexibility as a skill by being able to jump into a project that they do not know everything about and focus on just the task assigned to them. So, how do you contribute to open source software as a beginner?

There are many open source coding projects out there that are looking for contributors, even ones at a beginner level. A common misconception is that to contribute to open source software, you need to know how to code. In fact, you don’t even need to know how to code at all, depending on what the program maintainer is requesting help with. For example, a project might be looking for constructive criticism about the user-friendliness of their program’s interface, or might need a beta tester to track down glitches in the system, or they might need someone to aid in documentation. If you are interested in learning how to program software, here are four ways that you can contribute to open source projects, even if you are a total beginner.

1: Familiarize Yourself With Commonly Used Open Source Software Sites

Github is one of the most well known open source software sites and is a great place to get started because of their beginner-friendly tutorials. Make an account and then follow along with their “Introduction to GitHub” tutorial. This tutorial is an hour-long course that introduces new users to the interface, tools, vocabulary, and workflow of a typical GitHub project. The new user is walked through creating new branches, completing their first commit, and opening/merging pull requests, without the pressure of doing these tasks on a real project. The new user also creates a short Markdown file which they can use as the README on their profile. After you have completed the introduction tutorial, you may want to peruse GitHub’s skills page for more tutorials or read through their Getting Started documents. If you’re feeling confident, you can go directly to the First Contributions page and pick your first project.

GitHub is not the only open source development website with beginner friendly projects. Up For Grabs, CodeTriage, and Codetribute are all great places to start as well. Up For Grabs has a great tagging system for finding projects at your skill level. CodeTriage’s entire model revolves around the adage, “How do you eat an elephant? One bite at a time.” The site outsources small issues on a project by sending them directly to contributors’ inboxes. When you sign up for CodeTriage you decide what kinds of issues you want to contribute to and when an issue comes up, you get a message with the project information. However, just keep in mind with CodeTriage that you may find yourself in the deep-end rather quickly as the founder admits. The goal of CodeTribute is to guide new contributors to their first project by finding something that interests them, is at the appropriate skill level, and that does not already have someone else assigned to the task.

2: Pick Your First Open Source Project

First, you need to figure out what you can contribute with your current skill level. If you know how to code, you can find projects that are looking for a coder or debugger, and you can filter projects by the coding language you are familiar with. If you don’t know how to code, there are projects that may need someone to look for read issues. Simply reading the source code for typos can be extremely helpful (and you can become familiar with that coding language at the same time). You can filter available projects by what kind of contributions are needed by the project manager.

You should also pick something you are interested in. While you may ultimately aim to make a career out of programming, you should begin with topics you have an intrinsic interest in learning about. You will want to branch out eventually, but early on, you don’t want to burn yourself out on projects in which you have little to no interest.

3: Get Started On Your First Contribution

Begin by reviewing the task that the project manager is requesting help for. Then, review the relevant documentation and any README files. While you won’t need to know every last detail of how the project functions, you want to make sure you understand the need-to-know information. Google is your friend if you have questions. The open source community has a reputation for great collaborative efforts; but, it also has a reputation for not being the kindest environment for total beginners. Learning to contribute to open source is a daunting task on its own, and you don’t want to be discouraged by a brusk response to an innocent question. 

Most people in the open source community are by and large welcoming to beginners, and would respond kindly to basic questions, but it is still in your best interest to display a certain level of competence and self sufficiency. You will need to ask questions of the project maintainers and you should not be afraid to do so, but communicating your questions effectively is key. You need to be concise and to the point, but also communicate that you know the need-to-know information about the program and have tried to do your own research. Richard Schneeman, founder of CodeTriage, suggests that beginners pick a project that already has active contributors talking about the issue and lurk in the conversation. This way you can learn from others’ mistakes, and their successes, as well as get a feel for the different individuals working on the project. 

Remember, if you jump into an active project with lots of contributors, you are dealing with people from all around the world with a variety of personalities, expectations, skills, and expertise, plus the project maintainers who are managing all of these myriad personalities and their tasks. When suggesting a change, it is generally recommended to ask informed questions (i.e. “Do you think doing xyz would work better?” or “Did you mean abc instead of xyz?”) rather than make statements (i.e. “Doing this would work better” or “You need to change xyz to abc”). Once your suggestions have been accepted, you have officially contributed to an open source coding project.

4: Get Involved In The Open Source Community

A beginner in any field should get involved with their respective community, but this is especially important in open source software development. You should know of the big names, both locally and worldwide, as well as get to know people in your area (or in online communities, get to know the people who frequent the same circles as you). Find people you can rely on to ask the basic questions. You might seek out an experienced mentor who can guide you through the more challenging aspects of this field, or who can point out blindspots in your skills. Make friends you can commiserate with who already understand the nuances and struggles of your field. 

Networking is massively important if you want to make developing software into a career. As they say, the average person is only six degrees of separation from the person they need. The more people you know in the open source community, the more likely you are to find the “guy who knows the guy” who can help you with your specific problem or is looking to hire someone with your skill set. 

So how do you get connected? Training programs, both in-person and virtual, are a great way to meet people at a similar level to you. There are active open source communities on Reddit, which is a great place to keep up with news and trends, as well as get advice. You can even connect with other contributors on the actual projects you are working on. There will be conversation threads about the issues and while those conversations should stay on topic, you can get a feel for other contributors and try to connect with them outside of the project. Another great community resource is the CodeNewbie podcast which has hours of useful content, ranging from avoiding common beginner mistakes, interview prep, and even fundamentals of how AI development works.

Are you ready to take the plunge on your coding dream job? Apply for the Auburn University Office of Professional and Continuing Education (OPCE) Coding Bootcamp, which is designed to teach you the fundamentals and latest advances in this fast-changing, ever-growing field.