A 💯 Days in Open Source: Key Lessons That Will Help You Get Started 🚀
Tags: opensource, beginners, codenewbie, 100daysofoss
Published: 2023-11-20 16:47:39

October 31st marked the end of the 100 days of open source software (**OSS**) challenge by [Open Sauced](https://opensauced.pizza/). This challenge aimed to unite newcomers, dedicated contributors, and maintainers within OSS projects to foster active involvement, learn new skills, and enhance community interaction by engaging in OSS for 100 days. As a participant of this challenge, I will share three significant lessons I learned from this experience to help newcomers in getting started with OSS and making meaningful contributions.

## Open Source is Scary


![Courage Cowardly Dog in Computer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxg03zrvm5fh3zpr091d.gif)

From an outsider's perspective, getting involved in open source software can seem intimidating. This feeling can be attributed to various factors, but the most common ones I've seen and personally experienced are **fear of the unknown**, **mastering technologies**, and **receiving feedback**. Let's break down each of these challenges.

## Fear of The Unknown

It's no secret that when you first dive into a new repository, you won't know everything about it. It might cover a specific software area you are unfamiliar with, or it might introduce you to concepts you've never encountered. This fear of the unknown can be paralyzing, leading to a point where some may give up without even trying.

![Shin chan question](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n8cikfaqs11listac35f.gif)
<center>
<p>
<em>exploring a CNCF codebase be like</em>
</p>
</center>

Recognizing the dynamic nature of software is the first step in accepting the presence of inherent unknowns. The key is not to let fear hold you back. Begin by exploring the codebase in small steps, such as reading the documentation or running the project locally. If you encounter a part of the codebase that seems puzzling, remember that most OSS projects have active communities willing to provide support and help you gain a better understanding.

> **Embrace the fact that there will always be unknowns in OSS. Start small, run the project, and gradually piece together how it works. Leveraging the community is a valuable resource to accelerate your learning.**

## Mastery of Technologies

In addition to dealing with the unknown, effective participation in OSS often requires proficiency in certain technologies. Given the collaborative nature of OSS, a distributed version control system like [Git](https://en.wikipedia.org/wiki/Git) is an essential tool for tracking file changes. Thus, it is important to have Git in your arsenal, since it is highly likely that a project you engage with in the OSS community will leverage Git for version control. If you're new to Git or want to brush up on the basics for OSS contributions, I highly recommend the [Intro to Open Source course by Open Sauced](https://intro.opensauced.pizza/#/). It covers everything from the history of OSS to Git usage and types of contributions that will help you get started.

Once you've used Git, you'll face the challenge of learning specific technologies, usually a programming language. When starting your journey in OSS, it's beneficial to choose repositories aligned with your technical abilities. For example, if you are proficient in [Python](https://www.w3schools.com/python/python_intro.asp), you should aim to select repositories whose codebase is mostly written in Python. Additionally, if you know multiple languages, you could help with the translations of the project's documentation to those languages. 

Familiarity with the technologies used in a project can expedite your understanding of the codebase, making it easier to contribute without simultaneously learning a new technology. However, there's also value in stepping out of your comfort zone and tackling repositories that introduce you to unfamiliar technologies. In such cases, opt for smaller codebases that are more digestible. Lack of complete mastery of a particular technology should not deter you from contributing to OSS.

> **Pick a repository with technologies you already know; this will help you to bridge gaps of knowledge faster, and avoid learning while exploring. If you pick a technology that you don't know and want to challenge yourself, start with small repositories as this will give you enough time to learn outside of exploration.**

## Receiving Feedback

Last but certainly not least is the challenge of receiving feedback. If it's not a lack of skills or fear of the unknown that hinders contributors, what could it be? OSS is inherently collaborative, and effective communication is crucial. After you tackle an issue and submit a pull request, you'll likely receive feedback from the maintainer and reviewers. While some contributors may interpret feedback as a sign of their contributions being inadequate, this is often not the case.

![Chansey pokemon reading](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eksp137cc95h53wgukkl.gif)
<center>
<p>
<em>nit: racecar should be racecar</em>
</p>
</center>

OSS projects adhere to certain standards, and it's the maintainer's responsibility to ensure that contributions benefit the project, its users, and future contributors. Receiving feedback provides you with an opportunity to improve your coding skills and communication. In some instances, however, you may encounter less-friendly maintainers, and it's essential to recognize when it is better to move on.

> **Treat feedback as an opportunity to enhance your technical skills and engage in effective communication with the maintainer to address any concerns. If you don't feel comfortable in a particular community, don't hesitate to explore other options.**

## Defining Open Source Goals

The question of why you should participate in OSS remains, and your motivations can vary widely. That's why it is crucial to [set goals for your OSS contributions](https://dev.to/opensauced/setting-goals-for-your-open-source-contributions-349b). Your objectives may include acquiring new skills, getting involved in exciting projects, seeking mentorship, or connecting with like-minded individuals who share your passion. You might even be contemplating becoming a maintainer to gain support for your own projects.

Regardless of your specific goals, I firmly believe that engaging in Open Source can bring invaluable benefits to your skills, and I hope that this article has provided valuable insights to help you start your journey into OSS.

![Matsuoka Shuzo Never Give Up](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1mefae8lq84cjjrzyfao.gif)

## Resources:

- Get started with OSS here: [**Open Sauced Intro to OSS Course**](https://intro.opensauced.pizza/#/)
- Looking for your first contribution? check these [**repositories for beginners**](https://app.opensauced.pizza/pages/BekahHW/655/dashboard?range=30)
- [**Open Sauced**](https://opensauced.pizza/)
- [**Hacktoberfest**](https://hacktoberfest.com/participation/)

### Links:

- Connect with me on Github: [**github.com/k1nho**](github.com/k1nho)
- Open Source: [**opensauced/k1nho**](https://app.opensauced.pizza/user/k1nho?tab=highlights)
- Connect with me on X: [**@Kinho_nth**](https://twitter.com/Kinho_nth)