Welcome to the guide on contributing to all parts of Scala’s open-source ecosystem!
Newcomers’ FAQ
If you are reading this page, we welcome you, regardless of your background, to begin contributing to Scala’s open-source ecosystem. We have answered some common questions for you below:
Who can contribute?
Open source is for everyone! If you are reading this you are already a contributor...
Why should I contribute?
Giving back to the community has many benefits...
How can I contribute?
From friendly documentation to coding a bug-fix, there is lots to do...
Where should I contribute?
If you are already using OSS, or are curious about projects, you can begin right away...
Ways to start today
Join the nearest open source spree
The Scala Center hosts open source sprees, colocated with other Scala events. In the spree, regular project maintainers will mentor you to create your first contribution to the project.
Scala open source sprees
Learn about the next upcoming community spree
Upcoming conferences
See upcoming Scala conferences where you can meet open source maintainers.
So you want to improve the Scala 3 compiler…
The Scala 3 compiler is an open source project. If you are curious about contributing but don’t know how to begin, the Scala Center runs the Scala Compiler Academy project to onboard and educate new people to the project. You can join the regular Issue Spree, watch in-depth videos, and read the contributing guide:
Join the Compiler Issue Spree
A tri-weekly event where you can get mentored on the compiler. Register for participation here.
Compiler Academy videos
In-depth tours of the Scala 3 compiler's internals, aimed to help you get started.
Scala 3 contributing guide
Guide to the Scala 3 Compiler and fixing an issue
Which areas are perfect for newcomers?
- Adding new linting options, which help enforce cleaner code.
- Improving the clarity of error messages, so that the user understands better what went wrong.
- Add IDE quick-fix actions to error messages, e.g. PR scala/scala3#18314.
So you want to write a library…
Read these guides if you are a maintainer of a library, or are thinking of starting a new project:
Library Authors Guide
Lists all the tools that library authors should setup to publish and document their libraries.
Make Projects more Inclusive
How you can write code and documentation that welcomes all
Create a Welcoming Community
Our code of conduct is practical agreement for a healthy community
Binary Compatability Guide
Evolve your library over time, giving users the confidence to upgrade safely.
Want to improve Scala itself?
The Scala programming language is an open source project with a very diverse community, where people from all over the world contribute their work, with everyone benefiting from friendly help and advice, and kindly helping others in return.
Read on to learn how to join the Scala community and help everyone make things better.
Contributing to the Scala project
What Can I Do? That depends on what you want to contribute. Below are some getting started resources for different contribution domains. Please read all the documentation and follow all the links from the topic pages below before attempting to contribute, as many of the questions you have will already be answered.
Reporting bugs
See our bug reporting guide to learn how to efficiently report a bug.
Contribute
Coordination of contribution efforts takes place on Scala Contributors.
Documentation
Library API docs, new guides on docs.scala-lang.org, and help with scala-lang.org.
Bug fixes
Issues with the tools, core libraries and compiler. Also, you can help us by reporting bugs.
Code Reviews
Review pull requests against scala/scala, scala/scala3, scala/scala-lang, scala/docs.scala-lang, and others.
Core Libraries
Update and expand the capabilities of the core (and associated) Scala libraries.
IDE and Build Tools
Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects.
Compiler/Language
Larger language features and compiler enhancements including language specification and SIPs.
Guidelines
When contributing, please follow:
Community tickets
All issues can be found in the Scala bug tracker, or the Scala 3 issue tracker. Most issues are labeled to make it easier to find issues you are interested in.
Tools and libraries
The Scala ecosystem includes a great many diverse open-source projects with their own maintainers and community of contributors. Helping out one of these projects is another way to help Scala. Consider lending on a hand on a project you’re already using. Or, to find out about other projects, see the Libraries and Tools section on our Community page.
Scala community build
The Scala community build enables the Scala compiler team to build and test a corpus of Scala open source projects against development versions of the Scala compiler and standard library in order to discover regressions prior to releases. The build uses Lightbend’s dbuild tool, which leverages sbt.
If you’re the maintainer – or just an interested user! – of an open-source Scala library or tool, please visit the community build documentation for guidelines on what projects are suitable for the community build and how projects can be added.
Your questions, answered
Who can contribute to open source?
- Everyone: No matter your skills or background, non-technical or otherwise, there is always some way you can contribute to a project.
- Community organisers: Communities often form around open source projects, perhaps you would like to help grow a community.
- Scala learners: If you are at the start of your Scala journey, once you have a basic understanding of everyday Scala programming, becoming familiar with open source code will show you new techniques, helping you to improve your expertise.
- Got a cool idea? Perhaps you have gained confidence in your skills and are looking to give back to the community, start a new project that fills that perfect niche, or maybe is the life-changing tool everyone never knew they needed.
Why should I contribute to open source?
- The world is built on OSS: Open Source Software (OSS) libraries are the flesh on top of the bone structure of the core language itself. They power vast majority of the commercial and non-commercial projects out there alike.
- Become more visible: Contributing is a great way to strengthen your CV. It’s also good from the community standpoint: if you do it consistently, with time, you get to know people, and people get to know you. Such a networking can lead to all sorts of opportunities.
- Learn by doing something practical: Contributing to open source libraries is a great way to learn Scala. A standard practice in open source software is code review – which means you are going to get expert feedback about your code. Learning together with feedback from competent people is much faster than making all the mistakes and figuring them out alone.
- Have fun and help out: Finally, by contributing you improve the projects you are using yourself. Being a part of a maintainer team can be a source of personal satisfaction, and working on an innovative library can be a lot of fun.
The above benefits are something good to achieve regardless of your level of experience.
How can I contribute to open source?
- Documentation: Often it is outdated, incomplete, or with mistakes. If you see a way to improve the documentation for a project you are using, you should consider if the project is accepting contributions, in which case you can submit a pull request to include your changes.
- Building community: All projects have users, and users come together to form communities. Managing and growing communities takes coordination and effort.
- Issue minimization: Many of the reported issues found on a project’s issue tracker are hard to reproduce and the reproduction involves a lot of code. However, it is very frequently the case that only a tiny fraction of the reported setup and code is necessary to reproduce the issue. More reproduction code means more work for the maintainer to fix an issue. You can help them considerably by investigating already reported issues in an attempt to make their reproduction as small as possible.
- Issue reproduction: Some reported issues lack reproduction instructions at all! If a maintainer can’t reproduce it, they won’t be able to fix it. Pinning down exact conditions that make an issue manifest is another way to contribute.
- Fixing a bug: If you are comfortable with reproducing an issue, perhaps you would like to trace its origin in code, and even try to build a solution that prevents the issue from occurring.
- Adding a feature: Sometimes projects maintain lists of planned or requested features, and you could assist in bringing those ideas to reality. Although please beware - you should only do this if the core maintainers have already approved the idea for the feature, they are not obligated to accept your additions!
- Feel free to ask for help: While implementing or fixing the feature, it is important to ask for help early when you feel stuck. Even if your code doesn’t work, don’t hesitate to submit a pull request while stating clearly that you need help. More information about the guidelines of good contribution you can find in the talk by Seth Tisue on how to be a good contributor.
- Open-source your own project: Do you have a pet project you are working on? Is there anything you’re working on at work parts of which are generic enough that you can share them online? Open-sourcing your work is a way to solve a problem for other programmers who may also have it. If you are interested in going open-source, the Library Author’s Guide is an excellent resource on how to get started.
How do I choose where to contribute?
- Ask yourself, what am I using? The best project to contribute to is the one that you are using yourself. Take an inventory of your work and hobby projects: what OSS libraries do they use? Have you ever encountered bugs in them? Or have you ever wanted a certain feature implemented? Pick a bug and a feature and commit to fixing or implementing it. Clone the project you are trying to improve, figure out how the tests are written and run there. Write a test for your feature or bug.
- Try out an awesome library: Scaladex is a great place to find new libraries. If you are passionate about contributing but don’t see any attractive opportunities to contribute to projects you are already using, try learning a new Scala library, push it to its limits and see where it can be improved. For best results, spend a lot of time with the library to get a feel of what’s important and what can improve.
- Lookout for announcements: You may want to keep an eye on the Scala Center LinkedIn and Twitter to stay up-to-date with the possible contribution opportunities. For example, every year, the Scala Center participates in the Google Summer of Code program where you are paid to work on open source Scala projects over the course of summer.