What is the best way to contribute to open source
Tags: opensource, scala, java, jvm
Published: 2021-03-17 12:12:06

---
title: What is the best way to contribute to open source
published: true
description: 
canonical_url: https://softwaremill.com/what-is-the-best-way-to-contribute-to-open-source/
tags: opensource, scala, java, jvm
//cover_image: https://softwaremill.com/user/pages/blog/what-is-the-best-way-to-contribute-to-open-source/how-to-contribute-to-open-source.jpg?g-80f6a0cf
---

If you were to write down the growth path of a developer, you might end up with something like:

👶 Junior Developer
💻 Mid Developer
🚀 Senior Developer
🧙 Software Architect

But how does this growth actually happen? 

If we examine the true drivers, it might turn out that developers grow by **spending time writing code and documentation**, **collaborating with other developers**, using various stacks, and solving different problems.

Even though you might have many years of commercial experience in your resume, **your public GitHub profile has a huge impact on your software career**. It’s your business card in the software world. Not convinced? Check out my previous post [Why contribute to open source](https://blog.softwaremill.com/why-contribute-to-open-source-cc0b95aa82a7)? 

Contributing to open source projects might be intimidating, but it’s worth getting out of your comfort zone and getting involved. Don’t let inexperience in a given tech stack or a library, or any other difference hold you back! 

Here are just 3 steps, the best and quickest way, to become an open source contributor.
# How to contribute to open source?

## Say you'd like to get involved
Start from picking the stack and go to “the chats”. To make it easier to establish contact, oss maintainers always set up a dedicated slack or gitter channel or a discord server, or more and more popular, Matrix. Approach library maintainers there and say you'd like to get involved. 

> Here’s a list of some popular Scala and Java projects and their communication channels:
> * Zio - [discord](https://discord.gg/2ccFBr4) server
> * Cats - [gitter](https://gitter.im/typelevel/cats) channel
> * Akka - [gitter](https://gitter.im/akka/akka) channel  
> * Kafka - [Jira](https://issues.apache.org/jira/projects/KAFKA/issues/KAFKA-12323?filter=allopenissues ) tickets
> * Scala - Scala [contributors forum](https://contributors.scala-lang.org/)
> * Spark - [gitter](https://gitter.im/spark-scala/Lobby ) channel
> * OpenJDK - [census](https://openjdk.java.net/census ) 
> * Hibernate - follow this [guide](https://hibernate.org/orm/contribute/)
> * Apache Commons - everything happens on this [mailing list](https://www.apache.org/dev/#mail)
> * Micronaut - [gitter](https://gitter.im/micronautfw/) community
> * Quarkus - [GitHub](https://github.com/quarkusio/quarkus/contribute) page
> * Spring - [GitHub](https://github.com/spring-projects/spring-framework/blob/master/CONTRIBUTING.md) page

There are also developer tools that need contributions. The general rules here are the same.

> Scala Metals - [gitter chat](https://gitter.im/scalameta/metals ) 
> Zio intelliJ - #zio-intellij on the [ZIO Discord](https://discord.gg/2ccFBr4)

GitHub Docs encourage library maintainers to apply the **good first issue** label to issues in their repositories to highlight opportunities for people to contribute. When looking for something on GitHub to match your needs, search for issues and pull requests, go to isses in a repository and [narrow the results using label qualifier](https://docs.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-by-label).

Another shortcut to find your first repository to contribute to is checking the list created by [Masato Ohba](https://ohbarye.github.io/). Using his script, he puts plenty of issues waiting for beginners' contribution into [this spreadsheet](https://docs.google.com/spreadsheets/d/1-2jhSCFZUWyFsubCnGiX-xui9nA76M783Z2SOfVrEU4/edit#gid=440574128).

## Do not be afraid of the docs
Documentation and usage examples might sound boring, but are a good way to get to know the project, and contribute something useful. You’d be surprised how **many people resign from using a project as they can’t find a good, working (!) example, or a step-by-step tutorial aimed at beginners**. Working on docs will allow you to learn the very basics of the software in question. It will make it easier for you to make meaningful contributions to the code later.

> Important information for the first timers. Always start from the README.md file in the repository which contains  rules on how to use and set up the project, and (if present), CONTRIBUTING.md, which outlines how to collaborate in the project. 

## Improve the tools you already rely on
It’s much easier to **make time for things that are a part of your current work assignment**. 

If you’re using an open source software, library or framework, and you find a bug in it, open an issue. Make actual contributions and take it as an opportunity to demonstrate value, build trust, and gain skills. Even starting from a small patch, that gets merged, will build up your confidence. And finally, you'll be able to use it in your project, and ship things faster.

Majority of the projects follow a standard fork and pull model for contributions via GitHub pull requests. 

> An ideal path to meaningful contribution can look like this:
> * Find an issue
> * Let library maintainers know you are working on it
> * Build the project with your contributions
> * Write tests, docs and examples
> * Submit pull request

## What will be your next Scala open source project?
Scala 3 is just around the corner. According to the voices of Scala programmers who took part in te Scala Developers' Survey, we run at the turn of the year, there are many programmers who are quite content with their choice of libraries and frameworks. But thery also point out areas that could be improved. 

When analyzing the survey entries, we identified the projects that attract most contributors. These are **Zio and Akka.** 

This is mostly in line with the most liked libraries out there. And probably shouldn’t be surprising: both ecosystems are growing and hence there’s a lot of work to be done around them.

**Most popular Scala OSS projects**

1. Zio
2. Akka
3. Scala
4. Cats
5. http4s
6. Play
7. Spark
8. Tapir
9. Alpakka

> The results of the survey clearly show that the Scala community is engaged in OSS, also that there’s always a place for more contributors. 

When it comes to specific pain points we concluded that these general areas need improvements:
* Relational databases
* Graphics and UI libraries
* ML and data science projects
* Documentation
* Json parsing
* Security and unified observability approach

The Scala community needs you! 
Help us improve it. 
Contribute.

Want to find out more about the developers' expectations for Scala 3 and their view on the future of Scala? [Download the Scala 3 Tech Report](https://softwaremill.com/ebooks/scala-3-tech-report/?utm_source=blog&utm_medium=mkt&utm_campaign=Scala3TechReport)!