Starting in open-source communities

Starting in open-source communities

Starting in open-source communities

1. The gender gap in open-source projects

If you’re part of the tech community, you’ve probably noticed that most people around you — whether at work, college, or online platforms — are men. And that’s not just an impression: women are a still a minority in tech. In a research study on open-source communities, Qiu et al., 2022 ↗ identified that 9.7% of GitHub users are women. This lack of representation makes it harder for women to find opportunities, secure referrals, and feel confident in contributing to open-source software (OSS).

Contributing to OSS is a great way to enhance skills, contribute to the software industry, and even secure a job at a company. In this discussion, we explain the initial steps that every women can follow to start contributing in OSS projects.

2. What is an OSS community?

Open-source software (OSS) is a software category where their source code of a software project is publicly accessible, allowing anyone to view, modify, and distribute the software. Open-source communities are the ones who support OSS projects. They are known for fostering collaboration and depending on external contributions to keep their projects active. Most communities regularly promote the onboarding of new developers, and tend to welcome new contributions at anytime. In general, anyone is welcome to join an open-source project, even without experience in software development.

Examples of popular open-source projects include the Python ↗ programming language, the Mozilla Firefox ↗ web browser, and the Linux operating system kernel. Contributing to open-source projects is a great way to improve software development skills while gaining valuable networking opportunities, engaging with other developers, and contributing to real-world problems.

3. The contribution flow of an OSS project

OSS projects are collaborative efforts driven by people, and each project has its own approach to software development. Standard practices are found in most projects. Steinmacher al., 2015 ↗ describes the contribution flow every newcomer in OSS should follow in five major steps:

1. Learn about the project and required skills: Before contributing to any OSS project, it’s essential to understand its goals and the skills needed. If you’re planning to make a code contribution, it’s important to know which programming languages the project uses and how they structure their code. If the project is hosted on platforms like GitHub, you can get a feel for the project by exploring its repository. Accessing the Visual Studio Code ↗ repository on GitHub, for example, will give you a brief understanding of what programming languages they use, their goals, and how they organize their community. Get familiar with the project before contributing!

2. Setup your local workspace: Before choosing how to contribute to a project, it is important to setup your computer for local development. OSS projects usually write documentation on their website or in specific files inside their repository to teach newcomers how to setup their local workspace. The flutter ↗ framework, for example, dedicates a whole section of their CONTRIBUTING.md file to guide developers on how to set up their project locally. Look for this sort of information in the project, and don’t hesitate to contact mantainers to ask for help when necessary. Most projects use mailing lists and online platforms for communication, use them.

3. Find a task: Once you have the software installed on your computer, it is time to choose your first task. Choosing a first task is not easy, so we reserved the section below to discuss this step in detail.

4. Make a change to the project: Based on the task you’ve selected, proceed with your contribution accordingly. For documentation tasks, you’ll be expected to update the project’s documentation. For code contributions, you’ll need to modify the source code. Be sure to follow the project’s contribution guidelines, which can usually be found in the repository or on the project’s website. Adhering to these guidelines ensures your contribution aligns with the project’s standards and expectations. The Node.js ↗ project, for example, uses it’s CONTRIBUTING.md file to describe the expect process of making changes to their repository.

5. Submit your contribution: Contributions to OSS projects are initially made in your local copy of the project, and then submitted back to the official repository. Once you’ve made your changes locally, it’s time to submit them to the project. If the project is hosted on platforms like GitHub, you’ll use Git, a version control system, to submit your contributions through a pull-request system. Learning the basics of Git ↗ and the pull request system ↗ is crucial for successfully contributing to any OSS project. This video ↗ can give you a brief understanding of how the submission via pull requests works on GitHub.

A great way to get started in an OSS project is by reading the project’s CONTRIBUTING.md file. This text-based file is typically found in the source code repository of the project, and outlines the types of contributions the community welcomes, providing guidelines for those willing to getting involved in the project. The Angular ↗ project, for example, has a CONTRIBUTING.md file available in the root folder of their repository. Some projects, on the other hand, may leave it inside subfolders (e.g., /.github), or use an external website for the same purpose. Always look for the onboarding information before working on your first contribution.

4. Choosing your first task

Most newcomers assume that OSS contributions only involve coding, but that’s not true. One may contribute to a project in many different ways, including:

A woman considers their options for joining an open source project.

You don’t have to come with a new contribution out of your mind. As in a software company, OSS projects have a list of tasks to be accomplished by their contributiors. For projects hosted on coding platforms like GitHub, the issue tracking system is a great place where new contributors can look for new tasks. Most projects tend to label tasks that are good for newcomers. The labels vary from project to project, but they are usually named with names such as “good first issue” ↗, “up-for-grabs” ↗, “beginner friendly” ↗ and “easy” ↗. Every issue has a dedicated space where newcomers can interact with the project maintainers, asking for guidance and clarification. Don’t feel intimidated by asking a question, communities tend to be more than interested in helping newcomers.

If you are still unsure about what project you want to contribute, there are great platforms where you can find projects willing to receive newcomers. The “up-for-grabs.net” ↗ website, for example, lists the labels used by different projects to categorize tasks designed for newcomers. These labels are manually registered by the maintainers of each project, which means that projects listed on the website are usually looking for newcomers. The “goodfirstissue.dev” ↗ and “goodfirstissues.com” ↗ websites and the “awesome-for-beginners” ↗ repository also list good tasks for newcomers.

Start with something simple. Sometimes solving a simple documentation task can be more effective for your onboarding process than a whole code contribution. Tackling complex tasks too soon can lead to frustration and setbacks. Engage with the project and its community, and don’t hesitate to ask for help when needed. They need you more than you need them.

6. Extra resources for newcomers

We are not the first website to provide guidelines for newcomers attempting to join OSS projects. “firsttimersonly.com” ↗ provides a quick tutorial on how to start contributing in this context. GitHub itself has a “How to contribute” discussion on their “opensource.guide” ↗ website. Steinmacher al., 2022 ↗ also provides extra guidelines for newcomers in their research paper. The authors list the following suggestions:

7. Being a women in open-source

Our goal is to empower more women to join and contribute to OSS. On our website, we provide resources to help navigate challenges, build confidence, and foster meaningful collaboration within OSS communities. To learn more, please check our following discussions: