Open Source Projects: What They Are and How to Get Started
A beginner’s guide to contributing to open source projects.
Before attending a bootcamp and becoming a software engineer, I spent hours going through online coding courses, reading blogs, and watching videos to learn how to code. When I was just beginning my journey into the world of software development, I came across content time and time again that said to really learn how to code, you have to write code. Meaning: I could keep reading and watching videos, but ultimately I needed to start writing code to become a developer.
I also needed to start actually coding to know if I even liked to code and wanted to make a career out of it. That felt overwhelming. I didn’t know if I could make anything with what I thought was a small skillset. I also didn’t know what to make even if I could.
Looking back, I wish I had contributed to open source software projects as a beginner. One main aspect of these projects is that the source code is available to anyone, meaning even total beginners like I was can access it. When I work with open source projects now, I realize it is an opportunity for beginners to get exposure to code in less overwhelming ways.
And, while experimenting with open source projects will most likely expand your skillset, it’s not just good for you. Open source software plays an important role in the tech industry at large. For one thing, it provides the tech industry with transparency into up-and-coming work while also being a stepping stone for future innovations. And open source projects also bring together developers, designers, product managers, and more into a virtual and in-person community. This community is vital to keep building technology and also to help grow developers.
Navigating the open source software space can be daunting if you’re new to tech. In this article, we’ll cover the basics so you can feel ready to get started.
We’ll go over:
- What open source means
- Examples of well-known open source projects
- How open source projects work
- How you can contribute to open source projects
- What projects you can start contributing to with your growing skill set
What is open source?
Open source software means anyone can view the code and use the code to contribute to the original project or create something else entirely. A lot of open source projects are available on popular hosting sites like GitHub, GitLab, or SourceForge.
So how did it all start? Christine Peterson suggested the phrase “open source” at a strategy session held in 1998. The session was galvanized by Netscape’s earlier public release of the source code behind the web browser Mozilla. It was a session to acknowledge and further encourage the growing community around shared software. Shortly after, Eric Raymond and Bruce Perens founded the global non-profit Open Source Initiative (OSI).
Nowadays, the OSI works to protect the open source community, projects, and the definition of open source software itself. The OSI’s definition also includes certain distribution standards that you will need to uphold if you build with open source software.
What are some examples of open source projects?
There are many open source projects out there, and many of them are likely tools you have used before. These are some popular products that you may be surprised to know are open source.
- The aforementioned Mozilla Firefox web browser is free and open source! Here’s where you can see how you can contribute. They have labelled specific to-dos as “good-first-bug,” meaning they’re a great fit for developers that are maybe not ready to click their “I’m Feeling Adventurous” button to get a random issue.
- You may be familiar with jQuery, a JavaScript library that provides many front end capabilities such as animations. It’s also open source.
- And the popular version control system Git is, fittingly, an example of open source software!
How do open source projects work?
Before we jump into the possible contributions you can make to open source software projects, let’s talk about where the projects exist and how you can access the code.
There are different places on the web to host and maintain your code. You want your code hosted so it’s not solely living on your computer. Your computer could break down and you could lose your coding projects forever. Thankfully, the web has third party web applications like GitHub, Bitbucket, or GitLab, to name a few, to host your projects. Each project on the hosting platform is its own code repository, also informally called repo.
Open source projects have their code hosted on third party web applications as well. With a version control system, you can modify the code of these projects. One of the popular version control systems is Git.
Using Git, you can fork the code repository to your computer. Let’s say you were testing the open source product and noticed a bug. You’re amazing and you tracked down which file has the broken code that causes the bug. On GitHub, you can see the file and you can see the previous version of the file with the working code.
Image Source: GitHub docs. Click the Code button to start cloning a project.
You make the intended changes on your own branch and then push up your changes. After your changes are visible on the hosting platform, you can open a pull request to the main branch of the project. A pull request shows the changes you made to the code per file of the repo.
Source: GitHub
A maintainer, usually the authors and/or owners of the repository, will usually give you feedback on your changes. Once the pull request is approved, the changes will get merged into the main branch — which means you made your first contribution to an open source project!
Here’s a high-level view of the process of forking a project all the way to completing your first contribution to an open source project.
This first contributions repository walks you through the necessary steps of being an open source contributor with git. This includes forking, making a change, and pushing that change to the repository with git. These steps are important to understand how to contribute to software projects, open source or not.
📌 Pssst! If you’re interested in open source but want to get a foundation in technical skills first, consider Skillcrush’s Break Into Tech program — a personalized course of study for total beginners, with fast tracks for learning design or development and getting ready for the job market ASAP.
How to get involved in open source as a beginner
The source code for open source projects is available to anyone — from the developer just starting out to the developer with decades of experience. So you can contribute at any point in your development career and become a member of the open source community! Here are a few things to look out for as you search for an open source project to get involved with.
What to look for in a project:
1. An open source license
The code repository should have an associated license. For example, the MIT license is a popular one. This license determines if the project is open source or not. So it’s important to find the license before working with the project. The OSI provides more information and a list of more popular licenses here.
2. Easy to read and comprehensive documentation
Documentation includes things like project README files and contributing guidelines. README files provide information around the code repository like its purpose, the programming languages and libraries used to build it, and in the case of open source projects, how you can contribute. At times, how well written the documentation is will be a good indication of how easy it is to work with the project because documentation is key to understanding the details, technology, and functions of a code repository.
From the Guide to Allyship project on GitHub.
3. Recent activity
If there are recent responses to issues and pull requests from maintainers, then there’s more likelihood that your changes will be accepted or your issue will be addressed.
4. Associated hack night or an active slack channel
One of the common ways open source is described is as a community. If you’re looking for a community, see if there is a hack night you can attend or a slack channel you can join that supports project contributors. At a hack night, you can potentially work with someone else on project issues and features. For example, the Chicago Civic Hacknight has this list of open source projects. They also have coding breakout sessions where you can work on a project or pitch a new one. Look for civic hacknights in your city.
5. Tagged Issues and Features
On a hosting platform like GitHub, you can search for different open source projects. This list of projects are particularly welcoming of beginners. On a particular project, you can see requests for improvements or fixes posted as “Issues.” These issues usually have tags to help developers filter what they can and want to work on. For example, for beginners, pick a project that has issues with the `good first issue` or “good for beginners” tag to work on. You can also peruse the requested work by the languages you know like HTML.
From the Storybook repository
6. Piques your interest
Once you submit a pull request for a change to the repo, there may be back and forth between you and the maintainers with feedback about your code. Picking a project that interests you will hopefully motivate you to consistently respond in a timely manner and motivate you to become part of that project’s community.
Ideas for contributions:
If you would like to contribute to a code repository but don’t feel comfortable working on issues or features just yet, here are some other ideas on how to contribute.
1. Update documentation
At times, you’ll notice steps or information that are not included in the current documentation for the project. For example, maybe you had to run a command that was mentioned to you at a hack night with other community members but it wasn’t in the docs. You can update the documentation to help the next person working with this project.
2. Post an issue if you find one
Once you start interacting with the open source software, maybe you notice a bug or potential improvement to the user experience. You can help the maintainers by posting an issue to the issues list for the project even if you’re unsure how to fix it yourself. Provide as much information you can succinctly so the developer who picks up the issue knows how to recreate it and understand the problem.
3. Fix accessibility related issues
Make the web more accessible and sharpen your HTML skills by making accessibility updates to open source projects.
4. Make the code inclusive
Developers are opting for words like “primary,” “replica,” “allowed list,” and “blocked list” instead of “master,” “slave,” “blacklist,” “whitelist,” and “redlining” in codebases. This is an effort to make coding inclusive by removing words that reinforce racist hierarchies.
5. Use the product to build something else
Use jQuery, for example, for your portfolio. Get comfortable looking over API documentation and seeing how to work with an open source library to make your website more interactive.
How to be a good citizen of the open source community
When you create a pull request (PR), make sure you communicate your changes. If you’re making a front-end change, take screenshots to put in the pull request to show how your code works and how the change has updated the user interface. Regardless of being a front-end or back-end change, include a high-level description of your changes and the impact.
An example of a pull request in GitHub
Certain projects will have tests and documentation around writing tests. Along with ensuring that the current tests are passing, follow the testing guidelines and expectations of the project.
This guide from Github provides more information on making your first contribution. It also supplies you with more ways to contribute, even beyond coding.
Open source projects to contribute to, even if you’re new to tech
You are not alone if you are new to tech and are wondering where to get started. It can be overwhelming to start coding without knowing what to build or what all it takes to build a project. There are sites that provide information and more projects for beginners like the following: