You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In this document, you can find a list of ideas that are proposed by the Scala Organisation for Google Summer of Code 2024.
Application
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.
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.
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
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.
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)
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.
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
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.
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.
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.
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/.