In this document, you can find a list of ideas that are proposed by the Scala Organisation for Google Summer of Code 2024.
If you are interested in becoming a contributor on any idea, please reach out to your potential mentor using their email address specified with the project. You can also reach Scala Center at scala.center(at)epfl.ch.
If you would like to be a mentor and propose your own idea, please submit a PR editing this file (e.g. see 2023's projects), adding your project to the list, following the format of other projects below.
You can read the full rules of the program at the following links: Rules, Terms and Conditions, Help.
And here are the requirements for the potential contributor's proposal: Writing a proposal.
However, here are some rules that we'd like to emphacise since they are not visible enough at the above links:
- The program is geared towards beginners first and foremost. It is intended to be a learning experience for people at the very beginning of their careers. It is also intended to give an opportunity to people who would otherwise not have one. It is NOT a freelance job. Therefore, when making an acceptance decision on a potential contributor, we will prioritize disadvantaged backgrounds and contributors at the very beginning of their careers.
- IMPORTANT - EPFL Students: Please note that, according to GSoC rules, there are restrictions on accepting students from an organization's host university. For Scala Center, the host university is EPFL. We can only accept up to 1 student from EPFL, so please take it into account if you're studying at EPFL and consider applying.
Title | Doodle Canvas |
---|---|
Link to Project | https://github.com/creativescala/doodle/ |
Brief Description | Doodle is a library for 2D graphics. It has good support for producing structured images, but sometimes you just want to blast pixels onto a screen. This project aims to add support for that. |
Expected Outcome | A Doodle algebra or algebras that support writing pixels, and probably lines, circles, and other shapes, directly onto the screen. |
Prerequisites | Basic Scala knowledge |
Ideal Prerequisites | Some understanding on tagless final style. |
Expected Difficulty | Easy – straightforward task, path for execution visible right now, very little uncertainty |
Expected Time Commitment | Medium project – 175 hours |
Mentor | Noel Welsh (GitHub: @noelwelsh, Email: [email protected]) |
Co-mentor |
Title | Doodle Bitmap Convolutions |
---|---|
Link to Project | creativescala/doodle#94 |
Brief Description | Add support for bitmap convolutions to Doodle. The link has more, including a Github project laying out the steps. |
Expected Outcome | Working code and documentation. |
Prerequisites | Some Scala knowledge. |
Ideal Prerequisites | Basic knowledge of bitmap convolutions, some understanding of tagless final. |
Expected Difficulty | Easy – straightforward task, path for execution visible right now, very little uncertainty |
Expected Time Commitment | Medium project – 175 hours |
Mentor | Noel Welsh (GitHub: @noelwelsh, Email: [email protected]) |
Co-mentor |
Title | Generate Scala Documentation website with Scaladoc |
---|---|
Link to Project | https://github.com/scala/docs.scala-lang/ |
Brief Description | Scaladoc for Scala 3 has a modern UI and is developed to render static websites. We would like to use it to replace Jekyll in rendering the documentation website. |
Expected Outcome | We would like a MVP of the website, generated via Scaladoc. We'd need to add support for some Jekyll features such as include , and our custom tabs liquid extension. |
Prerequisites | some Scala knowledge |
Ideal Prerequisites | familiarity with Jekyll, fundamentals of CSS and JS |
Expected Difficulty | Medium - We mostly expect pure engineering to bring in the needed Jeykll features, which can be tested on the present documentation sources. As a stretch goal the participant may want to work on styling the pages, create a plug-in system for Scaladoc, or work on incremental documentation builds. |
Expected Time Commitment | Large project – 350 hours |
Mentor | Jamie Thompson (GitHub: @bishabosha, Email: [email protected]) |
Co-mentor |
Title | Support for extensible effect stacks in dotty-cps-async |
---|---|
Link to Project | https://github.com/rssh/dotty-cps-async |
Brief Description | Add support for effect stacks into dotty-cps-async. |
Expected Outcome | Project module with working code and documentation for users and effect stack providers. |
Prerequisites | Some Scala knowledge |
Ideal Prerequisites | Basic knowledge of functional programming and understanding of effect stacks |
Expected Difficulty | Medium – path for execution visible right now, but possible high variations of efforts depend of unknown technical details |
Expected Time Commitment | Medium project – 175 hours |
Mentor | Ruslan Shevchenko (GitHub: @rssh, Email: [email protected]) |
Co-mentor |
Title | Scripting protocol for Scala CLI |
---|---|
Link to Project | https://github.com/VirtusLab/scala-cli |
Brief Description | Extend Scala CLI with a scripting protocol that can be used to e.g. create source generators. (building on Bloop's built-in support) |
Expected Outcome | You can build a Scala CLI project that will run a source generator (e.g. Protobuf or Smithy). Configuration of script is handled via directives or CLI args, script itself is a self contained scala cli project executed with main method. |
Prerequisites | Some familiarity with Scala, understanding of serialization |
Ideal Prerequisites | Familiarity with Bloop and Scala-CLI, passion for developer tooling |
Expected Difficulty | Medium - protocol needs to expose metadata that is compatible with Scala CLI, and to be extensible in the future (core components are already done, such as Bloop integration) |
Expected Time Commitment | Medium project – 175 hours |
Mentor | Jamie Thompson (GitHub: @bishabosha, Email: [email protected]) |
Co-mentor | Kannupriya Kalra (LinkedIn) |
Title | New artifact page in Scaladex |
---|---|
Link to Project | https://github.com/scalacenter/scaladex |
Brief Description | Add a new page in Scaladex to browse through the list of all artifacts of a project. See full description in scalacenter/scaladex#1337 |
Expected Outcome | We can deploy the new version of Scaladex where it is possible to browse through the artifacts of a project by their names. |
Prerequisites | Some familiarity with Scala and SQL. Basic knowledge about HTML and CSS. |
Ideal Prerequisites | Familiarity with Scala's Future , akka-http, doobie |
Expected Difficulty | Medium - most of the implementation can be adapted from the existing code |
Expected Time Commitment | Medium project – 175 hours |
Spoken Language | French and English |
Mentor | Adrien Piquerez (GitHub: @adpi2, Email: [email protected]) |
Co-mentor | Kannupriya Kalra (LinkedIn) |
Title | Information from POM files in Scaladex |
---|---|
Link to Project | https://github.com/scalacenter/scaladex |
Brief Description | Extract information from POM files to display them in the artifact page of Scaladex. See full description in scalacenter/scaladex#979 |
Expected Outcome | We can deploy the new version of Scaladex where it is possible to browse through the artifacts of a project by their names. |
Prerequisites | Some familiarity with Scala and SQL. Basic knowledge about HTML and CSS. |
Ideal Prerequisites | Familiarity with Scala's Future , akka-http, doobie |
Expected Difficulty | Medium - most of the implementation can be adapted from the existing code |
Expected Time Commitment | Medium project – 175 hours |
Spoken Language | French and English |
Mentor | Adrien Piquerez (GitHub: @adpi2, Email: [email protected]) |
Co-mentor | Kannupriya Kalra (LinkedIn) |
Title | Add Scala 3 support to ExplicitResultTypes |
---|---|
Link to Project | scalacenter/scalafix#1583 |
Brief Description | At the moment, ExplicitResultTypes can only run against source files compiled with Scala 2, as its implementation relies on the Scala 2 presentation compiler. A 2022 GSoC added Scala 3 cross-compilation for all Scalafix modules, so we can now add and publish an implementation supporting source files compiled with Scala 3, leveraging the stable Scala 3 presentation compiler API, available in Scala 3.3.3 and later. |
Expected Outcome | ExplicitResultTypes can run against source files compiled with Scala 3 (validated by an extensive Scala 3 corpus / test suite & smoke-runs on a couple of major Scala 3 projects). As a side effect, ability for rule authors to write Scalafix rules in Scala 3. As a bonus, potential ability to run, against source files compiled with Scala 3, ExplicitResultTypes along with community rules written in Scala 2 and published with TASTy. |
Prerequisites | Some knowledge of Scala internals |
Ideal Prerequisites | Experience with SemanticDB and the Scala 2 or 3 presentation compiler |
Expected Difficulty | Medium - the stable presentation compiler API was added as an effort to upstream the mtags module from the Metals project, which provides a similar feature, so we do not foresee any contribution to the compiler, only integration work |
Expected Time Commitment | Medium project – 175 hours |
Spoken Language | French or English |
Mentor | Brice Jaglin (GitHub: @bjaglin, Email: [email protected]) |
Co-mentor |
Title | Sounds of Scala Sampler |
---|---|
Link to Project | Sounds of Scala |
Brief Description | Build a basic sampler, extending the current codebase as necessary to support this functionality. |
Expected Outcome | The minimum functionality to be able to load samples (e.g from FreeSound or other source) and play them back. There are unlimited possibilities for extensions. The most basic features are pitch shifting, looping, and effects such as envelopes, reverb, and distortion. |
Prerequisites | Some basic knowledge of digital music and Scala. |
Ideal Prerequisites | Some knowledge of Web Audio would also be helpful. |
Expected Difficulty | Medium. The basic project is quite simple but extensions have increasing complexity. |
Expected Time Commitment | Medium project – 175 hours |
Spoken Language | English |
Mentor | Noel Welsh (GitHub: @noelwelsh, Email: [email protected]) |
Co-mentor | Paul Matthews (Github: @pauliamgiant) |
Title | Sounds of Scala Audio Graph |
---|---|
Link to Project | Sounds of Scala |
Brief Description | Build an audio graph library in Scala, that compiles to Web Audio. |
Expected Outcome | Users can specify an audio graph (consisting of sound sources, transformations, and sink) and run it in the browser using Web Audio. Extensions would allow interactivity, such as controlling sounds from keyboard and mouse events, and changing the graph while it is running. |
Prerequisites | Some basic knowledge of digital music and Scala. |
Ideal Prerequisites | Some knowledge of Web Audio would also be helpful. |
Expected Difficulty | Medium. The basic project is quite simple but extensions have increasing complexity. |
Expected Time Commitment | Medium project – 175 hours |
Spoken Language | English |
Mentor | Noel Welsh (GitHub: @noelwelsh, Email: [email protected]) |
Co-mentor | Paul Matthews (Github: @pauliamgiant) |
Title | Tagless-final embedding of jq |
---|---|
Link to Project | JqScala |
Brief Description | The project aims at embedding the jq language in Scala, as well as implementing an interpreter over the fs2 streaming library. |
Expected Outcome | The project has just been launched, so currently there is only a blueprint with the implementation of a handful keywords and combinators from jq . The goal of the student is to work towards completion of the implementation with the addition of new jq filters. |
Prerequisites | Basic knowledge of functional programming in Scala: algebraic data types, higher-order functions and type-classes. Basic knowledge of fs2 or other streaming library of the Scala ecosystem (e.g. Akka Streams, ZIO Streams, etc.). |
Ideal Prerequisites | Intermediate knowledge of functional programming: DSL embedding techniques and tagless-final, in particular. |
Expected Difficulty | Medium. Applicants will receive guidance to understand the architecture of the embedding and the fs2 implementation. The difficulty will largely depend on the complexity of the jq filters chosen for development. |
Expected Time Commitment | Medium project – 175 hours |
Spoken Language | English |
Mentor | Juan Manuel Serrano (GitHub: @jserranohidalgo, Email: [[email protected]]) |
Co-mentor | Zainab Ali (Github: @zainab-ali) |
For project ideas relating to the Typelevel ecosystem in the categories of AI/ML, serverless, data streaming, observability, and systems programming, please visit https://typelevel.org/gsoc/ideas/.