---
title: Do you want to start contributing to open source and need help figuring out where to begin?
linkTitle: Start Contributing to Open Source
---

### Introduction

Open source is more than just a way of building software - it's a philosophy that promotes collaboration, transparency, and community. By sharing code openly, developers from all over the world can contribute their skills, knowledge, and creativity to projects that are used by millions of people every day.

The open source movement has changed how we create, share, and innovate, and it continues to grow and evolve. Whether you're a seasoned programmer or just starting out, open source provides an incredible opportunity to learn new skills, work with like-minded people, and make a difference in the world.

In this document, we'll explore how to get involved in open source, what knowledge you need to contribute, and how to become part of this amazing community. So, let's dive in and discover the exciting world of open source!

### Join the Community

To contribute to open source, it's important to join the community. Most open source projects have a website or a [GitHub](https://github.com/) repository where you can find information on how to contribute.

Open-source projects often have multiple communication channels to facilitate collaboration and support. The most common channels include mailing lists, forums, chat rooms, and issue trackers. These communication channels are generally listed on the websites or the projects' repositories. These channels allow project members and contributors to communicate effectively and efficiently, ask questions, share ideas, report issues and propose solutions. When contributing to an open source project, it's important to use the appropriate communication channels and follow the community's guidelines for communication etiquette. Being an effective communicator is crucial to successful collaboration and contributing to the project's success.
Being respectful and courteous when interacting with other community members is important.

### Understand “Community” - the context of open source projects

Open-source communities are built on a foundation of collaboration, inclusivity, and diversity. Communities comprise a group of individuals with different backgrounds, experiences, and perspectives who come together to share their knowledge, skills, and passion for creating something meaningful and impactful. To join an open source community, it's important to understand what the community is and what it expects from its members.

The community is not just a group of people working on a project but rather a living and breathing entity that expects respectful and courteous behavior from its members. It's crucial to be aware of cultural differences and to embrace the genuine spirit of community-based consideration for others. This means being patient, empathetic, helpful, and striving to create an environment where everyone feels valued and supported.

At the same time, it's important to maintain a level of professional conduct to ensure that contributors don't inadvertently self-sabotage. This includes following the project's code of conduct, adhering to coding standards, and contributing well-tested and documented code (note the [CNCF Community Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md)).
It's also important to be open to feedback and criticism, and to work collaboratively with other community members to improve the project. People of all skill levels work hand-in-hand to improve their projects.

### Choose a Project

When it comes to contributing to open source, choosing the right project is crucial. A good place to start is the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/), which hosts dozens of popular open source projects in the [cloud native ecosystem](https://landscape.cncf.io/). There's a CNCF project for almost every area of technology, from container orchestration to service mesh to storage. For instance, if you're interested in containerization, you might consider contributing to [Kubernetes](https://kubernetes.io/), the de-facto standard for container orchestration. Or, if you're interested in observability and monitoring, you might consider contributing to [Prometheus](https://prometheus.io/), which provides powerful metrics collection and analysis. Other popular CNCF projects include [Envoy](https://www.envoyproxy.io/), [Fluentd](https://www.fluentd.org/), and [Jaeger](https://www.jaegertracing.io/).

When choosing a project to contribute to, it's important to consider your interests and skill level. Look for projects that align with your strengths and that you're passionate about. CNCF projects have a large and supportive community, with many resources available for contributors. It is very important to start by reading the project documentation and exploring the issue tracker. If you're new to the project, look for issues labeled as "good first issue" or "help wanted" - these are often small, well-defined tasks that are a good place to start.

### Understand the Project

Using an open source project before becoming a contributor is essential to understanding the project's functionality and architecture. If available, follow the project's tutorial or getting started documentation. Then, try it out yourself to become familiar with how the project works and its capabilities. It helps contributors identify the project's issues and challenges, allowing them to get acquainted with the codebase and its design principles. By testing the project, contributors can provide valuable feedback to the development team, which can help improve the project's quality and usability. Additionally, testing the project can help contributors identify areas where they can contribute to the project, allowing them to make more significant contributions and become more effective contributors.

### Read the Documentation

Before you start contributing to a project, it's important to read the documentation. Most projects have a README file that provides an overview of the project, how to set it up, and how to contribute. Read the documentation carefully to make sure you understand the project's goals, coding standards, and contribution guidelines.

Investing time in reading the project's mailing list threads, community forum discussions, meeting minutes, and reviewing open and closed issues and pull requests in the project repository is important. By doing so, you can better understand the project's context, goals, and challenges, and develop a sense of the community's culture and values. This knowledge can help you ask more informed and relevant questions when reaching out to the community, and increase your chances of getting a helpful and constructive response.

### A language of their own

The open source community can sometimes be overwhelming with its acronyms and technical terms. Newcomers might find it difficult to keep up with the jargon. However, there are ways to overcome this, such as taking the time to research and ask questions. Also, the Cloud Native Computing Foundation (CNCF) provides a helpful [glossary of commonly used terms](https://glossary.cncf.io/) in the cloud native landscape. By utilizing this resource and proactively in seeking information, newcomers can better understand the community and its practices. Open-source communities aim to be collaborative and inclusive, and their members are generally welcoming to those willing to learn and contribute.

### Start Small

When you're first getting started with open source, it's important to start small. Look for easy issues to fix or small features to add. This will help you get familiar with the project's codebase and build your confidence as a contributor. As you become more experienced, you can take on more challenging tasks.

### Collaborate with Others

Open source is all about collaboration. Feel free to reach out to other contributors for help or feedback. You can also collaborate with other contributors by reviewing their code, providing feedback, and testing their changes. This will help you build relationships with other contributors and improve your coding or other skills you bring to the community. Contributing to an open source project doesn't require permission. Once you've done sufficient research and clearly understand where your skills can help the community, don't hesitate to dive in and start contributing.

### Asking for help

Getting help from other contributors is a critical aspect of contributing to open source projects. Still, it's essential to know how much help is appropriate to ask for. It's okay to ask for assistance if you've genuinely tried to learn the material beforehand, such as reading the documentation or using the software. Try to limit your requests to project-specific issues and avoid seeking help for general mentoring in open source or programming languages.

While seeking guidance on pull requests can be helpful, it's essential to remember that there may be more effective approaches than simply asking someone to provide you with the exact code or wording to use. Instead, try to create your own content and seek feedback on improving your contribution. This way, you can work collaboratively with other contributors to achieve the project's objectives and build strong relationships within the community.

Remember, the goal is to help the project and maintainers, so ensure that your requests contribute to their efforts and do not increase their workload. By following these guidelines, you can build strong relationships with other contributors while improving your coding skills.

### Code Contributors

If you're a technical contributor, there are some specific tools and technologies that you should be familiar with. Here are some of the key skills you'll need to contribute to open source:

**Programming Languages**: Most open source projects are written in one or more programming languages. You'll need to be proficient in at least one language to contribute to a project. The specific language will depend on the project you choose.

**Testing**: Testing is a critical part of software development. You'll need to be familiar with testing frameworks and tools to contribute to open source. This includes both unit testing and integration testing.

### Non-Code Contributors

Even if you're not a technical contributor, there are still many ways you can contribute to open source. Here are some of the key skills you'll need:

**Documentation:** Most open source projects have documentation that needs to be written and maintained. You can contribute by writing documentation, tutorials, or blog posts.

**Design:** If you're a designer, you can contribute to open source by creating graphics, logos, or improving the website

**Translation:** Many open source projects are used by people worldwide. If fluent in multiple languages, you can contribute by translating the project's documentation or user interface.

Regardless of your skills or background, there are many ways to contribute to open source. The key is to find a project that aligns with your interests and skill level and to start small. Remember to read the documentation carefully and to collaborate with other contributors.

### Understanding Git, Pull Requests, and Issues

For both technical and non-technical contributors, it's crucial to understand Git, pull requests, and issues, even if you are not yet familiar with them. These tools are used in most open source projects to manage contributions and track changes in the code and documents.

Here's a brief overview of each:

#### Git

Git is a version control system that allows you to track changes in your code, collaborate with others, and manage different versions of your project. You'll need to be familiar with Git and tools like GitHub, GitLab, or BitBucket to contribute to open source. There are a lot of online guides available, ie. [Learn Git with Bitbucket Cloud](https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud), [Git Tutorial](https://www.w3schools.com/git/), [Set up Git](https://docs.github.com/en/get-started/quickstart/set-up-git), and [Contributing to projects - forking](https://docs.github.com/en/get-started/quickstart/contributing-to-projects).

#### Issues

Issues are used to track bugs, feature requests, and other tasks in a project. When you find a bug or want to propose a new feature, you can create an issue in the project's issue tracker. This allows you to collaborate with other contributors and track the progress of your task. Many open source projects have "Good first issue" or "Help wanted" labels attached to certain issues, which are suitable for new contributors or those looking to make their first contribution.

These issues are typically well-defined and relatively easy to implement. They can provide a great opportunity for contributors to get started with the project and learn the workflow. Look for these labels in the issue tracker and consider starting with them if you are new to the project or open source contribution in general.

#### Pull Requests

Pull requests are a way to propose changes to a project. When you submit a pull request, you ask the project maintainers to review your code or document changes and consider merging it into the main codebase. To create a pull request, you'll need to fork the project, make your changes, and then submit the pull request through the project's website or Git hosting platform.

Code reviews are essential to the software development process as they help catch potential issues before they become problems. It's important to remember that code reviews are not personal and should not be taken as criticism of the contributor. Instead, they allow contributors to learn from each other and improve their skills. Code reviews can be especially beneficial for beginner contributors as they can learn from more experienced contributors about potential issues with their code and how to improve it. Code reviews are a valuable mechanism for learning and improving code quality. Code is about working together to produce the best code or documentation.

It's important to remember that things take some time when it comes to code reviews. Asynchronous communication is the norm for code reviews, and it can take time for reviewers to provide feedback. Additionally, factors outside the review process may impact response times, such as timezone differences, country-specific holidays, and team stress related to releases or deadlines. It's not uncommon for contributors to become frustrated when they are unaware of these factors and feel that they are not being taken seriously. However, it's essential to maintain open communication and trust between contributors and reviewers, as this can help alleviate any misunderstandings and ensure that the review process remains productive and efficient.

Many online resources are available to help you learn about Git, pull requests, and issues. Look for online tutorials, documentation, and forums where you can ask questions and get help from other contributors.

#### Understanding SSH Keys and Two Factor Authentication

When it comes to contributing to open-source projects, contributors should be mindful of good security practices. Knowing about security measures such as SSH keys and two-factor authentication (2FA) is also essential. SSH keys provide a secure way to access remote servers and repositories without entering a password every time, ensuring that user authentication is secure. 2FA adds an extra layer of security by requiring a user to provide two forms of identification before accessing an account or system.  GitHub now requires 2FA on any account that submits a pull request, as reported by their recent [blog post](https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13/). By requiring contributors to use SSH keys and 2FA, open source projects can help prevent unauthorized access to sensitive data, ensuring that contributions are made securely. 

For new contributors, it's crucial to familiarize themselves with these security measures before diving in. Resources such as the GitHub documentation on [SSH keys](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account) and [2FA](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication) can provide valuable guidance on how to get started. While SSH keys are just one way to authenticate to a repository, it's not necessarily more secure than using a GitHub token, as both methods rely on how well users secure their private key or password/token. It's best to choose a method that contributors are comfortable with, such as using SSH or a token through the command-line, the website directly, or GitHub Desktop. Regardless of the method, the most crucial aspect is securely storing the token and not embedding it in a plain text file in their git repo. By setting up these security measures in advance, contributors won't encounter issues when submitting pull requests, and they can make their contributions securely and confidently.

### CNCF Resources

**[The CNCF Contributor Strategy TAG (Technical Advisory Group)](https://github.com/cncf/tag-contributor-strategy/)**  is a group of experienced technical contributors dedicated to providing guidance and support to other contributors within the CNCF ecosystem. The main aim of this TAG is to ensure that all projects within the CNCF adhere to the highest technical standards and that they are maintained and developed consistently and sustainably. This includes advising on best practices for project governance, technical architecture, security, and interoperability, among other areas.
The TAG also provides a forum for cross-project collaboration and knowledge-sharing, helping to foster a sense of community and cohesion within the CNCF ecosystem. They work closely with project maintainers, contributors, and other community members to provide guidance and support and to ensure that all projects within the CNCF can thrive and evolve collaboratively and inclusively.

For new contributors, the TAG can be a valuable resource, providing guidance on technical issues and offering advice on how to navigate the CNCF ecosystem and getting involved in various projects.

**[The CNCF Mentoring WG (Working Group)](https://github.com/cncf/mentoring)** is an initiative aimed at providing support and guidance to new contributors looking to get involved in the CNCF community. The group focuses on creating a welcoming and inclusive environment for individuals of all backgrounds and skill levels to contribute to open source projects. One of the group's main objectives is to identify and promote "good first issues," beginner-friendly tasks that can help new contributors gain confidence and familiarity with the project's codebase and development workflow. Be sure to visit the [CLOTributor](https://clotributor.dev/) website to find open issues suitable for new contributors. Additionally, the Mentoring Working Group provides resources such as documentation, tutorials, and one-on-one mentorship to help new contributors navigate the project's technical and social aspects.

**Training material:** The [Linux Foundation](https://training.linuxfoundation.org/) offers a range of free and paid training materials and certifications that can help you upskill and enhance your knowledge in various areas, including cloud computing, DevOps, and open source technologies.
These resources include online courses, certifications, and hands-on training programs that experienced instructors and industry professionals teach. By taking advantage of these resources, you can gain the skills and knowledge you need to become a valuable contributor to open source projects and communities.

### Why do open source projects look for new contributors, and why should I care to join?

Open source projects always need new contributors because they rely on the community to continue growing and improving. By joining an open source project, you can not only enhance your skills and knowledge but also contribute to something that has the potential to make a difference in the world. You can also collaborate with like-minded individuals worldwide, learn from others, and build a network that can benefit you in the future. Additionally, contributing to open source projects is a great way to give back to the community and make a positive impact.

### In conclusion

Contributing to open source is a great way to improve your skills, learn new technologies, and give back to the community. Whether you're a technical or non-technical contributor, there are many ways to get involved. Remember to start small, collaborate with other contributors, and always be respectful and courteous in your interactions with the community. Good luck on your journey!
